Skip to main content
POST
Fund wallet

Overview

POST /wallets/fund tops up a wallet by charging a mobile-money account. It is functionally similar to POST /payment/collect but is wallet-centric: you specify which wallet to credit by ID rather than by (country, currency). The call returns immediately with a transaction record; the final outcome reaches you asynchronously (operator OTP / USSD may be required).

When to use it

  • Top up a specific wallet from your own funds (e.g. via your treasury phone).
  • Use when you already know the wallet you want to credit (rather than letting Cartevo route by country/currency).
For end-user collection (charging your customers), use POST /payment/collect instead.

Prerequisites

  • The target wallet must belong to your company and be is_active: true.
  • The mobile-money account must have sufficient balance to cover amount plus the operator’s fee.

Request

Headers

Query parameters

Body

Orange Money workflow (Burkina Faso & Senegal)

For Orange Money in Burkina Faso and Senegal, the payer must generate a one-time code (OTP) themselves and you submit it in otpCode:
  1. The payer dials the Orange USSD code to generate the OTP:
    • Burkina Faso: *144*4*6*<amount># (where <amount> is the amount)
    • Senegal: #144*391#
  2. The payer gives you the OTP.
  3. You call POST /wallets/fund with operator: "orange", the Orange phone number, and the OTP in otpCode.
The OTP is short-lived and single-use. If it expires the funding fails — the payer generates a fresh one and you retry with a new trxId.

Response

200 — Funding initiated

Error responses

Webhooks fired

  • A status update fires when the funding settles or fails (same shape as payment.collect).

Code examples

cURL

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
walletId
string<uuid>
required

ID of the wallet to fund.

amount
number
required

Amount to fund, in the wallet currency.

Required range: x >= 0.01
currency
string
required

Currency of the funding amount.

Example:

"XAF"

phone
string

Mobile-money phone number being charged.

Example:

"237600000000"

operator
string

Mobile-money operator. Defaults to mtn if omitted.

Example:

"mtn"

userId
string<uuid>

Optional ID of the user initiating the funding.

trxId
string

Optional client-supplied transaction reference. Auto-generated (UUID) if omitted.

reason
string

Optional free-text reason, persisted on the transaction.

reason_category
string

Optional categorical reason code.

Response

Funding request initiated successfully. The transaction is pending.

success
boolean
Example:

true

statusCode
integer
Example:

200

message
string
Example:

"Data retrieved successfully"

data
object