Skip to main content
To fund an account, send a supported token to the account’s deposit address for the relevant chain. Unsupported tokens will not count toward the spending balance. They remain in the account and can be withdrawn.

Deposit flow

When you send a supported token to a deposit address:
  1. The system detects the on-chain transfer and creates a deposit in PENDING status.
  2. Once the transaction is finalized on-chain, the deposit moves to CONFIRMED.
  3. The deposit is validated.
  4. If validation passes, the deposit is APPROVED and the account balance is updated. If validation fails, the deposit is REJECTED.
You receive a CRYPTO_DEPOSIT_CREATED webhook when the deposit is first detected, and a CRYPTO_DEPOSIT_STATUS_UPDATED webhook at each subsequent status change.

Minimum deposit amount

Deposits below USD 0.50 are rejected with a REJECTED status. This threshold exists to prevent dust deposits. We recommend filtering out rejected deposits before displaying deposit history to your users, as low-value rejections add noise to the UI.

Checking deposit status

Look up a deposit directly using the deposit endpoint. Once a deposit is approved, the balance endpoint will reflect the updated balance.

Testing in sandbox

Deposit testing requires real on-chain transactions. There is no simulation shortcut for the deposit flow. You send actual tokens on testnet, and the system processes them end to end. To get sandbox tokens funded to your test wallet, reach out to your Reap contact. See Supported Assets for the token contract addresses on Ethereum Sepolia and Solana Devnet.

Scenario 1: Successful deposit

  1. Create an account and retrieve its deposit address for Ethereum Sepolia or Solana Devnet.
  2. Send RUSDC or RUSDT from your funded test wallet to that address.
  3. Confirm you receive a CRYPTO_DEPOSIT_CREATED webhook.
  4. Wait for CRYPTO_DEPOSIT_STATUS_UPDATED webhooks as the deposit progresses. The first will show status: CONFIRMED (the transaction has finalized on-chain). The second will show status: APPROVED (it has cleared validation and the balance has updated).
  5. Check the balance endpoint. It should reflect the deposited amount.

Scenario 2: Unsupported token

  1. Send native ETH or SOL to the same deposit address.
  2. Confirm you receive a CRYPTO_DEPOSIT_CREATED webhook confirming the transfer was detected.
  3. Confirm a CRYPTO_DEPOSIT_STATUS_UPDATED webhook with status: REJECTED. Unsupported tokens are rejected immediately on detection, without going through on-chain finalization.
  4. Check the assets endpoint to confirm the token appears there, and check the balance endpoint to confirm it is unchanged.