Getting Started
Routing page for the Reap Compliance API. Clarifies the KYC and KYB integration methods, how Reap verifies under each, and links to each guide, webhook setup, and event reference
Overview
The Reap Compliance API verifies cardholders and businesses for card issuance through Reap Cards API or via BIN sponsorship route. Four integration methods are supported across two entity types, differentiated by where verification is collected and how it is submitted.
Approval of an entity returns a signed payload that authorises card creation through POST /cards. Approval status is delivered asynchronously by webhook.
Method Selection
Comparison
| Method | Entity Type | Verification Source | Submission Shape | Guide |
|---|---|---|---|---|
| KYCaaS | INDIVIDUAL | Reap, via the SumSub WebSDK | SDK token request | KYCaaS Integration Guide |
| Verified Token Sharing | INDIVIDUAL | The integrator's SumSub account | Share token, single-record synchronous ingestion | Verified Token Sharing Guide |
| Universal KYC | INDIVIDUAL | The integrator's own KYC provider | Canonical KYC Pack with document uploads | Universal KYC Guide |
| Universal KYB | BUSINESS | The integrator's own KYB provider | Canonical KYB pack, with beneficial owners and company documents upload | Universal KYB Guide |
Decision Guide
Apply these in order:
- Retail or commercial card? For retail cards, the cardholder is an
INDIVIDUALand goes through KYC. For commercial (corporate) cards, the business your program serves is aBUSINESSand goes through Universal KYB. - Already have a SumSub KYC contract? Use Verified Token Sharing.
- Using a KYC provider other than SumSub, or more than one provider? Use Universal KYC.
- Otherwise, use KYCaaS.
Verification Methods
KYCaaS
Hosted identity verification for individual cardholders through the SumSub WebSDK. Reap orchestrates the verification and returns the decision via webhook.
| Property | Value |
|---|---|
| Entity type | INDIVIDUAL |
| Verification location | SumSub WebSDK embedded on the integrator frontend |
| Requirements | Identity document, address verification, liveness check |
| Approval delivery | Webhook (account_status_change) |
| Approval output | Single JWT string (signedPayload) returned by GET /entity/entityId/signed-payload |
| Jurisdiction handling | Include binCountry only for issuing BINs with jurisdiction specific rules (currently MEX) |
Verified Token Sharing
Reuse of a verification already completed in the integrator's SumSub account, imported as a share token. Cardholders are held to a Reap-defined SumSub Partner Level, and Reap issues the final decision
| Property | Value |
|---|---|
| Entity type | INDIVIDUAL |
| Verification location | Completed previously in the integrator's SumSub account, against a Reap-defined Partner Level |
| Sync endpoint | POST /entity/kyc/import/sync |
| Approval delivery | Webhook (account_status_change) |
| Approval output | Structured object containing verified identity fields and a signature, returned by GET /entity/entityId/signed-payload |
| Prerequisites | Compliance approval from Reap; signed SumSub Reusable KYC Agreement; Reap added as an authorised recipient in the donor SumSub account |
| BIN sponsorship | cardProcessorPublicToken mandatory at ingestion for BIN sponsorship clients, optional for all others |
- A token minted against any other level fails ingestion with
SHARE_TOKEN_LEVEL_MISMATCH. - A cardholder who doesn't meet the level is rejected with
LEVEL_ENFORCED_MISMATCHand reject typeRETRY. - An ingestion response of
status: "completed"means the token was accepted. It is not an approval, which arrives by webhook.
Universal KYC
Submission of individual cardholder data to Reap using a canonical payload structure, where verification is captured by the integrator's own KYC provider. Reap re-verifies every submission and issues the decision.
| Property | Value |
|---|---|
| Entity type | INDIVIDUAL |
| Verification location | External provider operated by the integrator |
| Submission endpoint | POST /entity/entityId/ukyc |
| Required content | Identity, identification document, residential address, liveness result, provider verification outcome |
| Document uploads | ukyc-id-document, ukyc-proof-of-address-document, ukyc-curp-document (when identity.nationality = "MEX") |
| Jurisdiction handling | Include binCountry and matching jurisdictionData.<COUNTRY> for issuing BINs with jurisdiction specific rules (currently MEX) |
| Approval delivery | Webhook (account_status_change) |
| Approval output | Structured object containing verified identity fields and a signature, returned by GET /entity/entityId/signed-payload |
Behaviour after approval depends on Reap's position in the card creation path:
- Standard card issuance programs- Reap is in the card creation path. Fetch the signed payload and pass it into POST /cards. No valid signed payload, no card
- BIN sponsorship programs - Cards are created directly on the processor, so Reap cannot gate issuance at source. Every card must be linked to an approved Reap KYC record via cardProcessorPublicToken, which is mandatory at submission.
Universal KYB
For commercial card programs. You submit KYB on the business your program serves: its legal profile, beneficial owners, due-diligence answers and company documents. Reap Compliance reviews every case and decides. Approval enables card issuance for that business.
| Property | Value |
|---|---|
| Entity type | BUSINESS. Each declared beneficial owner becomes its own INDIVIDUAL entity (returned as uboEntities) |
| KYB pack | POST /entity/{entityId}/ukyb: legal profile, uboDeclaration, and the optional ddq and edd sections. PATCH amends it while the case is editable, and GET reads it back |
| Documents | POST /entity/{entityId}/ukyb/documents. Required: certificate-of-incorporation, company-profile, shareholding-chart, plus ubo-kyc for each owner (uploaded against that owner's entity) |
| Submission | POST /entity/{entityId}/ukyb/submit checks completeness, locks the case and queues it for review. It fails with INCOMPLETE_KYB if anything required is missing |
| Decision | Webhook (kyb_status_change) with cardIssuanceEnabled |
| After approval | Card issuance is enabled for that business entity. There is no signed payload for KYB |
Authentication
All Reap Compliance API requests require an API key passed in the x-reap-api-key header.
x-reap-api-key: <API_KEY>| Environment | Base URL |
|---|---|
| Sandbox | https://sandbox-compliance.api.reap.global |
| Production | https://compliance.api.reap.global |
API keys are generated in the Reap Dashboard at Settings → Product Settings → KYC API Keys and are linked to a Business UUID (BUUID) that scopes all activity to the issuing business. Sandbox validation is required before switching to production keys.
Core Concepts
Business
The organisation registered with Reap, identified by a unique API Key and Business UUID (BUUID). All entities, requirements, and KYC activity are scoped to the BUUID.
Entity
The individual or business being verified. Every applicant is represented as an entity created via POST /entity with type: INDIVIDUAL or type: BUSINESS.
Reap assigns a unique entityId at creation. An optional externalId may be supplied to correlate the entity with the integrator's internal records.
{
"entityId": "ent_123e4567-e89b-12d3-a456-426614174000",
"externalId": "user_123"
}Entity type by method.
| Method | Entity Type |
|---|---|
| KYCaaS | INDIVIDUAL |
| Verified Token Sharing | INDIVIDUAL |
| Universal KYC | INDIVIDUAL |
| Universal KYB | BUSINESS |
Feature
A capability enabled for a business. Card Issuance is the feature governing verification and card issuance authority and must be enabled by Reap before use.
Requirement Slug
A typed name for a document category or a submission, for example ukyc-id-document for Universal KYC, or certificate-of-incorporation and ubo-kyc for Universal KYB.
Status
Every entity and requirement carries a status from the RequirementStatus enum.
| Status | Meaning |
|---|---|
APPROVED | Verification passed. Card issuance is enabled for the entity |
PENDING | Submitted and under review |
REJECTED | Verification failed. Inspect reviewRejectType to determine retry eligibility |
Universal KYB tracks the case as a whole:
| Status | Meaning |
|---|---|
PENDING_SUBMISSION | The case is open. You can amend the pack and upload documents |
UNDER_REVIEW | Submitted and locked. Compliance is reviewing |
PENDING_ADDITIONAL_INFO | Compliance needs more from you |
APPROVED | KYB passed. Card issuance is enabled for the business |
REJECTED | KYB failed |
CANCELLED_BY_CLIENT | You withdrew the case |
Signed Payload
A cryptographically signed object retrieved from Reap once an entity reaches APPROVED. The payload authorises card creation when passed into POST /cards.
Shape depends on the method.
| Method | Signed Payload Shape |
|---|---|
| KYCaaS | Structured object containing verified identity fields, signature, and expiresAt |
| Universal KYC | Structured object containing verified identity fields, signature, and expiresAt |
| Verified Token Sharing | Structured object containing verified identity fields, signature, and expiresAt |
| Universal KYB | Universal KYB has no signed payload. Approval enables card issuance for the business entity. |
External ID
An integrator supplied identifier passed as externalId and echoed back by Reap. Used to correlate Reap records with integrator internal records.
BIN Country and Jurisdiction Data
binCountry is the ISO 3166-1 alpha-3 code of the issuing BIN. The field is included only when the issuing BIN belongs to a jurisdiction with jurisdiction specific KYC requirements (currently MEX).
For Universal KYC, a matching jurisdictionData.<COUNTRY> block accompanies binCountry. The field is independent of identity.nationality, and nationality driven document requirements (such as ukyc-curp-document for Mexican nationals) are determined separately.
Webhook Notifications
Register a webhook before you start, because decisions are delivered asynchronously. Use POST /notification and subscribe to the event type for your method:
| Methods | Event type | Main event |
|---|---|---|
| KYCaaS, Verified Token Sharing, Universal KYC | account_status_change | card_issuance_api_access_updated: card issuance access granted or revoked, or a requirement rejected |
| Universal KYB | kyb_status_change | kyb_status_changed: the KYB case moved to a new status |
| Resource | Document |
|---|---|
| Registration, subscription management and signature verification | Webhook Setup |
card_issuance_api_access_updated schema and statuses | Card Issuance KYC API Access Webhook |
kyb_status_changed schema and statuses | Universal KYB Guide |
Documentation Map
| Document | Coverage |
|---|---|
| KYCaaS Integration Guide | Reap hosted individual cardholder verification through the SumSub WebSDK, including SDK token generation and signed payload retrieval |
| Verified Token Sharing Guide | Reuse of an existing SumSub verification by share token against a Reap-defined Partner Level, including level enforcement and signed payload retrieval |
| Universal KYC Guide | Submission of a canonical KYC Pack and supporting documents for individual cardholders verified externally, including the BIN sponsorship branch |
| Universal KYB Guide | Creating the business entity, KYB pack, documents and submission, through to the decision webhook |
| Webhook Setup | Registration, lifecycle management, and signature verification of webhook subscriptions |
| Card Issuance KYC API Access Webhook | Reference schema and status semantics for the card_issuance_api_access_updated event |
Next Steps
- Identify the appropriate integration method using the Comparison table and Decision Guide.
- Configure the webhook endpoint first by following the Webhook Setup guide. Reap's verification decision is delivered by webhook for every method that emits one.
- Follow the appropriate integration guide.
Updated 18 days ago
