Bank transfer and USSD from your own UI
Server-side collections when you show payment instructions yourself.
If you already have your own payment screen and only need transfer or USSD details, create a collection from your server. For anything involving cards, use hosted checkout instead: the collections endpoint does not accept card details.
Create a collection
POST /payments/collections with the collections:create permission.
curl https://api.creddot.com/api/v1/payments/collections \
-H "x-api-key: $CREDDOT_API_KEY" \
-H "x-api-secret: $CREDDOT_API_SECRET" \
-H "x-idempotency-key: col-ORD-100001" \
-H "content-type: application/json" \
-d '{
"amountMinor": "150000",
"currency": "NGN",
"channel": "BANK_TRANSFER",
"reference": "ORD-100001",
"customerEmail": "customer@example.com",
"customerName": "Ada Okafor"
}'| Field | Notes |
|---|---|
channel | BANK_TRANSFER, USSD or QR |
customerEmail / customerPhone | At least one is required |
reference | Your unique reference; look the payment up with it later |
callbackUrl | Optional HTTPS URL for the provider's redirect |
The response has the Creddot transactionId, status (usually PENDING), the feeMinor you'll be charged and netCreditMinor that lands in your wallet. Show the customer the instructions from the response, then wait for the transaction.success webhook or poll GET /transactions/by-reference/{reference}.
Dedicated accounts
GET /virtual-accounts lists your business's dedicated collection accounts. Transfers into them are recorded as collections automatically and trigger transaction.success.