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

PrepaidPostpaid
How you payTop up a wallet in advance; each billable call is debited in real time.Receive a monthly invoice for the previous month’s usage.
CurrenciesWallet held in USD or CDFInvoices in USD or CDF
Payment methodsM-Pesa, Orange Money, Airtel Money, bank transfer, cardBank transfer (card for invoices up to USD 5,000)
Payment termsPay before useNet 30
Spending controlWallet balance; low-balance alertsCredit limit set after financial due diligence; spending alerts
When you run out402 insufficient_balance402 credit_limit_reached
Best forStart-ups, SMEs, seasonal or unpredictable volumesBanks, telecom operators, large platforms with steady volumes
Volume tiersYesYes

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:

MethodCurrenciesCredited
M-Pesa (Vodacom)CDF, USDInstantly, after approval on the payer’s phone
Orange MoneyCDF, USDInstantly, after approval on the payer’s phone
Airtel MoneyCDF, USDInstantly, after approval on the payer’s phone
Card (Visa, Mastercard)USDInstantly
Bank transferCDF, USDWithin 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.

Webhook — billing.balance_low
{
  "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.

CodeModelMeaningWhat to do
insufficient_balancePrepaidThe wallet balance is too low for this call.Top up the wallet. Calls succeed again as soon as the funds are credited.
credit_limit_reachedPostpaidUsage in the current period has reached the credit limit.Pay outstanding invoices or ask RDCPASS to review your credit limit.
402 Payment Required — prepaid
{
  "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."
}
402 Payment Required — postpaid
{
  "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_issued webhook 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.
Webhook — billing.invoice_issued
{
  "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:

WhatBilled?Details
Successful production callYes — base priceEach service has its own base price per call.
Additional scope returnedYes — surchargeA per-scope surcharge for each record actually returned. Scopes withheld because no data is on record are not billed.
Basic KYCIncludedPart of the base price; never billed separately.
Batch itemYes — discounted rateEach item is billed at the service’s batch rate, lower than the single-call base price, plus its own scope surcharges.
Asynchronous requestSame priceAsynchronous calls cost exactly the same as synchronous calls.
not_found resultYes — base price onlyThe lookup was performed; no scope surcharge applies because no data is returned.
not_certified, no_match, inactive resultsYes — base priceScope surcharges apply only to records actually returned.
Request rejected with a 4xx or 5xx errorNoAuthentication, validation, scope, quota, rate-limit, payment and server errors are never billed — nor are failed batch items.
Idempotent replayNoA retry with the same Idempotency-Key returns the original response and is not billed again.
Polling jobs and batches, reading resultsNoCalls to /v1/jobs and /v1/batches are free (they count toward rate limits).
SandboxNoAll 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_numbers surcharges (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.

usage-2026-09.csv
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,,112

Who 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 to billing.balance_low. A 402 in production means customers cannot be onboarded until the wallet is topped up.

Next steps

Questions about your integration? Contact developer support