Developer docs
Quickstart
Make your first call in a few minutes: create a key, read the demo transfer, then add a transfer of your own.
1. Create an API key
Sign in to uetr.ai (a free account works), open the AI and API page and create a key. Read access is enough to read transfers; choose read and write access to add them. The key is shown once, so store it in your secret manager, then make it available to your shell:
export UETR_API_KEY="paste-your-key-here"
2. Read the demo transfer
Every key can read the demo transfer, 00000000-0000-4000-8000-000000000000. Each hour (UTC) it is searching, with no bank reports, for its first 10 minutes, then gains a bank report every 10 minutes until it is credited at 50 minutes past the hour:
curl "https://uetr.ai/api/v1/transfers/00000000-0000-4000-8000-000000000000" \ -H "Authorization: Bearer $UETR_API_KEY"
The answer is the transfer as the dashboard shows it, with every bank report so far. While the demo transfer is in transit it reads:
{
"transfer": {
"id": "00000000-0000-4000-8000-000000000000",
"uetr": "00000000-0000-4000-8000-000000000000",
"label": "Demo transfer",
"view": "full",
"status": "in_transit",
"position_sentence": "Handed to the next bank or payment system; the payment transfer remains tracked. The reports do not say which bank holds the money.",
"status_code": "ACSP/G000",
"status_explanation": "Passed to the next agent or market infrastructure, with tracking continuing.",
"checks_finished": false,
"amount": {
"value": 12500,
"currency": "EUR"
},
"payment_date": "2026-10-14",
"bank_reported_amount": {
"value": 12500,
"currency": "EUR",
"payment_date": "2026-10-14"
},
"last_checked_at": "2026-10-14T09:20:00.000Z",
"monitoring_until": "2026-10-14T10:00:00.000Z",
"check_frequency_minutes": 10,
"archived": false,
"added_at": "2026-10-14T09:00:00.000Z"
},
"events": [
{
"reported_at": "2026-10-14T09:10:00.000Z",
"observed_at": "2026-10-14T09:10:00.000Z",
"status": "in_transit",
"status_code": "ACSP/G000",
"status_explanation": "Passed to the next agent or market infrastructure, with tracking continuing.",
"reporting_bank": {
"name": "Demo Sending Bank",
"country": "GB",
"bic": null
},
"bank_processing_status": null,
"extended_tracking_status": null,
"amount": {
"value": 12500,
"currency": "EUR"
},
"currency": "EUR",
"fees": [],
"payment_date": "2026-10-14",
"bank_reference": null,
"chips_ssn": null,
"details": [
{
"kind": "charge_bearer",
"code": "SHAR",
"explanation": "Shared charges (SHA)",
"event_number": null,
"bank": null
}
]
},
{
"reported_at": "2026-10-14T09:20:00.000Z",
"observed_at": "2026-10-14T09:20:00.000Z",
"status": "in_transit",
"status_code": "ACSP/G000",
"status_explanation": "Passed to the next agent or market infrastructure, with tracking continuing.",
"reporting_bank": {
"name": "Demo Correspondent Bank",
"country": "US",
"bic": null
},
"bank_processing_status": null,
"extended_tracking_status": null,
"amount": {
"value": 12500,
"currency": "EUR"
},
"currency": "EUR",
"fees": [],
"payment_date": "2026-10-14",
"bank_reference": null,
"chips_ssn": null,
"details": []
}
],
"waiting_at": null,
"free": null,
"corrections_remaining": null
}3. Add a transfer of your own
With a read and write key, add a transfer by its UETR, the 36-character reference on the payment confirmation, with the amount, currency and date it was sent:
curl -X POST "https://uetr.ai/api/v1/transfers" \
-H "Authorization: Bearer $UETR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"uetr":"eb6305c9-1f7f-49de-aed0-16487c27b42d","amount":{"value":1500.5,"currency":"USD"},"payment_date":"2026-10-01"}'The transfer starts while the banks are asked and is then checked automatically, as your plan checks transfers added on the website. Read it again with Get a transfer, list every transfer with List transfers, or let a webhook tell you when it changes. Adding a UETR the account already holds returns that transfer.
Next steps
- Authentication: access levels, rotating and revoking keys.
- Webhooks: hear about changes instead of asking.
- Errors and rate limits: what a refusal means and when to try again.
- Connect Claude, ChatGPT or another AI app: uetr.ai/mcp.