Send USDC.
Arrive local.
Get the price before you commit, fund the exact amount in USDC and deliver local currency to a bank account. Every step reported by webhook.
Payout to Lantern Trading
pa_5c2e · local bank •••• 5678 · Manila- 01Quote
- 02Fund
- 03Deliver
-
Quote acceptedtrf_4b7q · pendingquo_7d2e
-
Funds receivedtx 0x5e0c…a7d43,200.00 USDC
-
Processingtransfer.processing
-
Delivered to local banktransfer.completed₱182,400.00
Pick a currency. See the quote.
Payout currencies are in early access across five regions. Tell us where you pay and we will enable the corridors you need. Updated .
POST /v1/quotes { "customerId": "cus_8Hq2Lm", "source": { "currency": "USDC", "chain": "polygon" }, "destination": { "currency": "PHP", "amount": 182400.00 } }
Example amounts and rates, for illustration only. A real quote returns the live price.
Know the price. Pay the exact amount.
Every payout starts with a quote. You see what arrives before any money moves, then fund one transfer for one amount.
One status model. Every currency.
Delivery time depends on the local rail in the destination market. Every step is reported the same way, so you build the flow once.
pending
Send the exact USDC amount to the one-time address before the expiry.
POST /v1/transfers
processing
Funds received. Local currency is on its way to the recipient's bank.
transfer.processing
complete
Delivered in local currency, for the amount in the quote.
transfer.completed
failed
The payout did not complete. You hear about it the same way.
transfer.failed
-
Signed webhooksVerify every event before you update a balance or tell the recipient.
-
Fetch it any timeGET /v1/transfers returns your transfers with their current status.
-
The same flow everywhereThe same states and events in every payout currency.
Two calls to a locked payout.
Create a quote, then a quoted transfer. The response tells you exactly where to send, how much and by when.
-
No surprises on priceThe amount delivered is the one in the quote, as long as you fund before it expires.
-
Idempotency on every writeRetry safely. The same key never creates a second transfer.
-
One status modelThe same transfer events in every currency, so you build the flow once.
1# 1. Lock the price 2curl https://api.locals.money/v1/quotes \ 3 -H "Authorization: Bearer $LOCALS_KEY" \ 4 -H "Idempotency-Key: $(uuidgen)" \ 5 -d '{ 6 "customerId": "cus_8Hq2Lm", 7 "source": { "currency": "USDC", "chain": "polygon" }, 8 "destination": { "currency": "PHP", "amount": 182400.00 } 9 }' 10 11# 2. Accept it 12curl https://api.locals.money/v1/transfers \ 13 -H "Authorization: Bearer $LOCALS_KEY" \ 14 -H "Idempotency-Key: $(uuidgen)" \ 15 -d '{ 16 "kind": "quoted", 17 "quoteId": "quo_7d2e", 18 "payoutAccountId": "pa_5c2e" 19 }'
1{ 2 "id": "trf_4b7q", 3 "kind": "quoted", 4 "status": "pending", 5 "quoteId": "quo_7d2e", 6 "source": { "amount": 3200.00, "currency": "USDC" }, 7 "destination": { "amount": 182400.00, "currency": "PHP" }, 8 "depositInstructions": { 9 "chain": "polygon", 10 "address": "0x7a3f...91c2", 11 "amount": 3200.00, 12 "currency": "USDC", 13 "expiresAt": "2026-10-21T09:15:00Z" 14 } 15}
1// POST to your endpoint, signed 2{ 3 "type": "transfer.completed", 4 "data": { 5 "id": "trf_4b7q", 6 "kind": "quoted", 7 "source": { "amount": 3200.00, "currency": "USDC" }, 8 "destination": { "amount": 182400.00, "currency": "PHP" } 9 } 10}
Pay many people. Each in their own currency.
Pay contractors, sellers or suppliers in their local currency, each payout quoted up front and tracked on its own.
-
A quote per payoutEvery recipient gets a locked price before you fund.
-
A webhook per stepKeep each recipient informed as their payout moves.
-
Verified onceKYC for individuals, KYB for businesses. Reuse your own checks or send a hosted link.
Questions, answered.
Which currencies can I pay out in?
Around 26 local currencies across Asia-Pacific, the Middle East, Europe, the Americas and Africa, all in early access. Talk to us and we will confirm the ones you need.
How is the price set?
You request a quote for a currency and an amount. The rate and the amount delivered are locked for a short window, and the transfer you create from it uses that price.
How long does a payout take to arrive?
It depends on the local rail in the destination market. You get a webhook when the transfer is processing and when it completes, so you can keep the recipient informed.
What if the quote expires before I fund it?
Send only the exact amount to the one-time address, before the expiry shown in the deposit instructions. If the window passes, request a new quote and create a new transfer.
What do I need before the first payout?
A verified customer: KYC for individuals, KYB for businesses. Reuse the verification you already hold, or send them a hosted verification link.
Go local in every market you serve.
Tell us where your customers are. We will tell you what is live, what is next, and how fast you can launch.