Billing
RDCPASS bills each organization for the production calls its applications make. Your Financial officer (or the Owner) chooses between two payment models — prepaid and postpaid — and manages top-ups, invoices and usage exports from the console. Sandbox is always free. Prices per service and scope are listed on the pricing page.
Prepaid or postpaid
| Prepaid | Postpaid | |
|---|---|---|
| How you pay | Top up a wallet in advance; each billable call is debited in real time. | Receive a monthly invoice for the previous month’s usage. |
| Currencies | Wallet held in USD or CDF | Invoices in USD or CDF |
| Payment methods | M-Pesa, Orange Money, Airtel Money, bank transfer, card | Bank transfer (card for invoices up to USD 5,000) |
| Payment terms | Pay before use | Net 30 |
| Spending control | Wallet balance; low-balance alerts | Credit limit set after financial due diligence; spending alerts |
| When you run out | 402 insufficient_balance | 402 credit_limit_reached |
| Best for | Start-ups, SMEs, seasonal or unpredictable volumes | Banks, telecom operators, large platforms with steady volumes |
| Volume tiers | Yes | Yes |
You can switch models at any time; the change applies from the next calendar month. Moving to postpaid requires financial due diligence (recent financial statements and a credit assessment).
Prepaid wallet
The Financial officer or Owner tops up the wallet from Billing → Wallet in the console. Funds are credited as follows:
| Method | Currencies | Credited |
|---|---|---|
| M-Pesa (Vodacom) | CDF, USD | Instantly, after approval on the payer’s phone |
| Orange Money | CDF, USD | Instantly, after approval on the payer’s phone |
| Airtel Money | CDF, USD | Instantly, after approval on the payer’s phone |
| Card (Visa, Mastercard) | USD | Instantly |
| Bank transfer | CDF, USD | Within 1–2 business days of receipt, using the transfer reference shown in the console |
Each billable production call debits the wallet in real time, at the moment the result is produced. Top-ups in a currency other than the wallet’s are converted at the Banque Centrale du Congo reference rate of the day, and the rate is shown on the receipt. Every top-up produces a receipt downloadable as PDF.
Low-balance alerts
Set a low-balance threshold in the console. When the balance falls below it, RDCPASS emails every Financial officer and the Owner and sends the billing.balance_low webhook to each application with a webhook URL, so your operations team can react automatically. The alert is sent again each time the balance crosses the threshold after a top-up.
{
"id": "evt_8b2d5f0e1a9c3746",
"object": "event",
"type": "billing.balance_low",
"livemode": true,
"created_at": "2026-09-26T16:40:03Z",
"data": {
"object": {
"object": "wallet",
"organization_id": "org_2a7f91c3e5",
"balance": {
"value": 184.5,
"currency": "USD"
},
"threshold": {
"value": 250.0,
"currency": "USD"
}
}
}
}Payment errors (402)
When an organization cannot pay for a production call, the call is rejected before any data is processed, with HTTP 402 and one of two codes. Rejected calls are never billed. Sandbox calls never return 402.
| Code | Model | Meaning | What to do |
|---|---|---|---|
| insufficient_balance | Prepaid | The wallet balance is too low for this call. | Top up the wallet. Calls succeed again as soon as the funds are credited. |
| credit_limit_reached | Postpaid | Usage in the current period has reached the credit limit. | Pay outstanding invoices or ask RDCPASS to review your credit limit. |
{
"error": "insufficient_balance",
"message": "The organization's prepaid wallet balance is too low for this request. Top up the wallet in the console to resume production calls."
}{
"error": "credit_limit_reached",
"message": "Usage for the current billing period has reached the organization's credit limit of USD 15,000.00."
}For asynchronous batches, balance is checked item by item: if the wallet runs out mid-batch, the remaining items fail with insufficient_balance and are not billed. Resubmit them after topping up. See Single, batch & async.
Postpaid invoicing
- Monthly invoice issued on the first business day of each month for the previous calendar month, in USD or CDF as agreed.
- Net 30: payment is due 30 days after the invoice date, by bank transfer to the account shown on the invoice.
- Credit limit set after financial due diligence and reviewed on request or at the annual re-review. Usage above it returns
402 credit_limit_reached. - Spending alerts at thresholds you choose (for example 50 %, 80 % and 95 % of the credit limit) by email to the Financial officers and the Owner.
- The
billing.invoice_issuedwebhook is sent when each invoice is issued. - Invoices unpaid 15 days after the due date may lead to suspension of production calls, after notice to the Owner and Financial officers.
{
"id": "evt_4c9e1a7b3f0d2865",
"object": "event",
"type": "billing.invoice_issued",
"livemode": true,
"created_at": "2026-10-01T06:00:00Z",
"data": {
"object": {
"object": "invoice",
"organization_id": "org_2a7f91c3e5",
"invoice_number": "RDC-INV-2026-09-000418",
"period": {
"start": "2026-09-01",
"end": "2026-09-30"
},
"amount_due": {
"value": 21450000,
"currency": "CDF"
},
"due_date": "2026-10-31"
}
}
}Metering rules
The same rules apply to both models:
| What | Billed? | Details |
|---|---|---|
| Successful production call | Yes — base price | Each service has its own base price per call. |
| Additional scope returned | Yes — surcharge | A per-scope surcharge for each record actually returned. Scopes withheld because no data is on record are not billed. |
| Basic KYC | Included | Part of the base price; never billed separately. |
| Batch item | Yes — discounted rate | Each item is billed at the service’s batch rate, lower than the single-call base price, plus its own scope surcharges. |
| Asynchronous request | Same price | Asynchronous calls cost exactly the same as synchronous calls. |
not_found result | Yes — base price only | The lookup was performed; no scope surcharge applies because no data is returned. |
not_certified, no_match, inactive results | Yes — base price | Scope surcharges apply only to records actually returned. |
| Request rejected with a 4xx or 5xx error | No | Authentication, validation, scope, quota, rate-limit, payment and server errors are never billed — nor are failed batch items. |
| Idempotent replay | No | A retry with the same Idempotency-Key returns the original response and is not billed again. |
| Polling jobs and batches, reading results | No | Calls to /v1/jobs and /v1/batches are free (they count toward rate limits). |
| Sandbox | No | All eight services are free in sandbox, within the sandbox quotas. |
Volume tiers lower the base price as monthly volume grows, per service, for both models. Tiers are calculated on the organization’s total across all its applications.
Worked example
A microfinance institution submits an asynchronous KYC Validation batch of 2,500 borrowers with the kyc.phone_numbers scope. 24 items fail with invalid_identifier, 301 borrowers are not_found, and 2,175 are verified — of whom 2,040 have a phone number on record. The organization is billed:
- 2,476 KYC Validation items at the discounted batch rate (2,175 verified + 301 not_found);
- 2,040
kyc.phone_numberssurcharges (only records actually returned); - nothing for the 24 failed items, for polling the batch or for reading its results.
Invoices and usage exports
From Billing → Usage the Financial officer can view consumption by application, service, scope and day, and export it as CSV for reconciliation with your own records. Invoices, top-up receipts and monthly statements are available as PDF under Billing → Documents, and include your NIF and RCCM as required for tax purposes.
date,application_id,service,environment,billable_calls,not_found_calls,scope_records,scope,unbilled_errors
2026-09-25,app_5d20e8a1c4,kyc_validation,production,4812,301,3920,kyc.phone_numbers,57
2026-09-25,app_5d20e8a1c4,kyc_validation,production,4812,301,1104,kyc.addresses,57
2026-09-25,app_5d20e8a1c4,aml_screening,production,1290,0,0,,4
2026-09-25,app_7e41b0d9f2,age_verification,production,15230,812,0,,112Who can manage billing
Only the Owner and members with the Financial officer role can change the payment model, top up the wallet, set alerts and credit-limit thresholds, and download invoices. Administrators and Compliance officers can view invoices and export usage; Developers and Marketing see usage analytics only. See Teams & roles.
Keep production running
Set a low-balance threshold that covers several days of typical usage, and subscribe your operations tooling tobilling.balance_low. A 402 in production means customers cannot be onboarded until the wallet is topped up.