Frequently Asked Questions
KYC & User Verification
What is the correct KYC flow order?
What is the correct KYC flow order?
- Create the User via the Create User endpoint.
- Verify the User using one of three options:
- Option A — Redirect to a KYC verification link via Generate KYC Link
- Option B — Submit identity documents directly via Submit KYC Data
- Option C — For business users, generate a KYB link via Generate KYB Link
- Get the result via webhooks (
VERIFIED_USER,REJECTED_KYC,REVIEW_NEEDED_KYC) or by polling.
documents field in the KYC endpoint is for ADDRESS_PROOF only — government ID front/back goes in the identity object (frontIdUrl, backIdUrl). The selfie is a separate top-level selfieUrl field.What identity document types are accepted per country?
What identity document types are accepted per country?
identity.type), the accepted values are GOVERNMENT_ID, RESIDENT_CARD, and TAX_ID for all countries.For the file-based KYC upload flow, the accepted document types are NATIONAL_ID, VOTER_ID, PASSPORT, and TAX_ID for all countries including Mexico.What is the correct taxId format for Mexico?
What is the correct taxId format for Mexico?
taxId field expects an RFC (Registro Federal de Contribuyentes), not a CURP. The format must match:LOZG7802117B9CURP is not accepted.Is ADDRESS_PROOF always required for Mexican users?
Is ADDRESS_PROOF always required for Mexican users?
documents array with ADDRESS_PROOF is required only if the identity document used is not an INE. If the user submits an INE and their address matches their current address, ADDRESS_PROOF can be omitted.What are the file URL requirements for document uploads?
What are the file URL requirements for document uploads?
| File | Max Size | Allowed Formats |
|---|---|---|
| Selfie | 3 MB | JPEG, PNG, GIF, WebP |
| Front ID / Back ID | 5 MB each | JPEG, PNG, GIF, WebP, PDF |
| Additional documents | 10 MB | JPEG, PNG, GIF, WebP, PDF |
FAILED_TO_DOWNLOAD_FILE_FROM_PRESIGNED_URL.Are real documents required in sandbox?
Are real documents required in sandbox?
What are the valid economicActivity values?
What are the valid economicActivity values?
DESARROLLO DE SOFTWARE, CONSULTORIA, FINANCIERA, EDUCACION, RESTAURANTE.When are realOwner, beneficiaryOwner, and resourceProvider required?
When are realOwner, beneficiaryOwner, and resourceProvider required?
Which countries are currently supported?
Which countries are currently supported?
User Management
What happens if I create a user that already exists?
What happens if I create a user that already exists?
409 Conflict with error code USER_ALREADY_EXISTS_ERROR. Check for this status code to avoid duplicate user creation.Can users be updated or deleted via API?
Can users be updated or deleted via API?
Webhooks
What is the webhook retry policy?
What is the webhook retry policy?
| Attempt | Delay |
|---|---|
| 1st retry | Immediate |
| 2nd retry | 1 minute |
| 3rd retry | 5 minutes |
| 4th retry | 10 minutes |
| 5th retry | 15 minutes |
2xx status code promptly to acknowledge receipt.Can I replay missed webhook events?
Can I replay missed webhook events?
Can I configure more than one webhook URL?
Can I configure more than one webhook URL?
Do webhooks fire during mock testing?
Do webhooks fire during mock testing?
When COMPLETED_ON_RAMP fires, is the crypto already in the wallet?
When COMPLETED_ON_RAMP fires, is the crypto already in the wallet?
COMPLETED_ON_RAMP event, the crypto has been sent and is already in the user’s destination wallet.What does FIAT_RECEIVED_ON_RAMP mean exactly?
What does FIAT_RECEIVED_ON_RAMP mean exactly?
FIAT_RECEIVED_ON_RAMP means that fiat has been received and the conversion to crypto has started — but the crypto has not been sent yet. Wait for COMPLETED_ON_RAMP to confirm delivery.Does a webhook fire when KYC is re-submitted for an already-verified user?
Does a webhook fire when KYC is re-submitted for an already-verified user?
What webhook events are available for bank account verification?
What webhook events are available for bank account verification?
VERIFIED_BANK_ACCOUNT— The bank account was successfully verified.REJECTED_BANK_ACCOUNT— The bank account verification was rejected.
type: "USER" and include the userBankInfoId in the payload.Quotes & Transactions
How long is a quote valid?
How long is a quote valid?
expiresAt field in the response). Once a quote is used to create a transaction, the rate is locked for that transaction regardless of the 10-second window.Is a quote required before creating a transaction?
Is a quote required before creating a transaction?
quoteId parameter is optional when creating an on-ramp, off-ramp, or cross-ramp transaction. If no quote is provided, the exchange rate is calculated at the time of funding. A quote is useful for showing the user a guaranteed rate before they commit.Can I quote by specifying either fiat or crypto amount?
Can I quote by specifying either fiat or crypto amount?
fiatAmount or cryptoAmount. Use fiatAmount to get how much crypto the user will receive, or cryptoAmount to get how much fiat is needed.How does premiumSpread work with quotes?
How does premiumSpread work with quotes?
What are the transaction limits?
What are the transaction limits?
| Currency | Minimum | Maximum |
|---|---|---|
| MXN | 50 MXN | No maximum |
| DOP | 150 DOP | No maximum |
| USD | 20 USD | No maximum |
| EUR | 20 EUR | No maximum |
Do transactions expire?
Do transactions expire?
expires_at field. Transactions can only be cancelled via the Cancel Transaction endpoint or by an admin.Is idempotency supported?
Is idempotency supported?
What rounding rules apply?
What rounding rules apply?
On-Ramp
When is the CLABE created?
When is the CLABE created?
bankAccount.accountIdentifier and can also be retrieved via the Get Bank Info endpoint.Is the CLABE permanent and reusable?
Is the CLABE permanent and reusable?
Must I create an on-ramp before depositing fiat?
Must I create an on-ramp before depositing fiat?
How do I fund a specific on-ramp order?
How do I fund a specific on-ramp order?
Can I have multiple on-ramp orders open at the same time?
Can I have multiple on-ramp orders open at the same time?
Is the account holder name needed for SPEI deposits?
Is the account holder name needed for SPEI deposits?
Off-Ramp
What happens if I send more crypto than the quoted amount?
What happens if I send more crypto than the quoted amount?
What are the expected settlement times?
What are the expected settlement times?
- Under 50,000 MXN: ~2–3 minutes
- Over 50,000 MXN: 10–30 minutes
forwardingDays (1–4), the payout is scheduled on settlement day T+N; the 10–30 minute window applies once that day arrives.Does the SPEI payout include a reference?
Does the SPEI payout include a reference?
What does 'partner is not configured for manual off-ramp execution' mean?
What does 'partner is not configured for manual off-ramp execution' mean?
How do forwards work?
How do forwards work?
forwardingDays parameter (0–4) when creating a locked quote for MXN OTC orders. This feature requires the manual off-ramp execution flow to be enabled — all off-ramps must be explicitly executed via the Execute Off-Ramp endpoint.Rate Limits & Errors
What are the API rate limits?
What are the API rate limits?
429 Too Many Requests response. The limits are the same across all endpoints. Rate limit information is not included in response headers.What does the error response format look like?
What does the error response format look like?
400 (validation), 401 (unauthorized), 403 (forbidden), 404 (not found), 409 (conflict/duplicate), 429 (rate limit).Sandbox & Testing
What are the differences between staging and production?
What are the differences between staging and production?
| Aspect | Staging | Production |
|---|---|---|
| Fiat transfers | Simulated (no real money) | Real SPEI/ACH/SEPA transfers |
| Crypto transfers | Real on-chain transactions | Real on-chain transactions |
| KYC verification | Not validated (random data accepted) | Full identity verification |
| Exchange rates | May differ from live market | Live market rates |
| Mock testing | Enabled | Disabled |
How do I test transactions in staging?
How do I test transactions in staging?
1.01, 1.02, 1.03). Webhooks fire during mock testing if a webhook URL is configured.Refunds
Is there a refund endpoint?
Is there a refund endpoint?
KYB & Third-Party Payments
Is KYB available via API?
Is KYB available via API?
Does Capa support third-party payments?
Does Capa support third-party payments?
receiverId when creating an off-ramp or cross-ramp transaction.API Versioning
Is v1 deprecated?
Is v1 deprecated?