Introduction to Account Webhooks
Ripio uses webhooks to notify your application when a customer account changes state. By subscribing to these events, you can react in real time to account lifecycle transitions — for example, learning when a customer’s deposit account is ready to receive funds, or when a customer has been deactivated. Account events cover two parts of the lifecycle:- Deposit account readiness (
ACCOUNT.PROCESSING,ACCOUNT.ENABLED,ACCOUNT.DISABLED) — emitted while a customer’s fiat deposit account is being prepared, once it becomes ready to operate, and if it later can no longer be operated. These let you react to the account’s usability without polling the API after creation. - Account closure (
ACCOUNT.CLOSED) — emitted when a customer is deactivated, either from the Ripio partner dashboard or via the Deactivate Customer endpoint.
Event Payload Structure
Each Account event notification contains a JSON-formatted payload with the following top-level structure:eventType(String): The specific type of Account event that occurred, following the formatACCOUNT.<STATUS>.issueDatetime(String): UTC timestamp indicating when the event was triggered.account(Object): An object containing details of the account associated with the event. Its fields vary depending on theeventType— see each event type below.
Account Event Types
The following event types are available for account lifecycle changes:ACCOUNT.PROCESSING
- Description: Sent when a customer’s fiat deposit account has been created and is being prepared. For some payment methods the deposit instructions (e.g. the deposit key/identifier) are assigned asynchronously and are not yet available at this point — an
ACCOUNT.ENABLEDevent follows once they are. For payment methods where the account is usable immediately, this event is followed right away byACCOUNT.ENABLED. accountobject includes:
ACCOUNT.ENABLED
- Description: Sent when a customer’s fiat deposit account becomes ready to operate. The
fiatPaymentInstructionsnow carry the deposit details the end user needs to fund an on-ramp order, so you do not need to poll the API after creating the account. accountobject includes:
ACCOUNT.DISABLED
- Description: Sent when a customer’s fiat deposit account becomes disabled and can no longer be operated. After this event the account should not be used for new on-ramp orders.
accountobject includes:
Payload fields (ACCOUNT.PROCESSING / ACCOUNT.ENABLED / ACCOUNT.DISABLED)
The account object contains the following fields:
customerId(String, UUID): Your partner-facing customer ID for the affected customer.paymentMethodType(String): The payment method the deposit account is for (e.g.bank_transfer,breb).fiatPaymentInstructions(Object): The deposit instructions for the account. Its structure matches thefiatPaymentInstructionsreturned by the on-ramp session and order endpoints, and always includes astatusfield:status(String):processingwhile the account is being prepared,enabledonce it is ready to operate,disabledif it can no longer be operated.- While
statusisprocessing, the deposit key/identifier (e.g.brebKey,clabe,cvu) may benull; it is populated once the account isenabled.
These events are only emitted for payment methods backed by a persistent fiat deposit account. Payment methods that generate a one-off payment request per order do not produce account readiness events.
ACCOUNT.CLOSED
- Description: Sent when a customer account has been deactivated. After this event, all operations on the customer’s resources (KYC submissions, fiat accounts, on-ramp and off-ramp sessions and orders) will return
404. The account deactivation is irreversible — there is no reactivation endpoint. accountobject includes:
Payload fields (ACCOUNT.CLOSED)
The account object contains the following fields:
customerId(String, UUID): Your partner-facing customer ID for the affected customer.isActive(Boolean): The new active state of the customer. AlwaysfalseforACCOUNT.CLOSEDevents.