# CBPay: English API Reference API Reference

> CBPay developer documentation - fiat payouts and collections across Latin America, internal transfers, on-chain USDT and KYC.

## API Reference

- [Dispute status changed](https://docs.cbpayapp.com/api-reference/dispute-status-changed.md): Signed account/org transition for a dispute case.
- [Payin credited](https://docs.cbpayapp.com/api-reference/payin-credited.md): A fiat collection was received and credited to the account. For universal checkout links (`kind: checkout`) the payload also carries `settled_via` (e.g. `qr`, `crypto:tron:usdt`, `cbpay`), `settlement_asset` and `asset_amount`; crypto payments add `crypto_amount` and CBPay app payments add `transfer…
- [Organization announcement](https://docs.cbpayapp.com/api-reference/organization-announcement.md): A named organization administrator approved a localized plain-text announcement for this account. The event is account-scoped and never broadcast to another account.
- [A subscription changed status active paused past due after dunning or canceled](https://docs.cbpayapp.com/api-reference/a-subscription-changed-status-active-paused-past_due-after-dunning-or-canceled.md)
- [A payer saved a card on the hosted checkout explicit consent on a 3 d secure approved seed payment](https://docs.cbpayapp.com/api-reference/a-payer-saved-a-card-on-the-hosted-checkout-explicit-consent-on-a-3-d-secure-approved-seed-payment.md)
- [A stored card was revoked by you via delete v1stored cards ](https://docs.cbpayapp.com/api-reference/a-stored-card-was-revoked-by-you-via-delete-v1stored-cards-.md)
- [Payin expired](https://docs.cbpayapp.com/api-reference/payin-expired.md): An active collection (QR or hosted checkout) reached a final state without receiving the payment: the payin moves from `pending` to `expired` (or `failed`). No funds move; create a new payin to retry the charge.
- [Payin refunded](https://docs.cbpayapp.com/api-reference/payin-refunded.md): A refund of a card payin reached a final state, or the issuer imposed a chargeback. `status: completed` means the money went back to the cardholder and the debit is settled on your balance; `status: failed` means the processor declined it and the debit was reversed in full. A `kind: chargeback` is b…
- [Payin settlement scheduled](https://docs.cbpayapp.com/api-reference/payin-settlement-scheduled.md): A card-paid payin — a direct card payin or a checkout/POS charge paid by card — was paid and its balance was scheduled for a future `settle_at` because your organization configured a settlement delay (`settlement_hours`) on the `payin_card` service. Emitted exactly once when the payment is confirmed…
- [Payout status changed](https://docs.cbpayapp.com/api-reference/payout-status-changed.md): A payout reached a new state (processing, completed or failed).
- [Transfer received](https://docs.cbpayapp.com/api-reference/transfer-received.md): The account received an internal transfer.
- [Transaction review status changed](https://docs.cbpayapp.com/api-reference/transaction-review-status-changed.md): A transaction of the account changed its review status (`in_review` when the transactional firewall holds it, `info_requested`, `released`, `rejected`). The payload is deliberately neutral: status and operation summary only — internal review reasons or compliance notes are never included. A `rejecte…
- [Crypto deposit credited](https://docs.cbpayapp.com/api-reference/crypto-deposit-credited.md): An on-chain deposit was confirmed and credited (net of the funding fee) to the balance of the wallet's asset (`USDT` or `USDC`).
- [Crypto deposit held for compliance review](https://docs.cbpayapp.com/api-reference/crypto-deposit-held-for-compliance-review.md): An incoming on-chain deposit was NOT credited because the sender address shows severe risk (sanctions / direct illicit funds). The operator's compliance team reviews the hold and releases (credits) or rejects it.
- [Crypto deposit credited with a risk alert](https://docs.cbpayapp.com/api-reference/crypto-deposit-credited-with-a-risk-alert.md): An incoming deposit was credited normally, but the sender address shows high risk. Informational — no action is required on the funds.
- [Crypto withdrawal status changed](https://docs.cbpayapp.com/api-reference/crypto-withdrawal-status-changed.md): An on-chain withdrawal reached a new state.
- [Banking profile verification changed](https://docs.cbpayapp.com/api-reference/banking-profile-verification-changed.md): Fires when the banking profile verification state changes (submitted, under_review, approved, rejected) — for your own banking profile (`customer_kind: self`) and for the third parties you registered (`customer_kind: third_party`, with `third_party_id` matching GET /v1/banking/third-parties/{id}).
- [Bank payment status changed](https://docs.cbpayapp.com/api-reference/bank-payment-status-changed.md): Fires when a bank payment reaches a new state (processing, completed, failed).
- [Eur virtual iban inbound](https://docs.cbpayapp.com/api-reference/eur-virtual-iban-inbound.md): Emitted when an inbound banking event addressed to a virtual IBAN is normalized for the owning account. The payload carries the IBAN, amount, currency, reference, payment rail and provider event identifier.
- [Card transaction](https://docs.cbpayapp.com/api-reference/card-transaction.md): Fires on every card transaction lifecycle change: authorized (real-time hold), reversed (funds returned) and settled adjustments. Same signature headers as every delivery.
- [Card status changed](https://docs.cbpayapp.com/api-reference/card-status-changed.md): Fires when a card changes state (active, frozen, cancelled), including automatic freezes when the monthly fee cannot be charged.
- [Kyc verification status changed](https://docs.cbpayapp.com/api-reference/kyc-verification-status-changed.md): Fires on every KYC submission lifecycle change (submitted, in_review, changes_requested, more_info_required, escalated, approved, approved_partial, rejected). Your own onboarding arrives with self_onboarding: true. decision_source tells whether the decision was made by the automatic engine (auto) or…
- [Kyb verification status changed](https://docs.cbpayapp.com/api-reference/kyb-verification-status-changed.md): Fires on every KYB submission lifecycle change, including AML/risk/report signals from the review. decision_source tells whether the decision was made by the automatic engine (auto) or by a human reviewer (admin); it is present on final decisions.
- [Kyc link completed](https://docs.cbpayapp.com/api-reference/kyc-link-completed.md): Fires when your customer completes a hosted KYC link; the submission is created.
- [Kyb link completed](https://docs.cbpayapp.com/api-reference/kyb-link-completed.md): Fires when your customer completes a hosted KYB link; the submission is created.
- [Kyc document ocr finished](https://docs.cbpayapp.com/api-reference/kyc-document-ocr-finished.md): Fires when the OCR validation of a document uploaded through the API finishes.
- [Kyb document ocr finished](https://docs.cbpayapp.com/api-reference/kyb-document-ocr-finished.md): Fires when the OCR validation of a KYB document finishes.
- [Liveness check completed](https://docs.cbpayapp.com/api-reference/liveness-check-completed.md): Fires when the video liveness check is completed from a liveness link.
- [Aml screening updated](https://docs.cbpayapp.com/api-reference/aml-screening-updated.md): Fires when the AML screening finishes, a case changes, the risk changes or a monitored transaction is reviewed.
- [Segregated wallet deposit received](https://docs.cbpayapp.com/api-reference/segregated-wallet-deposit-received.md): An on-chain deposit was confirmed at a segregated wallet. It does **not** touch the ledger (the balance lives on-chain in the wallet).
- [Segregated wallet send status changed](https://docs.cbpayapp.com/api-reference/segregated-wallet-send-status-changed.md): A send from a segregated wallet reached a new state (processing, completed or failed).
- [Segregated wallet key exported](https://docs.cbpayapp.com/api-reference/segregated-wallet-key-exported.md): Security alert: the private key of a segregated wallet was exported (shared custody). The payload never includes the key.
- [External movement on a segregated wallet](https://docs.cbpayapp.com/api-reference/external-movement-on-a-segregated-wallet.md): The activity sync detected an on-chain movement of a segregated wallet that did not go through the platform (expected under client custody, e.g. after importing or exporting the key). The wallet's activity record stays complete either way.
- [Suspected key compromise critical alarm](https://docs.cbpayapp.com/api-reference/suspected-key-compromise-critical-alarm.md): CRITICAL: funds left a platform-custody segregated wallet without going through the platform. By design this is impossible unless the private key leaked. Treat the key as compromised, move remaining funds to a new wallet and contact support immediately.
- [Corridor availability changed](https://docs.cbpayapp.com/api-reference/corridor-availability-changed.md): A payment corridor changed availability (`operational` / `degraded` / `down`) — fired on outages AND recoveries. Broadcast event: it is not tied to one of your operations, so it carries no `account_id`. Consume it idempotently (dedupe by delivery id). See the service status guide.
- [Applied balance adjustment](https://docs.cbpayapp.com/api-reference/applied-balance-adjustment.md): An administrative adjustment credited or debited the balance. Emitted only when the entry was actually applied: an adjustment awaiting a second approver, or the replay of an already-used idempotency key, does not emit.
- [Account status changed](https://docs.cbpayapp.com/api-reference/account-status-changed.md): The administrative status of the account changed (`active`, `blocked`, `closed`). Resending the same status does not emit.
- [Account security event](https://docs.cbpayapp.com/api-reference/account-security-event.md): A security fact of the account (sign-in, password change, factor added or removed, session revoked). Account-scoped deliveries redact `ip` and `user_agent`; organization-wide admin views retain forensic `user_agent` and the resolved actor IP fields `actor_ip` and `actor_ip_source`, which are not par…
- [Fraud and identity report ready](https://docs.cbpayapp.com/api-reference/fraud-and-identity-report-ready.md): A Qscore fraud and identity report finished generating for the account. The event is account-scoped, signed like every other webhook and never includes the PDF or detailed fraud signals. Respond 2xx to acknowledge the delivery.
- [Qscore credit report ready](https://docs.cbpayapp.com/api-reference/qscore-credit-report-ready.md): A Qscore credit report purchased with `POST /v1/qscore/reports` finished generating successfully. The payload carries the report identity, the resulting score/band and the public `verify_code` (shareable with the subject as proof of authenticity at `GET /verify/qscore/{code}`). If the generation fai…
- [Qscore score changed](https://docs.cbpayapp.com/api-reference/qscore-score-changed.md): A newly generated Qscore report produced a score different from the subject's previous known score (e.g. on a monitoring re-pull or a new purchase). Emitted only when the score actually changes; the payload carries the old and new score/band pair so you can decide whether to act. Subscribe to this e…
- [Qscore monitoring alert](https://docs.cbpayapp.com/api-reference/qscore-monitoring-alert.md): A subject the account monitors via `PUT /v1/qscore/subjects/{docID}/monitoring` changed since the last check. `triggers` lists what fired the alert: `score_drop_below` (the score crossed the subscription's `monitor_since_score` threshold downward: previous >= threshold, new < threshold), `new_record…
- [Qscore batch scoring completed](https://docs.cbpayapp.com/api-reference/qscore-batch-scoring-completed.md): A batch scoring job created with `POST /v1/qscore/batches` finished processing all of its items. This is the single completion signal of the batch: the individual reports do **not** emit their own `risk_report_ready` webhook (and no per-item email is sent). `status` is `completed` when every item su…
- [Qscore consent granted by the holder](https://docs.cbpayapp.com/api-reference/qscore-consent-granted-by-the-holder.md): A consent link created with `POST /v1/qscore/consents` was granted: the holder opened the public page, connected their bank through open finance and authorized the request (their verified document matched the subject document). The consent now unlocks the positive banking data of the subject in new…
- [Qscore consent revoked](https://docs.cbpayapp.com/api-reference/qscore-consent-revoked.md): A consent link was revoked, either by the holder declining the request on the public page or by your account calling `POST /v1/qscore/consents/{id}/revoke`. A revoked consent no longer feeds positive banking data into new Qscore reports.
- [Wallet signature proof created](https://docs.cbpayapp.com/api-reference/wallet-signature-proof-created.md): A signature proof was created with a segregated wallet (`POST /v1/segregated-wallets/{walletID}/signatures`). The wallet signed a message with the chain-native standard (EIP-191 for ETH/EVM, TIP-191 for TRON) inside the anti-phishing CBPay Signature Proof envelope. The proof can be verified publicly…
- [External wallet linked](https://docs.cbpayapp.com/api-reference/external-wallet-linked.md): An external wallet (`custody=client`) was linked to the account by solving a nonce challenge (`POST /v1/wallet-links/challenges` + `POST /v1/wallet-links/verify`). The wallet stays under the client's custody; the link only proves ownership of the address.

## OpenAPI Specs

- [openapi](/mcp-pack/openapi.yaml)
- [openapi](/openapi.yaml)
- [openapi.zh](/mcp-pack/openapi.zh.yaml)
- [openapi.zh](/openapi.zh.yaml)
