CreddotDocsCreddot Docs
API referenceTransactions

Simulate a final sandbox collection or payout outcome

Requires sandbox:simulate and a sandbox API key. SUCCESS posts the entry; FAILED reverses it and releases payout funds. Repeating an outcome is safe; changing a terminal outcome returns 409. No real money moves.

POST
/api/v1/sandbox/transactions/{id}/complete

Requires sandbox:simulate and a sandbox API key. SUCCESS posts the entry; FAILED reverses it and releases payout funds. Repeating an outcome is safe; changing a terminal outcome returns 409. No real money moves.

Authorization

api-key
headerx-api-key<token>

Your API key: ck_test_... for test mode, ck_live_... for live. Send it with x-api-secret (or Authorization: Bearer ).

Path Parameters

id*string

Pending sandbox transaction ID to finalize.

Header Parameters

x-api-secret?string

Recommended: 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?string

Legacy signed mode: Unix time in milliseconds; maximum clock skew five minutes.

x-signature?string

Legacy signed mode: HMAC-SHA256(secret, timestamp.METHOD.url.idempotencyKey.bodyHash).

x-idempotency-key*string

1–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.

Request Body

application/json
  1. body
status*string
Value in"SUCCESS""FAILED"

Response Body

application/json
  1. response
id*string
transactionId*string

Use this ID for transaction lookup and sandbox completion. Payout id is a separate payout record ID.

reference*string
status*string
Value in"PENDING""PROCESSING""SUCCESS""FAILED"
amountMinor*string

Integer minor units, encoded as a string.

currency*string
provider*string
providerReference*string|null
requiresReconciliation*boolean

True when provider outcome is uncertain. Do not retry with a new key; query the transaction or reconcile it.

feeMinor*string

Creddot fee charged to the business in minor units.

totalDebitMinor*string

Wallet debit for payouts; equals amountMinor for incoming transfers.

netCreditMinor*string

Wallet credit for incoming transfers; equals amountMinor for payouts.

type*string
Value in"COLLECTION""PAYOUT""REFUND""REVERSAL""BILL_PAYMENT"
environment*string
Value in"SANDBOX""LIVE"
payoutId*string|null
paymentUrl*|
Formaturi
direction*string
Value in"MONEY_IN""MONEY_OUT"
channel*string|null
customerName*string|null
customerEmail*|
Formatemail
providerFeeMinor*string

Upstream provider fee in minor units.

feeMethod*string|null
feeRuleId*string|null
sender*
sessionId*|

NIBSS/Paga session identifier when supplied by the provider.

settlement*
payout*|null
billPayment*|null
ledgerEntries*array<>
createdAt*string
Formatdate-time
updatedAt*string
Formatdate-time
Example Request
curl -X POST 'https://api.creddot.com/api/v1/sandbox/transactions/string/complete' \  -H 'x-idempotency-key: string' \  -H 'Content-Type: application/json' \  -d '{  "status": "SUCCESS"}'
Example Response
{  "id": "string",  "transactionId": "string",  "reference": "string",  "status": "PENDING",  "amountMinor": "100000",  "currency": "NGN",  "provider": "PAGA",  "providerReference": "string",  "requiresReconciliation": true,  "feeMinor": "1500",  "totalDebitMinor": "101500",  "netCreditMinor": "98500",  "type": "COLLECTION",  "environment": "SANDBOX",  "payoutId": "string",  "paymentUrl": "http://example.com",  "direction": "MONEY_IN",  "channel": "BANK_TRANSFER",  "customerName": "string",  "customerEmail": "user@example.com",  "providerFeeMinor": "5375",  "feeMethod": "string",  "feeRuleId": "string",  "sender": {    "name": "string",    "bankName": "string",    "accountNumberMasked": "string"  },  "sessionId": "string",  "settlement": {    "status": "string",    "reference": "string",    "settledAt": "2019-08-24T14:15:22Z"  },  "payout": {},  "billPayment": {},  "ledgerEntries": [    {}  ],  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z"}