Transactions
Base path: /v1/business/transactions
Authentication: API Key (Authorization: <secret-key>)
Endpoints
GET
/v1/business/transactions/:reference/verify
API Key
Verify the current status of a transaction
GET
/v1/business/transactions/refresh/:reference
API Key
Refresh the payment session and recalculate amounts
GET /v1/business/transactions/:reference/verify
/v1/business/transactions/:reference/verifyReturns the live status and settlement details of a transaction identified by its reference.
Use this endpoint to:
Poll for payment confirmation while waiting for a webhook
Display a payment result screen after your customer completes a payment
Confirm a transaction was settled before fulfilling an order
Request
Headers
Authorization: <your-secret-api-key>Path Parameters
reference
string
Yes
The unique transaction reference returned on creation
Example Request
Response
Response Fields
id
string (uuid)
Internal transaction ID
reference
string
Your supplied reference, used for reconciliation
type
string
Payment channel type — CRYPTO or FIAT
channel
string
Settlement channel — ON_CHAIN or OFF_CHAIN
crypto
string
Token used for this transaction — e.g. USDT, USDC
settledAmountInCrypto
number
Net crypto amount credited to your wallet after fees
expectedAmountInCrypto
number
Exact amount the customer was asked to send
receivedAmountInCrypto
number
Actual amount received on-chain or via bank
amountInBaseFiat
number
Original fiat amount the transaction was created with
baseFiat
string
Fiat currency of amountInBaseFiat — e.g. NGN, USD
address
string | null
Blockchain address assigned (CRYPTO transactions only)
chain
string | null
Blockchain network — e.g. BSC_MAINNET, POLYGON (CRYPTO only)
expiresAt
string | null
ISO timestamp when the payment window closes (CRYPTO only)
completedAt
string | null
ISO timestamp when the transaction reached a terminal status
createdAt
string
ISO timestamp when the transaction was created
Transaction Status Values
PENDING
No
Awaiting payment from the customer
SUCCESS
Yes
Payment confirmed and settled to your wallet
FAILED
Yes
Transaction failed during processing
EXPIRED
Yes
Payment window closed with no payment received
MISMATCH
Yes
Customer sent a different amount than expected
Terminal statuses will not change. Once a transaction reaches
SUCCESS,FAILED,EXPIRED, orMISMATCH, no further updates occur. Stop polling at that point.
CRYPTO vs FIAT — Response Differences
type
"CRYPTO"
"FIAT"
channel
"ON_CHAIN"
"OFF_CHAIN"
address
Blockchain wallet address
null
chain
Blockchain network (e.g. BSC_MAINNET)
null
expiresAt
ISO timestamp of the payment window expiry
null
receivedAmountInCrypto
Actual on-chain amount received
Amount received via bank transfer (in crypto equivalent)
Error Responses
401
Unauthorized
Missing or invalid API key
404
Transaction not found
No transaction matches the provided reference
Polling vs Webhooks
Webhooks are the recommended approach for detecting payment status changes — they are near real-time and reduce unnecessary load. Use verification polling only as a fallback.
Webhooks
Primary method. IvoryPay pushes status updates to your registered webhook URL
Polling
Fallback. Poll every 5–10 seconds until you reach a terminal status
See Webhooks for event types, signature verification, and setup.
Integration Flow
Code Examples
Node.js
Node.js — Polling with backoff
cURL
Python
GET /v1/business/transactions/refresh/:reference
/v1/business/transactions/refresh/:referenceRefreshes an active payment session for a CRYPTO transaction. Use this when the original payment window has expired or when you want to recalculate the crypto amount at the current exchange rate before the customer pays.
On a successful refresh:
A new session is created with a fresh 10-minute payment window
The crypto amount is recalculated at the current market rate
The same wallet address remains valid for the new session
This endpoint is only applicable to CRYPTO transactions. FIAT transactions do not have a refreshable session.
Request
Headers
Path Parameters
reference
string
Yes
The unique transaction reference returned on creation
Query Parameters
Example Request
Response
Response Fields
firstName
string
Customer's first name
lastName
string
Customer's last name
email
string
Customer's email address
refCode
string
Customer's reference code
reference
string
Transaction reference
transferDetails.token
string
Crypto token — e.g. USDT, USDC
transferDetails.blockchain
string
Blockchain network — e.g. BSC_MAINNET, POLYGON
transferDetails.amount
number
Recalculated crypto amount the customer must send
transferDetails.amountPayable
number
Same as amount — the exact payable amount
transferDetails.platformFee
number
IvoryPay's fee included in amount
transferDetails.businessFee
number
Your configured business fee included in amount
transferDetails.walletAddress
string
Blockchain address the customer sends funds to
transferDetails.fiatAmount
number
Fiat equivalent of amount in the requested fiatCurrency
transferDetails.expiresAt
string
ISO timestamp when the new session expires
transferDetails.duration
number
Session validity in seconds (600)
transferDetails.sessionId
string
New session identifier
transferDetails.createdAt
string
ISO timestamp when the session was created
Error Responses
400
Invalid transaction reference
No transaction matches the provided reference
400
Invalid fiat currency
The supplied fiatCurrency is not supported
401
Unauthorized
Missing or invalid API key
fiatCurrency Values
fiatCurrency ValuesNGN
Nigerian Naira
USD
US Dollar
Code Examples
Node.js
cURL
Last updated