{
  "info": {
    "name": "Monerail API",
    "_postman_id": "6f0e2c4a-8d1b-4f3e-9a57-2b6c1d0e9f41",
    "version": "2026-10-30",
    "description": "Monerail API v1. Set the collection variable apiKey to a test key (mr_test_…). Docs: https://docs.monerail.com",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.monerail.com",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "mr_test_replace_me",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "Balance",
      "description": "Your available balance per currency, and your cards balance in US dollars. Amounts are in minor units.",
      "item": [
        {
          "name": "Retrieve the balance",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/balance",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "balance"
              ]
            },
            "description": "Returns the balance of the mode of your key (test or live)."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/balance",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "balance"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"object\": \"balance\",\n  \"livemode\": false,\n  \"available\": [\n    {\n      \"currency\": \"XAF\",\n      \"amount\": 3447189\n    },\n    {\n      \"currency\": \"KES\",\n      \"amount\": 7164025\n    }\n  ],\n  \"cards\": {\n    \"currency\": \"USD\",\n    \"amount\": 427555\n  }\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Collections",
      "description": "A collection asks a customer to pay from their mobile money wallet. The customer approves on their phone, or enters a one-time code that you send with authorize . Follow the outcome with webhooks.",
      "item": [
        {
          "name": "Create a collection",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/collections",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "collections"
              ]
            },
            "description": "Sends a payment request to the customer’s phone. Returns 201 with the collection, or 202 if the operator has not confirmed receipt yet (the collection is then processing ; its outcome arrives by webhook).",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 5000,\n  \"currency\": \"XAF\",\n  \"phone\": \"237670000999\",\n  \"operator\": \"MTN\",\n  \"customer\": {\n    \"name\": \"Awa Ndiaye\"\n  },\n  \"description\": \"Order 42\",\n  \"client_reference\": \"order_42\",\n  \"metadata\": {\n    \"order_id\": \"42\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "201 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/collections",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "collections"
                  ]
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"3b8f6c1e-2a47-4d1b-9e35-7c0a9d2f4e61\",\n  \"object\": \"collection\",\n  \"livemode\": false,\n  \"status\": \"pending\",\n  \"amount\": 5000,\n  \"currency\": \"XAF\",\n  \"fee\": null,\n  \"net\": null,\n  \"customer\": {\n    \"name\": \"Awa Ndiaye\",\n    \"phone\": \"237670000999\",\n    \"country\": \"CM\"\n  },\n  \"operator\": \"MTN\",\n  \"description\": \"Order 42\",\n  \"client_reference\": \"order_42\",\n  \"metadata\": {\n    \"order_id\": \"42\"\n  },\n  \"next_action\": {\n    \"type\": \"customer_approval\",\n    \"message\": \"A payment request was sent. The customer enters their PIN.\",\n    \"ussd_code\": \"*126#\"\n  },\n  \"failure_code\": null,\n  \"failure_message\": null,\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"updated_at\": \"2026-10-30T13:47:06.394Z\"\n}"
            }
          ]
        },
        {
          "name": "Retrieve a collection",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/collections/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "collections",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "3b8f6c1e-2a47-4d1b-9e35-7c0a9d2f4e61",
                  "description": "ID of the collection."
                }
              ]
            },
            "description": "Returns the collection. If it is still waiting, Monerail first asks the payment partner for news, so this call can also be used for polling (every few seconds at most)."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/collections/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "collections",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "3b8f6c1e-2a47-4d1b-9e35-7c0a9d2f4e61",
                      "description": "ID of the collection."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"3b8f6c1e-2a47-4d1b-9e35-7c0a9d2f4e61\",\n  \"object\": \"collection\",\n  \"livemode\": false,\n  \"status\": \"succeeded\",\n  \"amount\": 5000,\n  \"currency\": \"XAF\",\n  \"fee\": 125,\n  \"net\": 4875,\n  \"customer\": {\n    \"name\": \"Awa Ndiaye\",\n    \"phone\": \"237670000999\",\n    \"country\": \"CM\"\n  },\n  \"operator\": \"MTN\",\n  \"description\": \"Order 42\",\n  \"client_reference\": \"order_42\",\n  \"metadata\": {\n    \"order_id\": \"42\"\n  },\n  \"next_action\": null,\n  \"failure_code\": null,\n  \"failure_message\": null,\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"updated_at\": \"2026-10-30T13:47:09.807Z\"\n}"
            }
          ]
        },
        {
          "name": "List collections",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/collections?limit=10",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "collections"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "10"
                }
              ]
            },
            "description": "Newest first."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/collections?limit=10",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "collections"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "10"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"object\": \"list\",\n  \"url\": \"/v1/collections\",\n  \"data\": [\n    {\n      \"id\": \"3b8f6c1e-2a47-4d1b-9e35-7c0a9d2f4e61\",\n      \"object\": \"collection\",\n      \"livemode\": false,\n      \"status\": \"succeeded\",\n      \"amount\": 5000,\n      \"currency\": \"XAF\",\n      \"fee\": 125,\n      \"net\": 4875,\n      \"customer\": {\n        \"name\": \"Awa Ndiaye\",\n        \"phone\": \"237670000999\",\n        \"country\": \"CM\"\n      },\n      \"operator\": \"MTN\",\n      \"description\": \"Order 42\",\n      \"client_reference\": \"order_42\",\n      \"metadata\": {\n        \"order_id\": \"42\"\n      },\n      \"next_action\": null,\n      \"failure_code\": null,\n      \"failure_message\": null,\n      \"created_at\": \"2026-10-30T13:47:06.394Z\",\n      \"updated_at\": \"2026-10-30T13:47:09.807Z\"\n    }\n  ],\n  \"has_more\": false\n}"
            }
          ]
        },
        {
          "name": "Authorize with a code",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/collections/:id/authorize",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "collections",
                ":id",
                "authorize"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "9e2d4a7b-61c3-4f08-8b5e-2d7f1a3c9b40",
                  "description": "ID of the collection."
                }
              ]
            },
            "description": "For collections in requires_otp : sends the one-time code the customer received by SMS, or generated by dialing next_action.ussd_code . The collection moves to processing , then to its final status. In countries where the customer generates the code, 3 attempts are allowed.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"otp\": \"123456\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/collections/:id/authorize",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "collections",
                    ":id",
                    "authorize"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "9e2d4a7b-61c3-4f08-8b5e-2d7f1a3c9b40",
                      "description": "ID of the collection."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"9e2d4a7b-61c3-4f08-8b5e-2d7f1a3c9b40\",\n  \"object\": \"collection\",\n  \"livemode\": false,\n  \"status\": \"processing\",\n  \"amount\": 2000,\n  \"currency\": \"XAF\",\n  \"fee\": null,\n  \"net\": null,\n  \"customer\": {\n    \"name\": \"Awa Ndiaye\",\n    \"phone\": \"237690000002\",\n    \"country\": \"CM\"\n  },\n  \"operator\": \"ORANGE\",\n  \"description\": \"Order 42\",\n  \"client_reference\": \"order_42\",\n  \"metadata\": {\n    \"order_id\": \"42\"\n  },\n  \"next_action\": null,\n  \"failure_code\": null,\n  \"failure_message\": null,\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"updated_at\": \"2026-10-30T13:47:09.807Z\"\n}"
            }
          ]
        },
        {
          "name": "Resend the code",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/collections/:id/resend_otp",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "collections",
                ":id",
                "resend_otp"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "9e2d4a7b-61c3-4f08-8b5e-2d7f1a3c9b40",
                  "description": "ID of the collection."
                }
              ]
            },
            "description": "Asks the operator to send a new code to the customer. Where the customer generates the code with a USSD code, nothing is sent: show next_action.ussd_code again."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/collections/:id/resend_otp",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "collections",
                    ":id",
                    "resend_otp"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "9e2d4a7b-61c3-4f08-8b5e-2d7f1a3c9b40",
                      "description": "ID of the collection."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"9e2d4a7b-61c3-4f08-8b5e-2d7f1a3c9b40\",\n  \"object\": \"collection\",\n  \"livemode\": false,\n  \"status\": \"requires_otp\",\n  \"amount\": 2000,\n  \"currency\": \"XAF\",\n  \"fee\": null,\n  \"net\": null,\n  \"customer\": {\n    \"name\": \"Awa Ndiaye\",\n    \"phone\": \"237690000002\",\n    \"country\": \"CM\"\n  },\n  \"operator\": \"ORANGE\",\n  \"description\": \"Order 42\",\n  \"client_reference\": \"order_42\",\n  \"metadata\": {\n    \"order_id\": \"42\"\n  },\n  \"next_action\": {\n    \"type\": \"otp\",\n    \"message\": \"The customer received a one-time code by SMS.\"\n  },\n  \"failure_code\": null,\n  \"failure_message\": null,\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"updated_at\": \"2026-10-30T13:47:06.394Z\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Payouts",
      "description": "A payout sends money from your balance to a mobile money wallet or a bank account. The amount plus the fee is reserved when you create it, and returned if the payout fails.",
      "item": [
        {
          "name": "Create a payout",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/payouts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "payouts"
              ]
            },
            "description": "Reserves amount + fee on your balance and sends the payout. Fails with 402 balance_insufficient if your balance does not cover both. Returns 201 , or 202 with status: \"processing\" if the payment partner has not confirmed receipt yet: do not create the payout again, its outcome arrives by webhook.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 150000,\n  \"currency\": \"XAF\",\n  \"recipient\": {\n    \"type\": \"mobile_money\",\n    \"name\": \"Kossi Mensah\",\n    \"phone\": \"237670000777\",\n    \"operator\": \"MTN\"\n  },\n  \"description\": \"Invoice 2026-118\",\n  \"client_reference\": \"inv_118\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "201 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/payouts",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "payouts"
                  ]
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"7b05e2b6-6638-4088-a984-7155dfd6a036\",\n  \"object\": \"payout\",\n  \"livemode\": false,\n  \"status\": \"pending\",\n  \"amount\": 150000,\n  \"currency\": \"XAF\",\n  \"fee\": 2250,\n  \"recipient\": {\n    \"type\": \"mobile_money\",\n    \"name\": \"Kossi Mensah\",\n    \"operator\": \"MTN\",\n    \"phone\": \"237670000777\",\n    \"country\": \"CM\"\n  },\n  \"description\": \"Invoice 2026-118\",\n  \"client_reference\": \"inv_118\",\n  \"metadata\": {},\n  \"failure_code\": null,\n  \"failure_message\": null,\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"updated_at\": \"2026-10-30T13:47:06.394Z\"\n}"
            }
          ]
        },
        {
          "name": "Retrieve a payout",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/payouts/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "payouts",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "7b05e2b6-6638-4088-a984-7155dfd6a036",
                  "description": "ID of the payout."
                }
              ]
            },
            "description": "If the payout is still on its way, Monerail first asks the payment partner for news."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/payouts/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "payouts",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "7b05e2b6-6638-4088-a984-7155dfd6a036",
                      "description": "ID of the payout."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"7b05e2b6-6638-4088-a984-7155dfd6a036\",\n  \"object\": \"payout\",\n  \"livemode\": false,\n  \"status\": \"succeeded\",\n  \"amount\": 150000,\n  \"currency\": \"XAF\",\n  \"fee\": 2250,\n  \"recipient\": {\n    \"type\": \"mobile_money\",\n    \"name\": \"Kossi Mensah\",\n    \"operator\": \"MTN\",\n    \"phone\": \"237670000777\",\n    \"country\": \"CM\"\n  },\n  \"description\": \"Invoice 2026-118\",\n  \"client_reference\": \"inv_118\",\n  \"metadata\": {},\n  \"failure_code\": null,\n  \"failure_message\": null,\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"updated_at\": \"2026-10-30T13:47:09.807Z\"\n}"
            }
          ]
        },
        {
          "name": "List payouts",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/payouts?limit=10",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "payouts"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "10"
                }
              ]
            },
            "description": "Newest first."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/payouts?limit=10",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "payouts"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "10"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"object\": \"list\",\n  \"url\": \"/v1/payouts\",\n  \"data\": [\n    {\n      \"id\": \"7b05e2b6-6638-4088-a984-7155dfd6a036\",\n      \"object\": \"payout\",\n      \"livemode\": false,\n      \"status\": \"pending\",\n      \"amount\": 150000,\n      \"currency\": \"XAF\",\n      \"fee\": 2250,\n      \"recipient\": {\n        \"type\": \"bank\",\n        \"name\": \"Kossi Mensah\",\n        \"bank_code\": \"10005\",\n        \"account\": \"••••4821\",\n        \"country\": \"CM\"\n      },\n      \"description\": \"Invoice 2026-118\",\n      \"client_reference\": \"inv_118\",\n      \"metadata\": {},\n      \"failure_code\": null,\n      \"failure_message\": null,\n      \"created_at\": \"2026-10-30T13:47:06.394Z\",\n      \"updated_at\": \"2026-10-30T13:47:06.394Z\"\n    }\n  ],\n  \"has_more\": false\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Settlements",
      "description": "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).",
      "item": [
        {
          "name": "Create a settlement",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/settlements",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "settlements"
              ]
            },
            "description": "The destination is always your saved settlement account: it cannot be changed through the API.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 2500000,\n  \"currency\": \"XAF\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "201 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/settlements",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "settlements"
                  ]
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"575f3a4b-ccd5-4949-9c4d-158127ccccd1\",\n  \"object\": \"settlement\",\n  \"livemode\": false,\n  \"status\": \"pending\",\n  \"amount\": 2500000,\n  \"currency\": \"XAF\",\n  \"fee\": 0,\n  \"recipient\": {\n    \"type\": \"bank\",\n    \"name\": \"Acme SARL\",\n    \"bank_code\": \"10005\",\n    \"account\": \"••••0193\",\n    \"country\": \"CM\"\n  },\n  \"description\": null,\n  \"client_reference\": null,\n  \"metadata\": {},\n  \"failure_code\": null,\n  \"failure_message\": null,\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"updated_at\": \"2026-10-30T13:47:06.394Z\"\n}"
            }
          ]
        },
        {
          "name": "Retrieve a settlement",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/settlements/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "settlements",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "575f3a4b-ccd5-4949-9c4d-158127ccccd1",
                  "description": "ID of the settlement."
                }
              ]
            },
            "description": ""
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/settlements/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "settlements",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "575f3a4b-ccd5-4949-9c4d-158127ccccd1",
                      "description": "ID of the settlement."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"575f3a4b-ccd5-4949-9c4d-158127ccccd1\",\n  \"object\": \"settlement\",\n  \"livemode\": false,\n  \"status\": \"succeeded\",\n  \"amount\": 2500000,\n  \"currency\": \"XAF\",\n  \"fee\": 0,\n  \"recipient\": {\n    \"type\": \"bank\",\n    \"name\": \"Acme SARL\",\n    \"bank_code\": \"10005\",\n    \"account\": \"••••0193\",\n    \"country\": \"CM\"\n  },\n  \"description\": null,\n  \"client_reference\": null,\n  \"metadata\": {},\n  \"failure_code\": null,\n  \"failure_message\": null,\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"updated_at\": \"2026-10-30T13:47:06.394Z\"\n}"
            }
          ]
        },
        {
          "name": "List settlements",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/settlements?limit=10",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "settlements"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "10"
                }
              ]
            },
            "description": "Newest first."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/settlements?limit=10",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "settlements"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "10"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"object\": \"list\",\n  \"url\": \"/v1/settlements\",\n  \"data\": [\n    {\n      \"id\": \"575f3a4b-ccd5-4949-9c4d-158127ccccd1\",\n      \"object\": \"settlement\",\n      \"livemode\": false,\n      \"status\": \"pending\",\n      \"amount\": 2500000,\n      \"currency\": \"XAF\",\n      \"fee\": 0,\n      \"recipient\": {\n        \"type\": \"bank\",\n        \"name\": \"Acme SARL\",\n        \"bank_code\": \"10005\",\n        \"account\": \"••••0193\",\n        \"country\": \"CM\"\n      },\n      \"description\": null,\n      \"client_reference\": null,\n      \"metadata\": {},\n      \"failure_code\": null,\n      \"failure_message\": null,\n      \"created_at\": \"2026-10-30T13:47:06.394Z\",\n      \"updated_at\": \"2026-10-30T13:47:06.394Z\"\n    }\n  ],\n  \"has_more\": false\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Transactions",
      "description": "Every movement on your balances, from the ledger: collections credited, payouts and settlements debited, card funding, card payments, fees. Use them for reconciliation.",
      "item": [
        {
          "name": "List transactions",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/transactions?type=collection&limit=10",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "transactions"
              ],
              "query": [
                {
                  "key": "type",
                  "value": "collection"
                },
                {
                  "key": "limit",
                  "value": "10"
                }
              ]
            },
            "description": "Newest first."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/transactions?type=collection&limit=10",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions"
                  ],
                  "query": [
                    {
                      "key": "type",
                      "value": "collection"
                    },
                    {
                      "key": "limit",
                      "value": "10"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"object\": \"list\",\n  \"url\": \"/v1/transactions\",\n  \"data\": [\n    {\n      \"id\": \"e664ee8d-8ae1-4b05-b76f-d2a1ddf74b50\",\n      \"object\": \"transaction\",\n      \"livemode\": false,\n      \"type\": \"collection\",\n      \"amount\": 4875,\n      \"currency\": \"XAF\",\n      \"gross\": 5000,\n      \"status\": \"succeeded\",\n      \"description\": \"Awa Ndiaye\",\n      \"counterparty\": \"Awa Ndiaye\",\n      \"card\": null,\n      \"source\": {\n        \"object\": \"collection\",\n        \"id\": \"3b8f6c1e-2a47-4d1b-9e35-7c0a9d2f4e61\"\n      },\n      \"created_at\": \"2026-10-30T13:47:09.807Z\"\n    }\n  ],\n  \"has_more\": true\n}"
            }
          ]
        },
        {
          "name": "Retrieve a transaction",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/transactions/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "transactions",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "e664ee8d-8ae1-4b05-b76f-d2a1ddf74b50",
                  "description": "ID of the transaction."
                }
              ]
            },
            "description": ""
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/transactions/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "e664ee8d-8ae1-4b05-b76f-d2a1ddf74b50",
                      "description": "ID of the transaction."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"e664ee8d-8ae1-4b05-b76f-d2a1ddf74b50\",\n  \"object\": \"transaction\",\n  \"livemode\": false,\n  \"type\": \"collection\",\n  \"amount\": 4875,\n  \"currency\": \"XAF\",\n  \"gross\": 5000,\n  \"status\": \"succeeded\",\n  \"description\": \"Awa Ndiaye\",\n  \"counterparty\": \"Awa Ndiaye\",\n  \"card\": null,\n  \"source\": {\n    \"object\": \"collection\",\n    \"id\": \"3b8f6c1e-2a47-4d1b-9e35-7c0a9d2f4e61\"\n  },\n  \"created_at\": \"2026-10-30T13:47:09.807Z\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Cardholders",
      "description": "A cardholder is the person a card is issued to: a member of your team or one of your customers. The card issuer verifies their identity before any card is issued.",
      "item": [
        {
          "name": "Create a cardholder",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/cardholders",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cardholders"
              ]
            },
            "description": "Creates the cardholder with verification.status pending . Then submit the identity verification.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"type\": \"customer\",\n  \"first_name\": \"Awa\",\n  \"last_name\": \"Ndiaye\",\n  \"email\": \"awa@example.com\",\n  \"phone\": \"+237670000999\",\n  \"country\": \"CM\",\n  \"city\": \"Douala\",\n  \"birth_date\": \"1991-02-03\",\n  \"id_document\": \"national_id\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "201 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/cardholders",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "cardholders"
                  ]
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n  \"object\": \"cardholder\",\n  \"livemode\": false,\n  \"type\": \"customer\",\n  \"first_name\": \"Awa\",\n  \"last_name\": \"Ndiaye\",\n  \"email\": \"awa@example.com\",\n  \"phone\": \"+237670000999\",\n  \"country\": \"CM\",\n  \"city\": \"Douala\",\n  \"birth_date\": \"1991-02-03\",\n  \"id_document\": \"national_id\",\n  \"id_number_last4\": \"3408\",\n  \"verification\": {\n    \"status\": \"pending\",\n    \"reason\": null,\n    \"verified_at\": null\n  },\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"updated_at\": \"2026-10-30T13:47:06.394Z\"\n}"
            }
          ]
        },
        {
          "name": "Submit identity verification",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/cardholders/:id/verification",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cardholders",
                ":id",
                "verification"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "5df6acd9-4bac-4e19-869c-fcde6b79f389",
                  "description": "ID of the cardholder."
                }
              ]
            },
            "description": "Sends the identity details and document images to the card issuer. Returns 202 with verification.status in_review . The decision arrives with the cardholder.kyc_updated event. After a rejection, call it again with corrected details. If the cardholder is already verified, returns 200 with no change; while a review is in progress, documents are not sent again. The first name, last name and birth date must match the document exactly. Verification is per business: a person already verified by another business is verified again for yours. Limited to 5 calls per cardholder per 24 hours.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"id_number\": \"CM12345678\",\n  \"birth_date\": \"1991-02-03\",\n  \"place_of_birth\": \"Douala\",\n  \"address\": {\n    \"line1\": \"12 rue Joss\",\n    \"city\": \"Douala\",\n    \"state\": \"Littoral\"\n  },\n  \"documents\": {\n    \"front\": \"data:image/jpeg;base64,/9j/4AAQ…\",\n    \"back\": \"data:image/jpeg;base64,/9j/4AAQ…\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "202 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/cardholders/:id/verification",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "cardholders",
                    ":id",
                    "verification"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "5df6acd9-4bac-4e19-869c-fcde6b79f389",
                      "description": "ID of the cardholder."
                    }
                  ]
                }
              },
              "status": "Accepted",
              "code": 202,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n  \"object\": \"cardholder\",\n  \"livemode\": false,\n  \"type\": \"customer\",\n  \"first_name\": \"Awa\",\n  \"last_name\": \"Ndiaye\",\n  \"email\": \"awa@example.com\",\n  \"phone\": \"+237670000999\",\n  \"country\": \"CM\",\n  \"city\": \"Douala\",\n  \"birth_date\": \"1991-02-03\",\n  \"id_document\": \"national_id\",\n  \"id_number_last4\": \"3408\",\n  \"verification\": {\n    \"status\": \"in_review\",\n    \"reason\": null,\n    \"verified_at\": null\n  },\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"updated_at\": \"2026-10-30T13:47:09.807Z\"\n}"
            }
          ]
        },
        {
          "name": "Retrieve a cardholder",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/cardholders/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cardholders",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "5df6acd9-4bac-4e19-869c-fcde6b79f389",
                  "description": "ID of the cardholder."
                }
              ]
            },
            "description": ""
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/cardholders/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "cardholders",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "5df6acd9-4bac-4e19-869c-fcde6b79f389",
                      "description": "ID of the cardholder."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n  \"object\": \"cardholder\",\n  \"livemode\": false,\n  \"type\": \"customer\",\n  \"first_name\": \"Awa\",\n  \"last_name\": \"Ndiaye\",\n  \"email\": \"awa@example.com\",\n  \"phone\": \"+237670000999\",\n  \"country\": \"CM\",\n  \"city\": \"Douala\",\n  \"birth_date\": \"1991-02-03\",\n  \"id_document\": \"national_id\",\n  \"id_number_last4\": \"3408\",\n  \"verification\": {\n    \"status\": \"verified\",\n    \"reason\": null,\n    \"verified_at\": \"2026-10-30T13:47:09.807Z\"\n  },\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"updated_at\": \"2026-10-30T13:47:06.394Z\"\n}"
            }
          ]
        },
        {
          "name": "List cardholders",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/cardholders?limit=10",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cardholders"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "10"
                }
              ]
            },
            "description": "Newest first."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/cardholders?limit=10",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "cardholders"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "10"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"object\": \"list\",\n  \"url\": \"/v1/cardholders\",\n  \"data\": [\n    {\n      \"id\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n      \"object\": \"cardholder\",\n      \"livemode\": false,\n      \"type\": \"customer\",\n      \"first_name\": \"Awa\",\n      \"last_name\": \"Ndiaye\",\n      \"email\": \"awa@example.com\",\n      \"phone\": \"+237670000999\",\n      \"country\": \"CM\",\n      \"city\": \"Douala\",\n      \"birth_date\": \"1991-02-03\",\n      \"id_document\": \"national_id\",\n      \"id_number_last4\": \"3408\",\n      \"verification\": {\n        \"status\": \"pending\",\n        \"reason\": null,\n        \"verified_at\": null\n      },\n      \"created_at\": \"2026-10-30T13:47:06.394Z\",\n      \"updated_at\": \"2026-10-30T13:47:06.394Z\"\n    }\n  ],\n  \"has_more\": false\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Cards",
      "description": "Virtual Visa and Mastercard cards in US dollars. A card is funded from your cards balance and can be frozen, emptied to the cards balance or terminated at any time. Amounts are in US cents. When the issuer’s answer to an action is not final, the API returns 202 and the result arrives by webhook.",
      "item": [
        {
          "name": "Create a card",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/cards",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cards"
              ]
            },
            "description": "Issues a card to a verified cardholder (or to an AI agent with type: \"agent\" ). amount is taken from your cards balance: it must cover the issuing fee plus at least $1. Returns 201 when the card is active, or 202 with status: \"pending\" while the issuer finishes or when its answer is not final yet; card.issued or card.issue_failed follows. The money returns to the cards balance only once a failure is final.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cardholder\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n  \"type\": \"customer\",\n  \"label\": \"Subscriptions\",\n  \"amount\": 1000,\n  \"spending_limit\": {\n    \"amount\": 20000,\n    \"interval\": \"daily\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "201 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/cards",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "cards"
                  ]
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"ce2f0aea-7f87-4cbd-8383-03129d1253e0\",\n  \"object\": \"card\",\n  \"livemode\": false,\n  \"type\": \"customer\",\n  \"status\": \"active\",\n  \"cardholder\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n  \"agent_name\": null,\n  \"label\": \"Subscriptions\",\n  \"network\": \"visa\",\n  \"last4\": \"5904\",\n  \"exp_month\": 10,\n  \"exp_year\": 2029,\n  \"currency\": \"USD\",\n  \"balance\": 950,\n  \"single_use\": false,\n  \"spending_limit\": {\n    \"amount\": 20000,\n    \"interval\": \"daily\"\n  },\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"terminated_at\": null\n}"
            }
          ]
        },
        {
          "name": "Retrieve a card",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/cards/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cards",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                  "description": "ID of the card."
                }
              ]
            },
            "description": "The full card number and CVC are never returned by the API. An Owner or Finance member can display them for 60 seconds in the dashboard (Show card details)."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/cards/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "cards",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                      "description": "ID of the card."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"ce2f0aea-7f87-4cbd-8383-03129d1253e0\",\n  \"object\": \"card\",\n  \"livemode\": false,\n  \"type\": \"customer\",\n  \"status\": \"active\",\n  \"cardholder\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n  \"agent_name\": null,\n  \"label\": \"Subscriptions\",\n  \"network\": \"visa\",\n  \"last4\": \"5904\",\n  \"exp_month\": 10,\n  \"exp_year\": 2029,\n  \"currency\": \"USD\",\n  \"balance\": 950,\n  \"single_use\": false,\n  \"spending_limit\": {\n    \"amount\": 20000,\n    \"interval\": \"daily\"\n  },\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"terminated_at\": null\n}"
            }
          ]
        },
        {
          "name": "List cards",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/cards?status=active&limit=10",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cards"
              ],
              "query": [
                {
                  "key": "status",
                  "value": "active"
                },
                {
                  "key": "limit",
                  "value": "10"
                }
              ]
            },
            "description": "Newest first."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/cards?status=active&limit=10",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "cards"
                  ],
                  "query": [
                    {
                      "key": "status",
                      "value": "active"
                    },
                    {
                      "key": "limit",
                      "value": "10"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"object\": \"list\",\n  \"url\": \"/v1/cards\",\n  \"data\": [\n    {\n      \"id\": \"ce2f0aea-7f87-4cbd-8383-03129d1253e0\",\n      \"object\": \"card\",\n      \"livemode\": false,\n      \"type\": \"customer\",\n      \"status\": \"active\",\n      \"cardholder\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n      \"agent_name\": null,\n      \"label\": \"Subscriptions\",\n      \"network\": \"visa\",\n      \"last4\": \"5904\",\n      \"exp_month\": 10,\n      \"exp_year\": 2029,\n      \"currency\": \"USD\",\n      \"balance\": 950,\n      \"single_use\": false,\n      \"spending_limit\": {\n        \"amount\": 20000,\n        \"interval\": \"daily\"\n      },\n      \"created_at\": \"2026-10-30T13:47:06.394Z\",\n      \"terminated_at\": null\n    }\n  ],\n  \"has_more\": false\n}"
            }
          ]
        },
        {
          "name": "Fund a card",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/cards/:id/fund",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cards",
                ":id",
                "fund"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                  "description": "ID of the card."
                }
              ]
            },
            "description": "Moves money from the cards balance to the card. Like every card action, returns 202 instead of 200 when the issuer’s answer is not final yet: the operation is not failed, and its result arrives by webhook ( card.funded ). Not available for single-use cards.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 5000\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/cards/:id/fund",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "cards",
                    ":id",
                    "fund"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                      "description": "ID of the card."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"ce2f0aea-7f87-4cbd-8383-03129d1253e0\",\n  \"object\": \"card\",\n  \"livemode\": false,\n  \"type\": \"customer\",\n  \"status\": \"active\",\n  \"cardholder\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n  \"agent_name\": null,\n  \"label\": \"Subscriptions\",\n  \"network\": \"visa\",\n  \"last4\": \"5904\",\n  \"exp_month\": 10,\n  \"exp_year\": 2029,\n  \"currency\": \"USD\",\n  \"balance\": 5950,\n  \"single_use\": false,\n  \"spending_limit\": {\n    \"amount\": 20000,\n    \"interval\": \"daily\"\n  },\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"terminated_at\": null\n}"
            }
          ]
        },
        {
          "name": "Withdraw from a card",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/cards/:id/withdraw",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cards",
                ":id",
                "withdraw"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                  "description": "ID of the card."
                }
              ]
            },
            "description": "Moves money from the card back to the cards balance. At least $1 must stay on the card. Not available for single-use cards. card.withdrawn confirms it.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 500\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/cards/:id/withdraw",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "cards",
                    ":id",
                    "withdraw"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                      "description": "ID of the card."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"ce2f0aea-7f87-4cbd-8383-03129d1253e0\",\n  \"object\": \"card\",\n  \"livemode\": false,\n  \"type\": \"customer\",\n  \"status\": \"active\",\n  \"cardholder\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n  \"agent_name\": null,\n  \"label\": \"Subscriptions\",\n  \"network\": \"visa\",\n  \"last4\": \"5904\",\n  \"exp_month\": 10,\n  \"exp_year\": 2029,\n  \"currency\": \"USD\",\n  \"balance\": 450,\n  \"single_use\": false,\n  \"spending_limit\": {\n    \"amount\": 20000,\n    \"interval\": \"daily\"\n  },\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"terminated_at\": null\n}"
            }
          ]
        },
        {
          "name": "Freeze a card",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/cards/:id/freeze",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cards",
                ":id",
                "freeze"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                  "description": "ID of the card."
                }
              ]
            },
            "description": "Declines every new payment until the card is unfrozen. card.frozen confirms it."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/cards/:id/freeze",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "cards",
                    ":id",
                    "freeze"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                      "description": "ID of the card."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"ce2f0aea-7f87-4cbd-8383-03129d1253e0\",\n  \"object\": \"card\",\n  \"livemode\": false,\n  \"type\": \"customer\",\n  \"status\": \"frozen\",\n  \"cardholder\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n  \"agent_name\": null,\n  \"label\": \"Subscriptions\",\n  \"network\": \"visa\",\n  \"last4\": \"5904\",\n  \"exp_month\": 10,\n  \"exp_year\": 2029,\n  \"currency\": \"USD\",\n  \"balance\": 950,\n  \"single_use\": false,\n  \"spending_limit\": {\n    \"amount\": 20000,\n    \"interval\": \"daily\"\n  },\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"terminated_at\": null\n}"
            }
          ]
        },
        {
          "name": "Unfreeze a card",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/cards/:id/unfreeze",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cards",
                ":id",
                "unfreeze"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                  "description": "ID of the card."
                }
              ]
            },
            "description": "Accepts payments again. card.unfrozen confirms it."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/cards/:id/unfreeze",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "cards",
                    ":id",
                    "unfreeze"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                      "description": "ID of the card."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"ce2f0aea-7f87-4cbd-8383-03129d1253e0\",\n  \"object\": \"card\",\n  \"livemode\": false,\n  \"type\": \"customer\",\n  \"status\": \"active\",\n  \"cardholder\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n  \"agent_name\": null,\n  \"label\": \"Subscriptions\",\n  \"network\": \"visa\",\n  \"last4\": \"5904\",\n  \"exp_month\": 10,\n  \"exp_year\": 2029,\n  \"currency\": \"USD\",\n  \"balance\": 950,\n  \"single_use\": false,\n  \"spending_limit\": {\n    \"amount\": 20000,\n    \"interval\": \"daily\"\n  },\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"terminated_at\": null\n}"
            }
          ]
        },
        {
          "name": "Terminate a card",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/cards/:id/terminate",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cards",
                ":id",
                "terminate"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                  "description": "ID of the card."
                }
              ]
            },
            "description": "Closes the card for good. Its remaining balance returns to the cards balance. This cannot be undone. card.terminated confirms it."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/cards/:id/terminate",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "cards",
                    ":id",
                    "terminate"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                      "description": "ID of the card."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"ce2f0aea-7f87-4cbd-8383-03129d1253e0\",\n  \"object\": \"card\",\n  \"livemode\": false,\n  \"type\": \"customer\",\n  \"status\": \"terminated\",\n  \"cardholder\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n  \"agent_name\": null,\n  \"label\": \"Subscriptions\",\n  \"network\": \"visa\",\n  \"last4\": \"5904\",\n  \"exp_month\": 10,\n  \"exp_year\": 2029,\n  \"currency\": \"USD\",\n  \"balance\": 0,\n  \"single_use\": false,\n  \"spending_limit\": {\n    \"amount\": 20000,\n    \"interval\": \"daily\"\n  },\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"terminated_at\": \"2026-10-30T13:47:09.807Z\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Webhook endpoints",
      "description": "The HTTPS URLs where Monerail sends events. Up to 10 per business, test and live together. See Webhooks to verify signatures.",
      "item": [
        {
          "name": "Create a webhook endpoint",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/webhook_endpoints",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "webhook_endpoints"
              ]
            },
            "description": "The 201 response includes the signing secret . Store it: it is never returned again, not even when the request is replayed with the same Idempotency-Key . If you lose it, delete the endpoint and create a new one. Live endpoints need an approved business verification.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://example.com/webhooks/monerail\",\n  \"events\": [\n    \"collection.succeeded\",\n    \"payout.*\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "201 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/webhook_endpoints",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "webhook_endpoints"
                  ]
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"9a661b6d-2895-414e-b1d1-51e473582cbb\",\n  \"object\": \"webhook_endpoint\",\n  \"livemode\": false,\n  \"url\": \"https://example.com/webhooks/monerail\",\n  \"events\": [\n    \"collection.succeeded\",\n    \"payout.*\"\n  ],\n  \"status\": \"enabled\",\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"secret\": \"whsec_9b89c8bdc0b89f67637e017c49f9539d68b2132ea7492041\"\n}"
            }
          ]
        },
        {
          "name": "Retrieve a webhook endpoint",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/webhook_endpoints/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "webhook_endpoints",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "9a661b6d-2895-414e-b1d1-51e473582cbb",
                  "description": "ID of the endpoint."
                }
              ]
            },
            "description": "The secret is not included."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/webhook_endpoints/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "webhook_endpoints",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "9a661b6d-2895-414e-b1d1-51e473582cbb",
                      "description": "ID of the endpoint."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"9a661b6d-2895-414e-b1d1-51e473582cbb\",\n  \"object\": \"webhook_endpoint\",\n  \"livemode\": false,\n  \"url\": \"https://example.com/webhooks/monerail\",\n  \"events\": [\n    \"collection.succeeded\",\n    \"payout.*\"\n  ],\n  \"status\": \"enabled\",\n  \"created_at\": \"2026-10-30T13:47:06.394Z\"\n}"
            }
          ]
        },
        {
          "name": "List webhook endpoints",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/webhook_endpoints?limit=10",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "webhook_endpoints"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "10"
                }
              ]
            },
            "description": "Newest first. Test and live endpoints are listed separately, by the mode of the key."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/webhook_endpoints?limit=10",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "webhook_endpoints"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "10"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"object\": \"list\",\n  \"url\": \"/v1/webhook_endpoints\",\n  \"data\": [\n    {\n      \"id\": \"9a661b6d-2895-414e-b1d1-51e473582cbb\",\n      \"object\": \"webhook_endpoint\",\n      \"livemode\": false,\n      \"url\": \"https://example.com/webhooks/monerail\",\n      \"events\": [\n        \"collection.succeeded\",\n        \"payout.*\"\n      ],\n      \"status\": \"enabled\",\n      \"created_at\": \"2026-10-30T13:47:06.394Z\"\n    }\n  ],\n  \"has_more\": false\n}"
            }
          ]
        },
        {
          "name": "Delete a webhook endpoint",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/webhook_endpoints/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "webhook_endpoints",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "9a661b6d-2895-414e-b1d1-51e473582cbb",
                  "description": "ID of the endpoint."
                }
              ]
            },
            "description": "Stops all deliveries to this URL, including pending retries."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/webhook_endpoints/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "webhook_endpoints",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "9a661b6d-2895-414e-b1d1-51e473582cbb",
                      "description": "ID of the endpoint."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"9a661b6d-2895-414e-b1d1-51e473582cbb\",\n  \"object\": \"webhook_endpoint\",\n  \"deleted\": true\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Events",
      "description": "Everything that happens on your account, the same objects that webhooks deliver. Use the list to catch up after downtime.",
      "item": [
        {
          "name": "List events",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/events?type=collection.succeeded&limit=10",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "events"
              ],
              "query": [
                {
                  "key": "type",
                  "value": "collection.succeeded"
                },
                {
                  "key": "limit",
                  "value": "10"
                }
              ]
            },
            "description": "Newest first."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/events?type=collection.succeeded&limit=10",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "events"
                  ],
                  "query": [
                    {
                      "key": "type",
                      "value": "collection.succeeded"
                    },
                    {
                      "key": "limit",
                      "value": "10"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"object\": \"list\",\n  \"url\": \"/v1/events\",\n  \"data\": [\n    {\n      \"id\": \"3ab70bfc-785d-45ce-99de-fd9ab67e5cd4\",\n      \"object\": \"event\",\n      \"type\": \"collection.succeeded\",\n      \"livemode\": false,\n      \"created_at\": \"2026-10-30T13:47:09.807Z\",\n      \"data\": {\n        \"object\": {\n          \"id\": \"3b8f6c1e-2a47-4d1b-9e35-7c0a9d2f4e61\",\n          \"object\": \"collection\",\n          \"livemode\": false,\n          \"status\": \"succeeded\",\n          \"amount\": 5000,\n          \"currency\": \"XAF\",\n          \"fee\": 125,\n          \"net\": 4875,\n          \"customer\": {\n            \"name\": \"Awa Ndiaye\",\n            \"phone\": \"237670000999\",\n            \"country\": \"CM\"\n          },\n          \"operator\": \"MTN\",\n          \"description\": \"Order 42\",\n          \"client_reference\": \"order_42\",\n          \"metadata\": {\n            \"order_id\": \"42\"\n          },\n          \"next_action\": null,\n          \"failure_code\": null,\n          \"failure_message\": null,\n          \"created_at\": \"2026-10-30T13:47:06.394Z\",\n          \"updated_at\": \"2026-10-30T13:47:09.807Z\"\n        }\n      }\n    }\n  ],\n  \"has_more\": true\n}"
            }
          ]
        },
        {
          "name": "Retrieve an event",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/events/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "events",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "3ab70bfc-785d-45ce-99de-fd9ab67e5cd4",
                  "description": "ID of the event."
                }
              ]
            },
            "description": ""
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/events/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "events",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "3ab70bfc-785d-45ce-99de-fd9ab67e5cd4",
                      "description": "ID of the event."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"3ab70bfc-785d-45ce-99de-fd9ab67e5cd4\",\n  \"object\": \"event\",\n  \"type\": \"collection.succeeded\",\n  \"livemode\": false,\n  \"created_at\": \"2026-10-30T13:47:09.807Z\",\n  \"data\": {\n    \"object\": {\n      \"id\": \"3b8f6c1e-2a47-4d1b-9e35-7c0a9d2f4e61\",\n      \"object\": \"collection\",\n      \"livemode\": false,\n      \"status\": \"succeeded\",\n      \"amount\": 5000,\n      \"currency\": \"XAF\",\n      \"fee\": 125,\n      \"net\": 4875,\n      \"customer\": {\n        \"name\": \"Awa Ndiaye\",\n        \"phone\": \"237670000999\",\n        \"country\": \"CM\"\n      },\n      \"operator\": \"MTN\",\n      \"description\": \"Order 42\",\n      \"client_reference\": \"order_42\",\n      \"metadata\": {\n        \"order_id\": \"42\"\n      },\n      \"next_action\": null,\n      \"failure_code\": null,\n      \"failure_message\": null,\n      \"created_at\": \"2026-10-30T13:47:06.394Z\",\n      \"updated_at\": \"2026-10-30T13:47:09.807Z\"\n    }\n  }\n}"
            }
          ]
        },
        {
          "name": "Redeliver an event",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/events/:id/retry",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "events",
                ":id",
                "retry"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "3ab70bfc-785d-45ce-99de-fd9ab67e5cd4",
                  "description": "ID of the event."
                }
              ]
            },
            "description": "Queues a new delivery of the event to every endpoint subscribed to it. redeliveries is the number of endpoints. This is the only way to redeliver an event: the dashboard has no redeliver button. Limited to 10 calls per event per hour."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/events/:id/retry",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "events",
                    ":id",
                    "retry"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "3ab70bfc-785d-45ce-99de-fd9ab67e5cd4",
                      "description": "ID of the event."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"3ab70bfc-785d-45ce-99de-fd9ab67e5cd4\",\n  \"object\": \"event\",\n  \"redeliveries\": 1\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Reference data",
      "description": "The operators and banks you can use, from the payment partner, for the mode of your key. Answers are cached for up to 10 minutes.",
      "item": [
        {
          "name": "List operators",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/operators?currency=XAF",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "operators"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "XAF"
                }
              ]
            },
            "description": "Mobile money operators open for a currency, in every country of that currency, or in one country with country . authorization tells how customers approve: NONE , PIN (on the phone), OTP (code to send with authorize) or REDIRECT (payment page). Use code with the matching country when you create a collection or a payout."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/operators?currency=XAF",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "operators"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "XAF"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"object\": \"list\",\n  \"url\": \"/v1/operators\",\n  \"data\": [\n    {\n      \"object\": \"operator\",\n      \"code\": \"MTN\",\n      \"name\": \"MTN Mobile Money\",\n      \"country\": \"CM\",\n      \"currency\": \"XAF\",\n      \"authorization\": [\n        \"PIN\"\n      ],\n      \"ussd_code\": \"*126#\"\n    },\n    {\n      \"object\": \"operator\",\n      \"code\": \"ORANGE\",\n      \"name\": \"Orange Money\",\n      \"country\": \"CM\",\n      \"currency\": \"XAF\",\n      \"authorization\": [\n        \"OTP\"\n      ],\n      \"ussd_code\": \"#150*50#\"\n    }\n  ],\n  \"has_more\": false\n}"
            }
          ]
        },
        {
          "name": "List banks",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/banks?country=CM",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "banks"
              ],
              "query": [
                {
                  "key": "country",
                  "value": "CM"
                }
              ]
            },
            "description": "Banks you can pay out to in a country. Use code , unchanged, as recipient.bank_code ."
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/banks?country=CM",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "banks"
                  ],
                  "query": [
                    {
                      "key": "country",
                      "value": "CM"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"object\": \"list\",\n  \"url\": \"/v1/banks\",\n  \"data\": [\n    {\n      \"object\": \"bank\",\n      \"code\": \"10005\",\n      \"name\": \"Afriland First Bank\",\n      \"country\": \"CM\"\n    }\n  ],\n  \"has_more\": false\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Test helpers",
      "description": "Endpoints that simulate what the card issuer would do. They only work with a test key ( mr_test_… ) and return 400 test_mode_only otherwise.",
      "item": [
        {
          "name": "Simulate a verification decision (test mode only)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/test/cardholders/:id/verification",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "test",
                "cardholders",
                ":id",
                "verification"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "5df6acd9-4bac-4e19-869c-fcde6b79f389",
                  "description": "ID of the cardholder."
                }
              ]
            },
            "description": "Approves or rejects a cardholder whose verification is in_review . The status changes within seconds and cardholder.kyc_updated is sent.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"result\": \"rejected\",\n  \"reason\": \"Name/dob mismatch\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "202 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/test/cardholders/:id/verification",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "test",
                    "cardholders",
                    ":id",
                    "verification"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "5df6acd9-4bac-4e19-869c-fcde6b79f389",
                      "description": "ID of the cardholder."
                    }
                  ]
                }
              },
              "status": "Accepted",
              "code": 202,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"5df6acd9-4bac-4e19-869c-fcde6b79f389\",\n  \"object\": \"cardholder\",\n  \"livemode\": false,\n  \"type\": \"customer\",\n  \"first_name\": \"Awa\",\n  \"last_name\": \"Ndiaye\",\n  \"email\": \"awa@example.com\",\n  \"phone\": \"+237670000999\",\n  \"country\": \"CM\",\n  \"city\": \"Douala\",\n  \"birth_date\": \"1991-02-03\",\n  \"id_document\": \"national_id\",\n  \"id_number_last4\": \"3408\",\n  \"verification\": {\n    \"status\": \"in_review\",\n    \"reason\": null,\n    \"verified_at\": null\n  },\n  \"created_at\": \"2026-10-30T13:47:06.394Z\",\n  \"updated_at\": \"2026-10-30T13:47:09.807Z\"\n}"
            }
          ]
        },
        {
          "name": "Simulate a card payment (test mode only)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Reuse the same value to retry this exact request safely.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/test/cards/:id/authorizations",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "test",
                "cards",
                ":id",
                "authorizations"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                  "description": "ID of the card."
                }
              ]
            },
            "description": "Simulates a merchant charging the card. An approved payment and its fee appear on the card within seconds, with a card.transaction event. A declined one sends card.authorization_declined , charges nothing and returns authorization: null .",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 400,\n  \"merchant\": \"Notion\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "202 example",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/v1/test/cards/:id/authorizations",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "test",
                    "cards",
                    ":id",
                    "authorizations"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "ce2f0aea-7f87-4cbd-8383-03129d1253e0",
                      "description": "ID of the card."
                    }
                  ]
                }
              },
              "status": "Accepted",
              "code": 202,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"object\": \"test_authorization\",\n  \"card\": \"ce2f0aea-7f87-4cbd-8383-03129d1253e0\",\n  \"amount\": 400,\n  \"currency\": \"USD\",\n  \"merchant\": \"Notion\",\n  \"status\": \"approved\",\n  \"authorization\": \"auth_7731\"\n}"
            }
          ]
        }
      ]
    }
  ]
}