Skip to main content
Your users receive crypto on-chain through deposit addresses that Ripio generates for them, and send it out with withdrawals to any external address. For request and response details, follow the endpoint link in each step. Both flows start from the same setup as trading: an access token, an end user and, to withdraw, an approved KYC.

Deposits

1

Create a deposit address

Request an address for the end user on a network enabled for your account (e.g. ETHEREUM). Calling it again returns the same address.The response is a list: networks of the same family share an address, so one EVM address is returned for every EVM network enabled for your account. On networks where addresses are shared between users, the response also includes a memo that identifies the user — show it to them, since a deposit without it can’t be credited to them.→ Create Address for End User · List End User’s Addresses
2

The user sends crypto to the address

Ripio detects the deposit on-chain and credits the user’s balance once it is confirmed.
3

Follow the deposit

Each status change of the deposit is notified with a DEPOSIT webhook; the final one for a credited deposit is DEPOSIT.COMPLETED. You can also poll the deposits list — to catch up on changes, sort by updated_at and filter by update date.→ List Deposits · Retrieve Deposit · Crypto as a Service Webhooks

Auto-swap addresses

An auto-swap address is a deposit address that converts every deposit into an asset preset for your account and withdraws the result to a target_address. It runs at the best market price once the deposit is confirmed, with trading and withdrawal fees deducted before sending. Each run is notified with an AUTOSWAP.UPDATE webhook. → Create Auto Swap Address · List Auto Swap Addresses · Update target_address
Creating an auto-swap address that already exists returns it without changing its target_address. To change the destination, use the update endpoint.

Withdrawals

1

Get a withdrawal fee

Request a fee for the currency and network of the withdrawal. The fee is held for a short time (see expires_at) and does not depend on the amount.→ Create Withdrawal Fee
2

Create the withdrawal

Send the end_user, currency, network, destination address, amount, an external_ref, and the fee’s id as withdrawal_fee. currency and network must match the ones of the fee.
  • amount is what the destination receives. The user’s balance is debited amount plus the fee (debited_amount).
  • On networks that use a memo (Ripple, Stellar, TON and similar), memo is mandatory; on the others it is rejected.
  • external_ref is unique per account: retrying with the same one returns the withdrawal already created instead of sending a second one.
→ Create Withdrawal
3

Follow the withdrawal

Each status change is notified with a WITHDRAWAL webhook; WITHDRAWAL.COMPLETED comes with the on-chain hash. You can also retrieve it or list the withdrawals.→ Retrieve Withdrawal · List Withdrawals

Webhooks and missed notifications

Deposits, withdrawals and auto-swaps are notified through IPN webhooks. Use message_id to deduplicate: the same operation is notified several times as its status advances. If your endpoint was down, recover what you missed from the IPN messages history. → Webhooks Introduction · List IPN Messages

Common errors

The full list is in Error handling.

Testing in sandbox

  • Deposit addresses are created on test networks (for example ETHEREUM_SEPOLIA); send test funds to them to credit an end user.
  • Register your webhook URL with the IPN Webhooks endpoints, available only in sandbox. In production, ask the Ripio team to configure it.
  • To check that your endpoint receives and parses notifications, send a test message with Create Deposit IPN Notification for Testing. It sends a fixed sample message only: it does not create a deposit or credit any balance.