Skip to main content
Every webhook uses the eventId, eventType, data, and timestamp envelope described in the Webhooks Overview.

Checkout Events

Checkout events are emitted when a Checkout Wallet reaches a terminal state. Use data.reference to reconcile the event to your order and eventId to deduplicate deliveries.

checkout.completed

Fired after the exact amountPayable is confirmed and merchant settlement is recorded. This is the only checkout event on which you should fulfill an order.
sender.bankCode is exposed when the provider supplies a sender bank code. sender.bankName can be null when the upstream provider does not supply the bank name.

checkout.failed

Fired when checkout processing fails, including an incoming transfer that does not equal amountPayable. Do not fulfill the order.

checkout.expired

Fired when a pending checkout reaches its expiry or is manually expired.

checkout.reversed

Fired after an incoming checkout payment is returned to the sender. This can follow a failed temporary-account payment, such as an amount mismatch.

Payout Events

Master-wallet payout events are emitted when a payout reaches a terminal state. Use data.reference to reconcile with your request and data.payoutId when retrieving the payout through the API.

payout.completed

Fired when the payout completes successfully. A same-business transfer may produce this event immediately during the create request.

payout.failed

Fired when a payout fails and does not have a confirmed full reversal. Do not automatically create a replacement payout. Retrieve the payout and contact support if funds remain reserved.

payout.reversed

Fired when the payout does not complete and FossaPay confirms that the reserved payout amount and fee have been returned to the merchant master wallet.
The route value is one of same_business, fossapay_cross_business, or external_bank. Same-business payouts have a zero fee.

Bulk Payout Events

Bulk payout events are terminal and refer to the FossaPay batch with data.batchId. Verify the webhook signature and deduplicate deliveries using the envelope eventId.

payout.batch.completed

Fired when every item in an immediate batch completes successfully.

payout.batch.failed

Fired when the batch reaches a failed terminal state. Do not automatically submit a replacement batch; retrieve the latest batch status first.

Deposit Events

deposit.completed

Fired when a deposit is completed successfully.

Crypto Deposit

NGN Deposit

Withdrawal Events

withdrawal.completed

Fired when a withdrawal is completed successfully.

withdrawal.failed

Fired when a withdrawal fails.

Transfer Events

transfer.completed

Fired when a transfer is completed successfully.

transfer.failed

Fired when a transfer fails.

Wallet Events

wallet.balance.updated

Fired when a wallet balance is updated.

Example Handler