Skip to content
Authorization<token>

Use a public key (pk./pk_test.) for payment initialization. Use a secret key (sk./sk_test.) for sensitive operations (transfers, refunds, balance), or a restricted key (rk./rk_test.) scoped to specific permissions. The _test. variant of any key selects the sandbox environment — there is no separate sandbox URL. Never expose your secret key in client-side code.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

beneficiary*string
amount*number

Must be at least 0.01.

currency?string | null

Must match an existing stored value. Must be 3 characters.

description?string | null

Must not be greater than 255 characters.

reason?string | null

Must not be greater than 255 characters.

reference?string | null

Must not be greater than 255 characters.

metadata?object | null

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/transfers" \  -H "Content-Type: application/json" \  -d '{    "beneficiary": "architecto",    "amount": 39  }'
POST
/transfers
{
  "code": 202,
  "status": "Accepted",
  "message": "Transfer initiated",
  "transfer": {
    "id": "po_01JXXX",
    "reference": "N7vW4mX1kQ8",
    "amount": 10000,
    "currency": "XAF",
    "status": "pending",
    "complete": false,
    "created_at": "2026-01-15T14:00:00Z"
  }
}
{
  "code": 401,
  "status": "Unauthorized",
  "message": "Invalid API credentials"
}
{
  "code": 406,
  "status": "Not Acceptable",
  "message": "Private Key Required"
}
{
  "code": 422,
  "status": "Unprocessable Content",
  "errors": {
    "amount": [
      "The amount field is required."
    ]
  }
}
{
  "code": 429,
  "status": "Too Many Requests"
}