Skip to main content

Overview

Daya sends merchant webhooks for funding account, deposit, transfer, withdrawal, and customer verification lifecycle changes. Every webhook uses the same envelope:
event tells you what changed, id identifies the webhook event for idempotency, and data is the public API response shape for the resource that changed.

Common Payload Fields

event
string
Event type for the lifecycle transition that occurred.
id
string
Unique webhook event identifier. Use this value for idempotency.
data
object
Resource payload for the event. The shape follows the resource response linked below.
timestamp
string
RFC3339 timestamp for when the event was emitted.

Data Shapes

Webhook events are documented here at the event-name level. The data object follows the same public response object returned by the corresponding resource endpoint.
If you need the latest state while processing a webhook, fetch the resource again by the ID in data.

Deposit Events

Deposit payloads for NGN and crypto receive flows include funding_account_id. When a developer fee is configured, deposit payloads include developer_fee and customer_amount. The developer fee is deducted before the final customer amount is calculated; it is not added as a separate charge. Track the merchant-facing settlement lifecycle with deposit.* events.

Funding Account Events

Funding account events track receive-instruction provisioning and disablement. The data object is the public funding account response.

Transfer Events

Transfer events are emitted for POST /v1/transfers and follow the merchant-created transfer lifecycle.

Withdrawal Events

Customer Verification Events

funding_account.* and customer.verification.* events use the same webhook envelope as money movement events. Funding account payloads use the public funding account response shape.

Lifecycle Examples

These examples show how webhook names follow the public resource being reconciled.

Funding Account Deposit

When a customer sends NGN to a funding account’s virtual account, the incoming money is a deposit. The payment detail is the funding account; the money movement is tracked with deposit.* events.

Internal Balance to NGN Bank Transfer

When a merchant sends withdrawal balance to an NGN bank account through POST /v1/transfers, the public resource is a transfer.

Crypto Wallet Withdrawal

When a merchant sends stablecoin or crypto from the withdrawal balance to an on-chain wallet, the public resource is a withdrawal.

Payload Examples

These examples are intentionally representative. The full data object follows the linked resource response shape for each event family.

Funding Account Active

Deposit Completed

Transfer Completed

Customer Verification Approved

Next Steps

Webhook Overview

Delivery guarantees, retries, and handler guidance

Webhook Verification

Verify the HMAC signature on incoming requests