Skip to main content
Use a customer NGN wallet when you want a persistent bank account tied to an individual customer. For a one-time order with a fixed amount and expiry, use Checkout Wallet instead.

Collection flow

1

Create the individual customer

Call POST /api/v1/customers and store the customer UUID.
2

Create the NGN wallet

Call POST /api/v1/wallets/fiat/create with the customer UUID, your wallet name, and your wallet reference.
3

Display the account details

Show the returned bank, account name, and account number to that customer.
4

Receive a signed event

FossaPay sends deposit.completed after a deposit is successfully processed.
5

Reconcile and credit once

Deduplicate the event, persist its transaction identifiers, and update your own ledger exactly once.

Create the customer and wallet

Store the returned wallet ID and account number with your customer mapping. The wallet is persistent; do not describe it to the customer as a one-time or expiring account.

Handle the deposit event

A webhook can be delivered more than once. Make eventId unique in your database and make the ledger update part of the same database transaction as recording the processed event.

Reconcile a deposit

Use the wallet’s transaction list when a webhook is delayed or an operator needs an account statement. Retrieve a single transaction by ID when you already have the identifier from a webhook or support case.
Do not synthesize transaction status from webhook delivery status. A failed webhook delivery means your endpoint was not reached or did not return 2xx; it does not mean the financial transaction failed.

Persistent wallet versus checkout

Production checklist

  • Create an individual customer and persist its UUID.
  • Store the FossaPay wallet ID, account number, and your wallet reference.
  • Keep API keys and webhook secrets server-side.
  • Verify the signature over JSON.stringify(body.data).
  • Return 2xx quickly and process asynchronously.
  • Deduplicate by eventId and also retain the transaction reference.
  • Reconcile delayed notifications through wallet transaction endpoints.
  • Keep personal and bank information out of application logs where possible.

Create customer

Register the individual who owns the wallet.

Create NGN wallet

Provision the customer’s dedicated bank account.

Wallet transactions

Reconcile deposits and withdrawals.

Webhook handling

Verify, acknowledge, deduplicate, and monitor events.