Products · Remittance

Remittance Termination (TaaS)

Licensed MTOs (money transfer operators) use Meras as the last-mile terminator for inbound remittance into Djibouti and Ethiopia. One partner API for all Djiboutian wallets and banks.

6 endpointsPartner API

Who this API is for

This API is for licensed MTOs, not merchants. It requires a partner agreement and compliance review before credentials are issued. To begin onboarding, contact partners@merashub.com.

How it works

  1. 1

    Obtain a partner API key

    After onboarding, your organisation receives a partner key (pk_partner_...) scoped to the remittance namespace. This key is separate from any merchant keys and carries partner-level rate limits and permissions.
  2. 2

    Create a remittance order

    POST to /v1/partner/remittance/orders with full sender details, the beneficiary (either a pre-saved bene_ ID or an inline object), the amount, and the corridor string such as "US-DJ". Include a quote_id to lock the exchange rate.
  3. 3

    KYC and sanctions screening

    Meras validates the beneficiary and sender against KYC records and screens both parties against international sanctions lists. If a hit is flagged the order moves to compliance_review and cannot be completed until cleared by the Meras compliance team.
  4. 4

    Order routes to the correct rail

    For Djibouti corridors, the orchestrator selects the matching rail — Waafi, D-Money, EAB, or CAC — based on the beneficiary's account type. For the DJ→ET and AE→ET corridors, the order is forwarded to SantimPay for local delivery in Ethiopia.
  5. 5

    Webhook fires on completion

    remittance_order.completed fires to your registered partner webhook once the funds have been delivered to the beneficiary. The event body includes the final exchange_rate applied and the receive_amount_minor credited.
  6. 6

    Reconcile via the orders list

    Use GET /v1/partner/remittance/orders to pull your full order history. Filter by status, corridor, or date range. The list endpoint is paginated and supports cursor-based iteration.

Supported corridors

CorridorSend currencyReceive currencyDelivery rail
US-DJUSDDJFWaafi · D-Money · EAB · CAC
EU-DJEURDJFWaafi · D-Money · EAB · CAC
UK-DJGBPDJFWaafi · D-Money · EAB · CAC
Gulf-DJAED / SAR / QARDJFWaafi · D-Money · EAB · CAC
DJ-ETDJFETBSantimPay
AE-ETAEDETBSantimPay

Endpoints

POST/v1/partner/remittance/orders

Create a new remittance order.

GET/v1/partner/remittance/orders/{id}

Retrieve a specific order and its current status.

GET/v1/partner/remittance/quotes

Get a rate + fee preview for a corridor and amount. Valid 60 seconds.

POST/v1/partner/remittance/beneficiaries

Pre-register a beneficiary for faster order creation.

GET/v1/partner/remittance/beneficiaries

List saved beneficiaries for your partner account.

GET/v1/partner/remittance/orders

List and filter all remittance orders.

Quote parameters

Always fetch a quote before creating an order to lock the rate and fee. Pass the returned quote_id into the order.

NameTypeDescription
corridor
required
stringCorridor string, e.g. "US-DJ" or "DJ-ET".
send_amount_minor
required
integerAmount to send in the source currency minor units.
send_currency
required
ISO 4217ISO 4217 code for the source currency, e.g. "USD".

The response includes receive_amount, exchange_rate, fee_minor, and an expires_at timestamp 60 seconds in the future.

Create order parameters

NameTypeDescription
corridor
required
stringCorridor string identifying source and destination country pair.
send_amount_minor
required
integerAmount in the send currency, minor units.
send_currency
required
ISO 4217ISO 4217 code for the send currency.
beneficiary_idbene_ID of a pre-saved beneficiary. Provide this or an inline beneficiary object.
beneficiaryobjectInline beneficiary: name, account_type, account_number, msisdn, address. Required if beneficiary_id is absent.
purpose_code
required
stringSWIFT purpose code, e.g. "SALA" (salary), "GIFT", "FMLY" (family support), "TRAD" (trade).
sender
required
objectSender details: name, address (street, city, country), id_type, id_number, date_of_birth.
quote_idstringID from a prior quote response. Locks the exchange rate and fee for this order. Recommended.
external_referencestringYour MTO's internal transaction ID. Stored for reconciliation; must be unique per partner.

Rate lock via quote_id

Quotes are valid for 60 seconds. Always pass the quote_id from the quote response into the order to lock the rate. Orders submitted without a quote_id receive the live market rate at the time of processing, which may differ from what was shown to the sender.

Automatic sanctions screening

Sanctions screening runs automatically on every order. If a hit is flagged, the order status transitions to compliance_review and cannot be completed or cancelled by the MTO until it has been cleared or rejected by the Meras compliance team. Do not represent the transfer to the sender until the order reaches completed status.

Example — get quote and create order

GET /v1/partner/remittance/quotesbash
curl "https://api.merashub.com/v1/partner/remittance/quotes?corridor=US-DJ&send_amount_minor=10000&send_currency=USD" \
  -H "Authorization: Bearer pk_partner_..."
200 OK — quotejson
{
  "quote_id": "q_01HZGM7PNQR4T8VW2XE5YK9LA",
  "corridor": "US-DJ",
  "send_amount_minor": 10000,
  "send_currency": "USD",
  "exchange_rate": "177.42",
  "fee_minor": 199,
  "receive_amount_minor": 1772001,
  "receive_currency": "DJF",
  "expires_at": "2026-05-25T12:01:00Z"
}
POST /v1/partner/remittance/ordersbash
curl -X POST https://api.merashub.com/v1/partner/remittance/orders \
  -H "Authorization: Bearer pk_partner_..." \
  -H "Content-Type: application/json" \
  -d '{
    "corridor": "US-DJ",
    "send_amount_minor": 10000,
    "send_currency": "USD",
    "quote_id": "q_01HZGM7PNQR4T8VW2XE5YK9LA",
    "purpose_code": "FMLY",
    "external_reference": "MTO-TXN-20260525-00041",
    "sender": {
      "name": "Ahmed Mohamed",
      "address": {
        "street": "123 Main St",
        "city": "Minneapolis",
        "country": "US"
      },
      "id_type": "passport",
      "id_number": "A12345678"
    },
    "beneficiary_id": "bene_01HZGK8QRST5V7WX3YE2NF6PJ"
  }'
201 Created — pendingjson
{
  "id": "rto_01HZGN2KMPR6Q9ST4VW7XE8YL",
  "status": "pending",
  "corridor": "US-DJ",
  "send_amount_minor": 10000,
  "send_currency": "USD",
  "receive_amount_minor": 1772001,
  "receive_currency": "DJF",
  "exchange_rate": "177.42",
  "fee_minor": 199,
  "purpose_code": "FMLY",
  "external_reference": "MTO-TXN-20260525-00041",
  "created_at": "2026-05-25T12:00:30Z"
}