Transactions

Base path: /v1/business/transactions Authentication: API Key (Authorization: <secret-key>)


Endpoints

Method
Path
Auth
Description

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

Returns 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

Parameter
Type
Required
Description

reference

string

Yes

The unique transaction reference returned on creation

Example Request


Response


Response Fields

Field
Type
Description

id

string (uuid)

Internal transaction ID

reference

string

Your supplied reference, used for reconciliation

status

string

Current transaction status. See status values

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

Status
Terminal
Description

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, or MISMATCH, no further updates occur. Stop polling at that point.


CRYPTO vs FIAT — Response Differences

Field
CRYPTO
FIAT

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

Status
Message
Cause

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.

Approach
When to use

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

Refreshes 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

Parameter
Type
Required
Description

reference

string

Yes

The unique transaction reference returned on creation

Query Parameters

Parameter
Type
Required
Description

fiatCurrency

string

No

Fiat currency to use for amount recalculation. Defaults to NGN. See values.

Example Request


Response


Response Fields

Field
Type
Description

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

Status
Message
Cause

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

Value
Currency

NGN

Nigerian Naira

USD

US Dollar


Code Examples

Node.js

cURL

Last updated