Remittance operators
For licensed MTOs (money transfer operators) terminating cross-border remittances into Djibouti or Ethiopia. Two modes: origination (you collect abroad, we terminate) and termination-as-a-service (you instruct, we terminate).
Onboarding required
sk_partner_… key + a per-corridor fee schedule + KYC threshold matrix.Endpoints
/v1/remittance/quotesLock an FX quote for a specific corridor + amount. Holds rate for 60 seconds.
/v1/remittance/ordersOriginate a remittance against a quote, or directly with partner_reference (TaaS mode).
/v1/remittance/ordersList your orders (filter by status, corridor, partner_reference).
/v1/remittance/orders/{id}Retrieve a specific order.
/v1/remittance/orders/{id}/cancelCancel an order before termination. Funds released to your funding account.
/v1/remittance/corridorsList supported corridors (source country → destination country, with caps + fee schedule).
/v1/remittance/statementsPer-period CSV statement (camt.053-style) of your funding + termination activity.
Origination flow
- 1
Lock an FX quote
POST /v1/remittance/quotes with source + destination currencies and a source amount. Rate locks for 60s; you get a quote_id. - 2
Collect abroad
Your customer pays you the source amount in your own UI. KYC is your responsibility (you're the licensed party). - 3
Originate order
POST /v1/remittance/orders with the quote_id + beneficiary details (msisdn, account, or agent). Funds debit your prefunded MerasPay balance. - 4
Termination
We route to the right local rail — Waafi/SabaPay/D-Money for wallets, CAC/EAB for bank accounts, agent network for cash pickup. - 5
Webhook
remittance.order.succeeded fires when the beneficiary receives funds. Confirmation message back to your customer is your responsibility.
Lock quote
| Name | Type | Description |
|---|---|---|
source_currencyrequired | ISO 4217 | "USD", "EUR", "GBP". |
source_amount_minorrequired | integer | Minor units in source currency. |
destination_currencyrequired | ISO 4217 | "DJF" or "ETB". |
destination_countryrequired | ISO 3166 | "DJ" or "ET". |
corridor | string | Optional alias — e.g. "US→DJ"; if set we apply your corridor-specific fee schedule. |
curl -X POST https://api.merashub.com/v1/remittance/quotes \
-H "Authorization: Bearer sk_partner_..." \
-d '{
"source_currency": "USD",
"source_amount_minor": 10000,
"destination_currency": "DJF",
"destination_country": "DJ"
}'{
"id": "rqt_01HZ...",
"source": { "currency": "USD", "amount_minor": 10000 },
"destination": { "currency": "DJF", "amount_minor": 17750000 },
"fx_rate": 177.5,
"fees": [
{ "kind": "partner_fee", "amount_minor": 250, "currency": "USD" },
{ "kind": "meraspay_fee", "amount_minor": 100, "currency": "USD" }
],
"net_to_beneficiary_minor": 17750000,
"expires_at": "2026-05-25T10:16:30Z"
}Originate order
| Name | Type | Description |
|---|---|---|
quote_id | rqt_ | Required in origination mode. Omitted in TaaS mode. |
partner_reference | string | Required in TaaS mode (the licensed MTO instructs without a MerasPay quote). |
sender_namerequired | string | Sender full name (sanctions-screened). |
sender_countryrequired | ISO 3166 | Sender country. |
beneficiary_namerequired | string | Recipient full name (sanctions-screened). |
beneficiary_msisdn | E.164 | For wallet termination. |
beneficiary_account | string | For bank termination. |
beneficiary_provider | enum | "waafi", "cac", "santimpay" (ETB), etc. |
beneficiary_agent_pickup | boolean | When true, route to the agent network for cash pickup with a one-time code. |
purpose_code | string | ISO 18-character purpose code (FATF). Required for AML. |
metadata | map | Free-form key/value. |
Termination-as-a-Service (TaaS)
If you already collect, do KYC, and lock FX in your own stack, just instruct MerasPay to terminate. Send partner_reference instead of a quote_id; we charge a flat per-transaction termination fee against your prefunded balance.
curl -X POST https://api.merashub.com/v1/remittance/orders \
-H "Authorization: Bearer sk_partner_..." \
-H "Idempotency-Key: order_xfer_123" \
-d '{
"partner_reference": "WU-2026-XFER-000123",
"amount_minor": 17750000,
"currency": "DJF",
"sender_name": "John Doe",
"sender_country": "US",
"beneficiary_name": "Bob Hassan",
"beneficiary_msisdn": "+25377xxxxxxx",
"beneficiary_provider": "waafi",
"purpose_code": "INTC"
}'Corridors
Each corridor has a per-tx max, daily aggregate cap, KYC threshold, and fee schedule. Refresh nightly:
curl https://api.merashub.com/v1/remittance/corridors \ -H "Authorization: Bearer sk_partner_..."
{
"data": [
{
"source_country": "US", "destination_country": "DJ",
"max_per_tx_minor": 500000, "daily_cap_minor": 2500000,
"kyc_threshold_minor": 100000,
"fee_schedule": [
{ "tier_max_minor": 50000, "fee_minor": 250 },
{ "tier_max_minor": 250000, "fee_minor": 750 },
{ "tier_max_minor": null, "fee_minor": 1500 }
]
}
]
}ETB corridor
max_per_tx_minor) require pre-funding 24h ahead.Sanctions + AML
requires_review state with a 4-business-hour SLA. Your partner agreement spells out reimbursement obligations on hits.