Sandbox & environments

RDCPASS runs two fully separate environments. Build and test in the sandbox, with synthetic identities and free usage for all eight services; move to production once your due-diligence dossiers are approved.

Credentials never work across environments

Production and sandbox are separate systems end to end — separate data and separate credentials. A key or certificate issued for one environment is rejected by the other.

Two environments

Production
api.rdcpass.cd
Real citizen and business records from the national digital identity. Requires an approved application, production keys, an mTLS certificate and an IP allowlist. Responses carry "livemode": true.
Sandbox
sandbox.rdcpass.cd
Synthetic identities only — no real citizen or business record. AML & CTF Screening also checks the real, publicly published sanctions lists. Keys are issued the moment you create an application, and an IP allowlist is optional. Responses carry "livemode": false.
# Production
https://api.rdcpass.cd

# Sandbox
https://sandbox.rdcpass.cd

The request and response formats are identical in both environments: switching is a matter of base URL and keys.

The sandbox plan

Every application gets the free sandbox plan at creation, covering all eight services: KYC Validation, Face Recognition, Age Verification, KYB Verification, AML & CTF Screening, Credit Scoring, Fraud Reporting and Login with RDCPASS. Every scope — including Sensitive and Biometric ones — can be selected in sandbox without subscription or enhanced due diligence, so you can build your full integration before going live. Single, batch and asynchronous requests all work exactly as in production.

ServiceSandbox quota (per application, per day)
kyc_validation1,000
face_recognition200
age_verification1,000
kyb_verification500
aml_screening500
credit_score200
fraud_report100
Login with RDCPASS1,000

Quotas reset daily at 00:00 UTC. These quotas cover single calls; batches have a separate batch quota of 5,000 items and 20 batches per day per service. Beyond the quota, calls return 429 quota_exceeded — see Rate limits & quotas. Sandbox calls cost no real money, but they are billed at the published rates against a simulated wallet: every organization starts prepaid with 5,000 USD of test credit, so you can test your billing integration end to end. When the test credit runs out, calls return 402 insufficient_balance (or 402 credit_limit_reached on postpaid) — request a balance increase from the console. Postpaid organizations receive an invoice every 30 days, due within 15 days. While an invoice is overdue, billable calls return 402 invoice_overdue. Errors, idempotent replays and polling are never billed.

Test identities

Use these RDCPASS IDs with KYC Validation, Age Verification, AML & CTF Screening, Credit Scoring and Face Recognition (1:1). Each produces a fixed, documented outcome:

RDCPASS IDName · date of birthBehaviour
COD-0000-0000-0001Kabeya Mwamba Tshisekedi · 1988-04-12verified, certified account (LOA3), data on record for every KYC scope, including documents, addresses and biometrics. AML: low risk, no hits.
COD-0000-0000-0003Mbuyi Ilunga Nsimba · 1992-11-03verified, certified account with Basic KYC only: every additional scope requested appears in scopes_withheld.
COD-0000-0000-0002Ngalula Kasongo Mujinga · 1995-07-21not_certified: the account exists but is not yet certified — only account is returned.
COD-0000-0000-0404—not_found: no certified account for this identifier.
COD-0000-0000-0017Lukusa Mbayo Kalala · 2009-02-14verified, aged 17: Age Verification with threshold: 18 returns over_threshold: false.
COD-0000-0000-0666Test Sanctioned Subject · 1970-01-01AML & CTF Screening: risk_level: "high", a sanctions hit on the UN Security Council Consolidated List (match_score 0.97).
COD-0000-0000-0777Tshiala Mukendi Banza · 1965-09-30AML & CTF Screening: risk_level: "medium", pep.is_pep: true (national-level position).
COD-0000-0000-0888Test Fraud Suspect · 1984-03-15Fraud network — confirmed suspect (money laundering, case RDC-FRD-2026-000888, escalated). AML & CTF Screening: risk_level: "high", a watchlists hit with fraud_case. Credit Scoring (cns_test_COD-0000-0000-0888): 602, band C — 150 points below the same file without the case — with fraud_history first.
COD-0000-0000-0999Test Fraud Victim · 1990-07-08Fraud network — confirmed victim of identity usurpation (case RDC-FRD-2026-000999). AML & CTF Screening: low, no hits, fraud_signals.identity_fraud_victim: true. Credit Scoring: 752, band A — never penalised.
COD-0000-0000—Malformed identifier: returns 400 invalid_identifier.

The same people can also be looked up by document: passport OB0000001 and CENI card 0000000000001 resolve to COD-0000-0000-0001.

Beyond these fixtures, the sandbox holds hundreds of generated citizens and businesses. Browse and download all of them, with every identifier, on Sandbox test data.

Other test fixtures

