Initialize a server-side collection
Requires collections:create. Supports bank transfer, USSD, and QR without accepting raw card data. Use POST /v1/checkout/sessions for card-capable hosted checkout. Atomically records a pending transaction before provider initialization. Retry with the same key and body to replay the initial response.
Requires collections:create. Supports bank transfer, USSD, and QR without accepting raw card data. Use POST /v1/checkout/sessions for card-capable hosted checkout. Atomically records a pending transaction before provider initialization. Retry with the same key and body to replay the initial response.
api-keyx-api-key<token>Your API key: ck_test_... for test mode, ck_live_... for live. Send it with x-api-secret (or Authorization: Bearer ).
x-api-secret?stringRecommended: API secret sent over HTTPS. You may send it as Authorization: Bearer instead. If supplied, x-timestamp and x-signature are not required.
x-timestamp?stringLegacy signed mode: Unix time in milliseconds; maximum clock skew five minutes.
x-signature?stringLegacy signed mode: HMAC-SHA256(secret, timestamp.METHOD.url.idempotencyKey.bodyHash).
x-idempotency-key*string1–128 letters/digits or ._:-. Same key and payload replay for 24 hours; conflicting, in-flight, or expired keys return 409. Never change a key to retry an uncertain payment.
application/json- body
amountMinor*stringcurrency*stringchannel*stringCard payments are available only through hosted checkout.
"BANK_TRANSFER""USSD""QR"reference?stringcustomerEmail?stringcustomerPhone?stringRequired when customerEmail is omitted. Paga requires at least one payer identifier.
customerName?stringlength <= 120callbackUrl?stringapplication/json- response
id*stringtransactionId*stringUse this ID for transaction lookup and sandbox completion. Payout id is a separate payout record ID.
reference*stringstatus*string"PENDING""PROCESSING""SUCCESS""FAILED"amountMinor*stringInteger minor units, encoded as a string.
currency*stringprovider*stringproviderReference*string|nullrequiresReconciliation*booleanTrue when provider outcome is uncertain. Do not retry with a new key; query the transaction or reconcile it.
feeMinor*stringCreddot fee charged to the business in minor units.
totalDebitMinor*stringWallet debit for payouts; equals amountMinor for incoming transfers.
netCreditMinor*stringWallet credit for incoming transfers; equals amountMinor for payouts.
paymentUrl*|Provider checkout URL. Current sandbox URLs are placeholders.
uricurl -X POST 'https://api.creddot.com/api/v1/payments/collections' \ -H 'x-idempotency-key: string' \ -H 'Content-Type: application/json' \ -d '{ "amountMinor": "150000", "currency": "NGN", "channel": "BANK_TRANSFER"}'{ "id": "string", "transactionId": "string", "reference": "string", "status": "PENDING", "amountMinor": "100000", "currency": "NGN", "provider": "PAGA", "providerReference": "string", "requiresReconciliation": true, "feeMinor": "1500", "totalDebitMinor": "101500", "netCreditMinor": "98500", "paymentUrl": "http://example.com"}