For the complete documentation index, see llms.txt. This page is also available as Markdown.

Webhook Events Reference

Complete reference of all webhook events and their payload schemas.

This page documents every webhook event IvoryPay can send, along with the exact payload schema for each.

Payload envelope

All webhook payloads follow this structure:

{
  "event": "event.name",
  "data": { ... }
}

On-Ramp Events

onramp.success

Fired when an on-ramp transaction completes successfully — crypto has been delivered to the user's wallet.

{
  "event": "onramp.success",
  "data": {
    "reference": "550e8400-e29b-41d4-a716-446655440000",
    "amount": 31.25,
    "platformFeeInCrypto": 0.15,
    "businessFeeInCrypto": 0,
    "gasFee": 0.5,
    "walletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD68",
    "network": "BSC_MAINNET",
    "token": "USDT",
    "transactionHash": "0xabc123...",
    "status": "SUCCESS",
    "customer": {
      "refCode": "abc123def4",
      "email": "amina@example.com",
      "userId": "user-uuid",
      "firstName": "Amina",
      "lastName": "Okafor",
      "context": "LIVE",
      "createdAtDateOnly": "2026-03-26",
      "createdAt": "2026-03-26T12:00:00.000Z"
    }
  }
}
Field
Type
Description

reference

string

Your transaction reference

amount

number

Crypto amount delivered

platformFeeInCrypto

number

IvoryPay platform fee in crypto

businessFeeInCrypto

number

Your business fee in crypto

gasFee

number

Blockchain gas fee

walletAddress

string

Destination wallet

network

string

Blockchain network

token

string

Crypto token

transactionHash

string

On-chain transaction hash

status

string

Transaction status

customer

object

Customer details


onramp.fiatPaymentReceived

Fired when the user's fiat payment has been detected and confirmed.


onramp.cryptoPayoutProcessing

Fired when the crypto payout is being processed (sent on-chain).

Field
Type
Description

reference

string

Your transaction reference

amount

number

Crypto amount to be delivered

network

string

Blockchain network

token

string

Crypto token

status

string

Transaction status

walletAddress

string

Destination wallet

customer

object

Customer details


onramp.failed

Fired when an on-ramp transaction fails.


Off-Ramp Events

offramp.success

Fired when fiat has been successfully paid out to the user's bank account.


offramp.cryptoPaymentReceived

Fired when the user's crypto deposit has been detected on-chain.


offramp.failed

Fired when an off-ramp transaction fails.


offramp.declined

Fired when an off-ramp transaction is declined (e.g., compliance check failure).


Deposit Events

deposit.received

Fired when fiat is deposited into a virtual account.

Field
Type
Description

reference

string

Deposit reference

processorReference

string

Payment processor's reference

accountNumber

string

Virtual account that received the deposit

receivedAmount

number

Gross amount received

settledAmount

number

Net amount after processor fees

sourceAccountNumber

string

Sender's bank account

sourceAccountName

string

Sender's account name

sourceBankName

string

Sender's bank

paymentDate

string

ISO 8601 payment timestamp


Settlement Events

All settlement payloads include a reference field copied from the joined deposit (deposit.reference) — the settlement entity itself has no reference column.

settlement.awaitingSettlementAccount

Settlement waiting for account configuration.

settlement.converting

Fiat-to-crypto conversion in progress.

settlement.payoutInitiated

Crypto payout queued.

settlement.payoutProcessing

Crypto being sent on-chain.

settlement.success

Settlement completed — crypto delivered.

settlement.failed

Settlement failed — check failureReason.


Customer object (shared across events)

The customer object appears in on-ramp and off-ramp webhook payloads:

Field
Type
Description

refCode

string

IvoryPay customer reference

email

string

Customer's email

userId

string

Business user ID

firstName

string

Customer's first name

lastName

string

Customer's last name

context

string

TEST or LIVE

createdAtDateOnly

string

Date customer was created

createdAt

string

Full ISO 8601 timestamp

Last updated