Getting started
Keys, environments and your first quote.
What you get
SmartRemit is remittance infrastructure for licensed money transmitters. Your customers chat with the SmartRemit WhatsApp assistant, and you integrate through the Partner API, signed settlement instructions and signed status callbacks. SmartRemit never holds funds: you, the licensed partner, move the money.
Where SmartRemit is today
SmartRemit is a working demonstration of production-grade remittance infrastructure. The AI conversation, live exchange-rate quoting, the signed instruction-and-callback loop, durable processing, dashboards and WhatsApp notifications are real. Actual fund movement, the production identity-verification vendor, a commercial sanctions feed and a live payout rail are simulated today: the reference rail runs the exact signed loop a production rail would.
Compliance screening (sanctions) runs on every transfer and cannot be switched off, in every mode; a watchlist hit returns 422. Today it runs against a built-in reference rule set, not yet a live commercial AML feed.
Keys and environments
Every request carries your API key as a bearer token:
Authorization: Bearer sr_test_…
- A test key starts
sr_test_…and only ever creates and sees sandbox transactions. See Sandbox. - A live key starts
sr_live_…. Live keys are issued at the end of the go-live checklist. - The mode comes from the key itself. The whole key, prefix included, is what we verify, so editing the prefix only makes the key invalid (
401). - A key is shown once, when it is issued on your dashboard's partner page. It does not expire. Keep it on your server, never in a browser or an app.
- To rotate a key, issue a new one, move your traffic to it, then revoke the old one.
Base URL
https://smartremit.ai/api/partner/v1
All requests and responses are JSON. Errors are JSON too; see Errors.
Endpoints and scopes
Each endpoint needs one scope. A key is issued with every scope its mode allows.
| Endpoint | Scope | Test key |
|---|---|---|
GET /corridors | corridors:read | Yes |
POST /quote | quote | Yes |
POST /beneficiaries/validate | beneficiaries:validate | Yes |
POST /beneficiaries | beneficiaries:write | No |
POST /transactions | transactions:write | Yes (sandbox only) |
GET /transactions | transactions:read | Yes (sandbox only) |
GET /transactions/{id} | transactions:read | Yes (sandbox only) |
POST /transactions/{id}/confirm | transactions:write | Yes (sandbox only) |
PUT /rates | rates:write | No |
GET /rates | rates:read | No |
GET /settlements | settlements:read | No |
A request outside the key's scopes gets 403. The API reference in these docs lists every field and status code for each endpoint.
Your first calls
Start by listing the corridors your account can send on:
curl https://smartremit.ai/api/partner/v1/corridors \
-H "Authorization: Bearer $KEY"
Then price a transfer. Nothing is stored by a quote:
curl -X POST https://smartremit.ai/api/partner/v1/quote \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{ "amount_source": 200, "source_currency": "USD", "destination_country": "IN" }'
The response carries the fee, the total charge, the exchange rate and the amount the recipient receives. A 503 means live exchange rates are briefly unavailable; nothing was stored, so retry later.
Creating a transaction
beneficiary.nameandsender.nameare 1 to 80 characters, with no brackets ([ ] { } < >) and no control or line-break characters.beneficiary.payout_methodisbank,upiorusdc(defaultbank). An inlinepayout_destinationis at most 64 printable characters. A masked display value, such as****1234oraccount on file, is refused with422.destination_countryis optional and defaults toIN. An unsupported value is refused with400; it is never changed to India.- Each of these is refused before the
Idempotency-Keyis bound, so a corrected retry with the same key succeeds. - Transactions created through the API are never added to the customer's saved recipients in chat.
Next steps
- Create a sandbox transaction with a test key: Sandbox.
- Build your settlement endpoint and status callbacks: Webhooks.
- Retry safely: Idempotency.
- Work through the go-live checklist.