ServiceInputBehaviour
Face Recognitionimage.url = https://files.rdcpass.cd/sandbox/faces/match-0001.jpgmatch with COD-0000-0000-0001 (similarity 0.96, liveness passed). In 1:N mode, identifies COD-0000-0000-0001.
Face Recognitionimage.url = https://files.rdcpass.cd/sandbox/faces/no-match.jpgno_match — no identity data returned.
Face Recognitionimage.url = https://files.rdcpass.cd/sandbox/faces/two-faces.jpg422 multiple_faces_detected.
Face Recognitionimage.url = https://files.rdcpass.cd/sandbox/faces/liveness-fail.jpg422 liveness_failed.
Face Recognitionimage.url = https://files.rdcpass.cd/sandbox/faces/<RDCPASS-ID>.jpgA live photo of that identity: every certified test account has an enrolled face (similarity 0.88–0.98). Any other image or URL returns no_match.
Face Recognitionimage.url = …/faces/no-face.jpg · …/faces/low-quality.jpg422 no_face_detected · 422 image_quality_insufficient.
KYB Verificationrccm = CD/KIN/RCCM/00-B-00001verified, active SARL with data for every KYB scope, including officers and beneficial owners.
KYB Verificationrccm = CD/LSH/RCCM/00-B-00002inactive — the company is dissolved.
KYB Verificationrccm = CD/KIN/RCCM/00-B-00404not_found.
KYB Verificationrccm = CD/KIN/RCCM/00-B-00888verified company named as a suspect in a confirmed money-laundering case (RDC-FRD-2026-000889). AML & CTF Screening by subject.business.identifier: risk_level: "high", fraud-network hit.
AML & CTF Screeningsubject.full_name = "Eric Badege"Real hits from the official sanctions lists — UN (CDi.001, DRC regime, with its INTERPOL–UN Special Notice), OFAC SDN, EU and UK — each with source.official: true. risk_level: "high".
AML & CTF Screeningsubject.full_name = "Eric Badege", date_of_birth = "1990-01-01"The birth date contradicts the one on the lists (1971): the match score drops below the threshold and no official hit is returned — homonyms are eliminated.
AML & CTF Screeningsubject.full_name = "Test International Suspect", date_of_birth = "1980-05-02", nationality = "RWA"Fraud network — a foreign suspect known by name (payment fraud, case RDC-FRD-2026-000900): a watchlists hit matched on name, date of birth and nationality.
Credit Scoringconsent.consent_id = cns_test_approvedValid consent for COD-0000-0000-0001: score 712, band B.
Credit Scoringconsent.consent_id = cns_test_expired403 consent_required.
Credit Scoringconsent.consent_id = cns_test_revoked403 consent_required (consent revoked).
Credit Scoringconsent.consent_id = cns_test_<RDCPASS-ID>A valid consent for any certified test identity, so every generated citizen can be scored.
Fraud Reportingtype = identity_usurpationCase created with status: "received", moves to under_review after 1 minute and confirmed after 5 minutes, sending fraud_report.status_changed each time.
Fraud Reportingsubject.business = { "name", "registration_number", "country": "ARE" }A foreign or unregistered company, reported cross-border (any location.country, any ISO currency). money_laundering cases are escalated_to_authorities.
Fraud Reportingsubject.identifier = { "type": "passport", "issuing_country": "RWA", … }A foreign individual: the document is recorded as reported and never resolved against the Congolese register.
Fraud Reportingvictims = [{ "identifier": … }, { "anonymous": true }] — with or without subjectNamed victims (people or companies, Congolese or foreign) get an identity-fraud alert once the case is confirmed; anonymous victims are counted but never matched. A report with no identified party and no evidence ends dismissed.
Login with RDCPASSGET /v1/oidc/authorizeOpens a sandbox approval page instead of the phone approval: pick a test identity, then approve, deny or simulate a face mismatch. Any https redirect URI, or http://localhost, is accepted.

Asynchronous jobs and batches complete within seconds in sandbox and deliver the same webhooks as production, so you can test your whole event pipeline.

Fraud reports you file feed the sandbox fraud network like in production: once confirmed (5 minutes), a report naming a suspect is returned by AML & CTF Screening and lowers Credit Scoring for that identity, name or company — for every sandbox organization. Reports never change the documented test identities above (COD-0000-0000-xxxx, RCCM 00-B-00xxx): use …0888, …0999 and 00-B-00888 to see the network’s effect.

Real public data in the sandbox

Identities stay synthetic, but two services use real, openly published data so your tests behave like production:

  • AML & CTF Screening checks the official sanctions lists — the UN Security Council Consolidated List, OFAC SDN, the EU consolidated list and the UK consolidated list (about 30,000 entries) — in addition to the documented test identities. Lists are refreshed daily from their publishers. Hits from these lists carry a source object with the list’s own reference, the sanctions programmes and, when the UN publishes one, the link to the INTERPOL–UN Security Council Special Notice.
  • Credit Scoring credit files are synthetic but calibrated to published statistics for the DRC (World Bank Global Findex and World Development Indicators): the share of files with mobile money, bank, phone and utility data, and income levels, follow national figures. The documented consents and scores above never change.

Sources: United Nations Security Council; U.S. Treasury (OFAC); © European Union; contains public sector information licensed under the Open Government Licence v3.0 (UK); The World Bank (CC BY 4.0).

Path to production

When your integration is ready, submit your business and application dossiers from the console. Your sandbox request logs serve as test evidence. Once approved, the same application receives production keys — see Going to production.

Next steps

Questions about your integration? Contact developer support