Docs
ENFR
Dashboard
API reference

Settlements

A settlement moves money from your Monerail balance to your own bank or mobile money account, as saved for that currency by an Owner in the dashboard (Settings › Settlements).

The settlement object

Attributes
idstring

Unique identifier (UUID).

livemodeboolean

true for live objects, false for test objects.

objectstring

Always settlement.

statusstring

succeeded and failed are final.

pendingprocessingsucceededfailed
amountinteger

Amount sent to your settlement account, in minor units.

currencystring

ISO 4217 currency code.

feeinteger

Monerail fee.

recipientobject

Your settlement account for this currency, as saved in the dashboard (same shape as on payouts: mobile_money or bank).

descriptionstring | null

Always null for settlements.

client_referencestring | null

Your own reference, as sent at creation.

metadataobject

Key-value pairs you attached at creation.

failure_codestring | null

Why it failed, when status is failed or expired.

failure_messagestring | null

Detail from the payment partner, when available.

created_atstring

Creation time, ISO 8601 (UTC).

updated_atstring

Last change, ISO 8601 (UTC).

The settlement object
{
  "id": "575f3a4b-ccd5-4949-9c4d-158127ccccd1",
  "object": "settlement",
  "livemode": false,
  "status": "pending",
  "amount": 2500000,
  "currency": "XAF",
  "fee": 0,
  "recipient": {
    "type": "bank",
    "name": "Acme SARL",
    "bank_code": "10005",
    "account": "••••0193",
    "country": "CM"
  },
  "description": null,
  "client_reference": null,
  "metadata": {},
  "failure_code": null,
  "failure_message": null,
  "created_at": "2026-10-30T13:47:06.394Z",
  "updated_at": "2026-10-30T13:47:06.394Z"
}

Create a settlement

POST/v1/settlements

The destination is always your saved settlement account: it cannot be changed through the API.

Key roles: Owner or Finance

Body
amountintegerRequired

Amount in minor units of currency (whole francs for XAF, XOF and GNF; centimes for CDF, in multiples of 100). Integer only.

currencystringRequired

ISO 4217 code.

XAFXOFGNFCDFNGNKESGHSUGXTZSRWF
Returns

Returns the new settlement object with 201, or 202 when the outcome is not final yet.

Errors worth handling
HTTPCodeDescription
400settlement_destination_missingNo settlement account saved for this currency.
400settlement_destination_invalidThe saved settlement account is not valid for the payment partner.
402balance_insufficientYour balance (or cards balance) does not cover the amount and the fee.
403permission_deniedThe key’s creator does not have the role required for this operation.
429rate_limitedA rate limit was reached. Wait for Retry-After seconds. See Rate limits.
curl https://api.monerail.com/v1/settlements \
  -H "Authorization: Bearer $MONERAIL_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a1f3c9e2-5b7d-4c21-9f80-3e6b2d1c7a45" \
  -d '{
    "amount": 2500000,
    "currency": "XAF"
  }'
Response201
{
  "id": "575f3a4b-ccd5-4949-9c4d-158127ccccd1",
  "object": "settlement",
  "livemode": false,
  "status": "pending",
  "amount": 2500000,
  "currency": "XAF",
  "fee": 0,
  "recipient": {
    "type": "bank",
    "name": "Acme SARL",
    "bank_code": "10005",
    "account": "••••0193",
    "country": "CM"
  },
  "description": null,
  "client_reference": null,
  "metadata": {},
  "failure_code": null,
  "failure_message": null,
  "created_at": "2026-10-30T13:47:06.394Z",
  "updated_at": "2026-10-30T13:47:06.394Z"
}

Retrieve a settlement

GET/v1/settlements/{id}

Key roles: Every role

Path parameters
idstringRequired

ID of the settlement.

Returns

Returns the settlement object.

curl https://api.monerail.com/v1/settlements/575f3a4b-ccd5-4949-9c4d-158127ccccd1 \
  -H "Authorization: Bearer $MONERAIL_KEY"
Response200
{
  "id": "575f3a4b-ccd5-4949-9c4d-158127ccccd1",
  "object": "settlement",
  "livemode": false,
  "status": "succeeded",
  "amount": 2500000,
  "currency": "XAF",
  "fee": 0,
  "recipient": {
    "type": "bank",
    "name": "Acme SARL",
    "bank_code": "10005",
    "account": "••••0193",
    "country": "CM"
  },
  "description": null,
  "client_reference": null,
  "metadata": {},
  "failure_code": null,
  "failure_message": null,
  "created_at": "2026-10-30T13:47:06.394Z",
  "updated_at": "2026-10-30T13:47:06.394Z"
}

List settlements

GET/v1/settlements

Newest first.

Key roles: Every role

Query parameters
limitintegerOptionalDefault 20

Number of objects to return, 1 to 100.

starting_afterstringOptional

Cursor: the ID of the last object of the previous page.

Returns

Returns a list object: data holds up to limit settlement objects, and has_more tells whether more follow.

curl "https://api.monerail.com/v1/settlements?limit=10" \
  -H "Authorization: Bearer $MONERAIL_KEY"
Response200
{
  "object": "list",
  "url": "/v1/settlements",
  "data": [
    {
      "id": "575f3a4b-ccd5-4949-9c4d-158127ccccd1",
      "object": "settlement",
      "livemode": false,
      "status": "pending",
      "amount": 2500000,
      "currency": "XAF",
      "fee": 0,
      "recipient": {
        "type": "bank",
        "name": "Acme SARL",
        "bank_code": "10005",
        "account": "••••0193",
        "country": "CM"
      },
      "description": null,
      "client_reference": null,
      "metadata": {},
      "failure_code": null,
      "failure_message": null,
      "created_at": "2026-10-30T13:47:06.394Z",
      "updated_at": "2026-10-30T13:47:06.394Z"
    }
  ],
  "has_more": false
}