Skip to main content

Simulate Wallet Funding

Credit your workspace wallet with a simulated bank deposit. This endpoint is only available in the Sandbox environment. Use it during integration testing to add funds without a real bank transfer.


Endpoint​

POST/v1/wallet/simulate

Required permission: wallet:fund:simulate

danger

Calling this endpoint in the Production environment returns a 403 Forbidden error. It is strictly for Sandbox use.


Request Body​

FieldTypeRequiredDescription
amountInteger✅Amount to deposit in ₦. Must be greater than zero.
paymentMethodString✅Simulated payment route (e.g. "Bank Transfer", "Card"). Used for display purposes only.
bankNameString✅Name of the simulated bank (e.g. "GTBank"). Appears in the transaction description.
bankReferenceString✅A simulated transaction reference from the bank (e.g. "FBN2026070100123"). Stored on the ledger entry.

Response​

On success, returns the created transaction entry. Your wallet balance is updated atomically.

FieldTypeDescription
idStringUnique ledger transaction ID (e.g. TNX_A1B2C3D4).
dateStringISO 8601 UTC timestamp of when the deposit was processed.
typeStringAlways TOPUP for this endpoint.
descriptionStringAuto-generated description (e.g. "Prepaid Deposit via GTBank").
amountIntegerCredited amount in ₦.
balanceAfterIntegerWallet balance after this transaction.
referenceStringThe bankReference you provided.

What Happens Under the Hood​

The deposit and wallet balance update are committed atomically using a DynamoDB transaction. If the balance was already updated by another process between the read and write, the operation retries automatically to prevent double-credits.

Dispatching a wallet.funded webhook event to your registered endpoint is also triggered on success.


{
"amount": 50000,
"paymentMethod": "Bank Transfer",
"bankName": "GTBank",
"bankReference": "GTB2026070100987"
}