Named per customer
The account carries your customer's name, so their bank shows who they are paying.
Give each customer a named account in their own currency. They pay by normal bank transfer; we match the deposit, convert it and settle stablecoins to your wallet.
GET /v1/routes/route_3f9a/reconciliationEach route is a set of local bank details in the customer's name, tied to one currency in and one stablecoin out.
The account carries your customer's name, so their bank shows who they are paying.
One set of details for every payment. No new reference or account per invoice.
BSB and account number in Australia. ACH and wire in the United States.
Deposits convert automatically and land at the wallet address set on the route.
KYC for individuals and KYB for businesses, before any route is opened.
A new route starts as pending. You get a webhook the moment its details are ready to share.
Create the customer, open a route and share the details. Each step returns a status and a webhook you can act on.
KYC for individuals, KYB for businesses. Reuse your own checks or send a hosted link.
POST /v1/customers
Choose the currency in and the wallet out. The route starts as pending.
POST /v1/routes
Once active, show the bank details in your app. Your customer pays from their own bank.
route.activated
Each deposit is matched, converted and settled. Pull the full record for any route.
route.deposit.received
Every route belongs to one customer, so every deposit to it is matched automatically. Pull the full record for a route whenever you need it.
Where the market requires it, each account accepts deposits only from the sending account you register. In Australia, every account has one.
POST /whitelist 200
Money from any other account is returned to the sender.
Send the customer, the source currency and the destination wallet. The response carries the deposit instructions you show your customer.
1curl https://api.locals.money/v1/routes \ 2 -H "Authorization: Bearer $LOCALS_KEY" \ 3 -H "Idempotency-Key: $(uuidgen)" \ 4 -d '{ 5 "customerId": "cus_8Hq2Lm", 6 "source": { "currency": "AUD" }, 7 "destination": { 8 "currency": "USDC", 9 "chain": "polygon", 10 "address": "0x7a3f...91c2" 11 } 12 }'
1{ 2 "id": "route_3f9a", 3 "kind": "route", 4 "status": "pending", 5 "source": { "currency": "AUD" }, 6 "destination": { 7 "currency": "USDC", 8 "chain": "polygon", 9 "address": "0x7a3f...91c2" 10 }, 11 "depositInstructions": { 12 "accountName": "Harbour & Co Pty Ltd", 13 "bankName": "Partner bank AU", 14 "routingNumber": "000-000", 15 "accountNumber": "12345678" 16 } 17}
1// POST to your endpoint, signed 2{ 3 "type": "route.deposit.received", 4 "data": { 5 "routeId": "route_3f9a", 6 "customerId": "cus_8Hq2Lm", 7 "source": { "amount": 4200.00, "currency": "AUD" } 8 } 9}
AUD and USD accounts are live today. EUR, GBP and AED are next. Only live markets are marked live. Updated .
AUD, paid by local bank transfer to a BSB and account number, and USD, paid by ACH or wire. EUR over SEPA, GBP over Faster Payments and AED are coming soon.
Yes. Individuals pass KYC and businesses pass KYB before a route is opened. You can create customers from the verification you already hold, or send them a hosted verification link.
A new route activates within minutes. You get a route.activated webhook when the bank details are ready to share.
It depends on the market. In Australia each account accepts deposits from one allow-listed sending account, which you register through the API. Money from any other account is returned to the sender.
Every route belongs to one customer, so every deposit to it is matched automatically. Each one triggers a webhook, and the reconciliation endpoint returns the full record for a route.
Tell us where your customers are. We will tell you what is live, what is next, and how fast you can launch.