Card API Integration Flow
This guide walks through the complete steps required to onboard a customer, verify their identity, issue a card, and fund it via top-up. Each phase must be completed in order — steps are dependent on each other.
Overview#
Phase 1 — Create Customer#
Method: POST
Endpoint: /api/v1/customersCreate a customer record with basic personal details. No identity verification is performed at this stage.Response: Returns a customerId that is required for all subsequent API calls.⚠️ Store the customerId returned in the response. It is the primary identifier used across KYC submission, card issuance, and top-up APIs.
Phase 2 — Submit KYC / KYB#
Method: POST
Endpoint: /api/v1/customers/{customerId}/products/{productId}/applicantSubmit identity verification details for the customer against a specific card product. Use the customerId from Phase 1 and the productId for the product the customer is applying for.| Parameter | Description |
|---|
customerId | Returned from Phase 1 |
productId | The card product being applied for |
⚠️ KYC/KYB must be submitted separately for each productId. If a customer applies for multiple card products, repeat this step with the same customerId and a different productId.
Phase 3 — Poll KYC Status#
Method: GET
Endpoint: /api/v1/customers/{customerId}/products/{productId}/applicantstatusAfter submitting KYC/KYB, poll this endpoint to retrieve the current verification status.| Parameter | Description |
|---|
customerId | Same as Phase 2 |
productId | Same as Phase 2 |
Status values and actions:| Status | Action |
|---|
approved | Proceed to Phase 4 — Issue Card |
underreview | Wait and retry. Recommended interval: 30–60 seconds with exponential backoff |
rejected | Correct the submitted data and resubmit via the Phase 2 endpoint |
💡 Set a maximum polling timeout (e.g. 24 hours) and surface an appropriate error to your end user if exceeded.
Phase 4 — Issue Card#
Method: POST
Endpoint: /api/v1/cardsOnce KYC status is approved, submit a card issuance request.Response: Returns a cardId used for card status tracking.⚠️ Do not proceed to this step unless the KYC status is approved.
Phase 5 — Poll Card Status#
Method: GET
Endpoint: /api/v1/card/{cardId}Poll this endpoint after submitting the card issuance request. Check the state property in the response.| Parameter | Description |
|---|
cardId | Returned from Phase 4 |
state values and actions:| state | Action |
|---|
active | Proceed to Phase 6 — Top Up |
pending | Wait and retry |
failed | Review the error, contact support, or retry issuance |
⚠️ Do not proceed to top-up until state is active.
Phase 6 — Top Up Card#
Method: POST
Endpoint: /api/v1/cards/{cardId}/topupFund the card by initiating a top-up from your merchant portal balance.| Parameter | Description |
|---|
cardId | The active card from Phase 5 |
Response: Returns a transactionId which is used as the topupId for status tracking. The top-up is in pending status immediately on creation.
Phase 7 — Poll Top-Up Status#
Method: GET
Endpoint: /api/v1/topupstatus/{topupId}Poll this endpoint using the transactionId returned from Phase 6.| Parameter | Description |
|---|
topupId | The transactionId returned from Phase 6 |
Status values and actions:| Status | Action |
|---|
approved | Balance is added to the card. Card is ready for transactions. |
rejected | The top-up amount is automatically credited back to your merchant portal balance. |
pending | Wait and retry |
Endpoint Summary#
| Phase | Method | Endpoint | Key Output |
|---|
| 1 — Create customer | POST | /api/v1/customers | customerId |
| 2 — Submit KYC/KYB | POST | /api/v1/customers/{customerId}/products/{productId}/applicant | Submission acknowledged |
| 3 — Poll KYC status | GET | /api/v1/customers/{customerId}/products/{productId}/applicantstatus | approved / rejected / under_review |
| 4 — Issue card | POST | /api/v1/cards | cardId |
| 5 — Poll card status | GET | /api/v1/card/{cardId} | state: active / failed / under_review |
| 6 — Top up card | POST | /api/v1/cards/{cardId}/topup | transactionId (= topupId), status: pending |
| 7 — Poll top-up status | GET | /api/v1/topupstatus/{topupId} | approved / rejected / pending |
Frequently Asked Questions#
Q: Can I submit KYC without specifying a product?
No. The productId is a required path parameter. KYC/KYB requirements are product-specific.Q: Can the same customer apply for multiple card products?
Yes. Repeat Phases 2–5 using the same customerId with a different productId for each product.Q: What does transactionId map to in the top-up status API?
The transactionId returned by the top-up endpoint (POST /api/v1/cards/{cardId}/topup) is used as the topupId in the status endpoint (GET /api/v1/topupstatus/{topupId}).Q: What happens when a top-up is rejected?
The full top-up amount is automatically refunded to your merchant portal balance. No manual action is required.Q: Can I use the card before adding a top-up?
No. The card must have state: active AND a successful top-up before it can be used for transactions. Modified at 2026-03-31 13:18:33