CreddotDocsCreddot Docs

Validate a bill customer

Validates a meter, smartcard, internet account, or phone number with the selected provider before payment.

POST
/api/v1/bills/validate

Validates a meter, smartcard, internet account, or phone number with the selected provider before payment.

Authorization

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 ).

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
provider?string
Default"VTPASS"
Value in"VTPASS""FLUTTERWAVE"
serviceCode*string

VTpass serviceID or Flutterwave biller_code.

productCode?string

VTpass variation/type or Flutterwave item_code.

customerId*string

Meter, smartcard, account, or phone number expected by the selected product.

Response Body

application/json
  1. response
provider*string
Value in"VTPASS""FLUTTERWAVE"
valid*boolean
customerName?string
address?string
minimumAmountMinor?string
maximumAmountMinor?string
message?string
Example Request
curl -X POST 'https://api.creddot.com/api/v1/bills/validate' \  -H 'x-idempotency-key: string' \  -H 'Content-Type: application/json' \  -d '{  "serviceCode": "ikeja-electric",  "customerId": "1111111111111"}'
Example Response
{  "provider": "VTPASS",  "valid": true,  "customerName": "string",  "address": "string",  "minimumAmountMinor": "string",  "maximumAmountMinor": "string",  "message": "string"}