AUD virtual accounts are live. Collect from Australian bank transfers, settle in USDC.See how →
locals
Products
Virtual accounts Payouts Cards
Platform
Coverage Developers Company Talk to us
Products/Payouts
Early access26 currencies, five regions

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.

Price locked up front KYC and KYB built in Signed webhooks
app.locals.money/transfers/trf_4b7q

Payout to Lantern Trading

pa_5c2e · local bank •••• 5678 · Manila
Completed
  1. 01Quote
  2. 02Fund
  3. 03Deliver
You send3,200.00
USDC
1 USDC = 57.00 PHP
They receive182,400.00
PHP
0:42
Price lockedquo_7d2e · example rate
Accepted
Send exactly3,200.00 USDC
To this one-time address · Polygon0x7a3f…91c2
Fund before09:15 UTC
3,200.00 USDC received
  • Quote acceptedtrf_4b7q · pending
    quo_7d2e
  • Funds receivedtx 0x5e0c…a7d4
    3,200.00 USDC
  • Processingtransfer.processing
  • Delivered to local banktransfer.completed
    ₱182,400.00
transfer.completed200 OK
+₱182,400.00Incoming transfer · Harbour & Co
Coverage

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 .

PhilippinesPHP · to a local bank account
Early access
1 USDC = 57.00 PHP
They receive182,400.00
PHP
Quotequo_7d2e · 0:42
Fund withUSDC · Polygon
Delivered toLocal bank · Philippines
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.

What you get

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.

Status on every stepProcessing, completed or failed, by webhook. Or fetch the transfer whenever you need it.
Same customerThe verified customer behind your accounts is the one behind your payouts.
Five regionsAsia-Pacific, the Middle East, Europe, the Americas and Africa.
Status model

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
Webhook eventsyou.example/hooks
    • 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.
    Developers

    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.
    Explore the API →
    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}
    POST /v1/transfers · sandbox201 Created · trf_4b7q
    Payroll and marketplaces

    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.
    FAQ

    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.