Verified before it moves
KYC and KYB happen before any account opens. Reuse the checks you already run.
Give every customer local bank details, pay out in their currency and issue cards they can spend anywhere. One API, settled in USDC.
Locals gives platforms local bank details, local payouts and cards in the markets their customers live in, with verification built in, one status model across every rail and settlement in USDC.
KYC and KYB happen before any account opens. Reuse the checks you already run.
Customers pay the way they always do, from their own bank, in their own currency.
Every deposit converts at a locked rate and lands in your wallet, onchain and traceable.
The same states and the same webhooks in every market. Build the flow once.
Accounts, payouts and cards on the same customer, the same keys and one agreement.
Start with the flow your customers need today. Add the others on the same customer, the same verification and the same API keys.
They pay by ordinary bank transfer from their own bank. You receive USDC, matched to the right customer.
Explore accounts → PayoutsSend USDC, deliver local currency. The price is locked before you commit.
Explore payouts → CardsVirtual and physical cards under your brand.
Explore cards →The same verified customer opens accounts, receives payouts and holds cards. No second onboarding.
The same lifecycle in every market. Each step returns a status you can show your customer and a webhook you can act on.
Reuse the KYC you already hold, or send a hosted check.
POST /v1/customers
Currency in, stablecoin out. Local bank details come back.
POST /v1/routes
The customer pays from their own bank. We match and convert.
route.deposit.received
USDC lands in your wallet, or goes back out as local currency.
transfer.completed
Predictable resources, idempotent writes and one status model across every market. Test the whole flow in sandbox before you touch real money.
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": { "currency": "USDC", "chain": "polygon" } 8 }'
1const res = await fetch('https://api.locals.money/v1/routes', { 2 method: 'POST', 3 headers: { 4 Authorization: `Bearer ${process.env.LOCALS_KEY}`, 5 'Idempotency-Key': crypto.randomUUID(), 6 }, 7 body: JSON.stringify({ 8 customerId, source: { currency: 'AUD' }, destination, 9 }), 10});
1res = requests.post( 2 "https://api.locals.money/v1/routes", 3 headers={"Authorization": f"Bearer {LOCALS_KEY}", 4 "Idempotency-Key": str(uuid.uuid4())}, 5 json={"customerId": customer_id, 6 "source": {"currency": "AUD"}, 7 "destination": destination}, 8)
Collect on local rails, pay out in local currency and spend by card, all from the same balance. Only live markets are marked live. Updated .
Your customer pays from their own bank, on their local rail. The deposit is matched to them and settles to your wallet in USDC.
Explore virtual accounts → MarketsQuote the payout, fund the exact amount, and the money arrives in a local bank account. Early access across five regions.
Explore payouts → RegionsVirtual and physical cards under your brand, authorised in real time against the stablecoin balance. Eligibility depends on where the cardholder lives.
Explore cards → Use casesLocals sits behind your product. Your customers see your brand, your app and local bank details that just work.
Banking, conversion and card issuing run through licensed partners in each market. You get one contract and one integration.
KYC for individuals and KYB for businesses, before any account is opened.
Each payment is tied to a customer and a route, from bank reference to transaction hash.
Allow-listed sending accounts where the market requires it. Money from any other account is returned to the sender.
Regulated banks, payment institutions and card issuers in every market we list as live.
No. Accounts, conversion and payouts run through our licensed partners. You integrate once with Locals and keep your brand in front of your customers.
USDC today, on the chains listed for each route in the docs. EURC is planned for euro accounts. Ask us if you need another asset or chain.
It depends on the local rail the sender uses. Instant rails settle in minutes; batch rails can take up to one business day. Every step is reported by webhook.
Yes. If you already verify your users, you can create Locals customers from that verification. Otherwise, send them our hosted check and get the result by webhook.
Yes. Sandbox keys give you the full API, including simulated deposits, so you can build and test the whole flow without real money.
Tell us where your customers are. We will tell you what is live, what is next, and how fast you can launch.