Create Deposit Account

Generate a virtual account for accepting deposits. Funds received in this account will be automatically paid out to the merchant's account.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

callbackUrl

string | optional

The webhook URL where deposit notifications will be sent once a payment is received.

If provided, a POST request containing the deposit payload will be dispatched to this URL.


Webhook Payload Schema

When a deposit is received, Centiiv will send a POST request with the following JSON body:

{
  "type": "fiat",
  "amount": 50000, // in KOBO
  "timestamp": "2026-07-09T16:30:00.000Z",
  "requestId": "req_1234567890",
  "businessId": "65b2f1a9c8d7e6f5a4b3c2d1",
  "env": "live",
  "narration": "FND/JOHN DOE/REF123",
  "reference": "txn_9876543210",
  "currency": "NGN",
  "accountNumber": "9912345678",
  "senderAccountNumber": "0123456789",
  "senderAccountName": "JOHN DOE",
  "senderBank": "Access Bank",
  "sessionId": "12345678901234567890123456"
}
Field Definitions
FieldTypeDescription
typestringAlways "fiat" for bank transfer deposits.
amountnumberThe received amount in minor units (e.g., kobo for NGN).
timestampstringISO 8601 string of when the deposit was processed.
requestIdstringUnique identifier for this webhook trigger attempt.
businessIdstringThe ID of the merchant business.
envstringEnvironment mode ("live" or "test").
narrationstringThe narration or payment reference attached to the bank transfer.
referencestringUnique transaction reference.
currencystringThe currency of the transaction (e.g., "NGN").
accountNumberstring optionalThe virtual account number that received the deposit.
senderAccountNumberstring optionalThe bank account number of the sender.
senderAccountNamestring optionalThe name on the sender's bank account.
senderBankstring optionalThe bank name of the sender.
sessionIdstring optionalThe unique session ID for the transaction.

Webhook Signature Verification

Every webhook request includes an X-Centiiv-Signature header. This is an HMAC-SHA256 hash of the raw incoming request payload, generated using your active API Key as the secret.

const crypto = require('crypto');

// Use raw body buffer/string to compute the signature
const signatureHeader = req.headers['x-centiiv-signature'];
const apiKey = CENTIIV_API_KEY 

const expectedSignature = crypto
  .createHmac('sha256', apiKey)
  .update(rawBody)
  .digest('hex');

const isValid = crypto.timingSafeEqual(
  Buffer.from(signatureHeader, 'utf8'),
  Buffer.from(expectedSignature, 'utf8')
);

if (isValid) {
  // process webhook
}

Body Params
string
required

Name to carry on the virtual account

number
required

Expected amount for the deposit (in minor units, e.g., kobo for NGN)

number
required

Validity period of the virtual account in minutes

string

Web URL where deposit webhook are sent

Response

Language
Credentials
Bearer
JWT
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json