Skip to main content
This quickstart takes an approved customer from a payment route to a live virtual account: create the route, get its deposit details, and receive fiat that Rain converts to stablecoin and delivers on-chain.

Before you begin

Complete the shared setup steps: get your API keys, configure webhooks, and get your customer through compliance approval. Opening a virtual account also needs the payments verification described in Payments Compliance, since Rain gates money movement independently from card-issuing approval.
1

Confirm payments verification

Opening a virtual account runs a check that’s separate from the Cards KYC or KYB you completed in the hub: an account-owner verification called a Customer Identification Program (CIP) check. Rain runs this automatically for Rain-Managed customers. For Partner-Managed customers, you verify the account owner yourself and Rain still screens the party.You don’t call a separate endpoint for this. Creating a payment route in the next step checks the customer’s verification for you:
  • A verified customer gets an active route synchronously.
  • An unverified customer gets a 403 by default. Programs with deferred KYC enabled get a pending route instead, which activates once the customer clears verification, as described in the next step.
See Payments Compliance for the full picture, including transaction monitoring and on-chain screening.
2

Create a payment route

Call the payment routes endpoint with a fiat source and an onchain destination. Rain checks payments verification and regional restrictions at creation time.
See Create a Payment Route for the full request and response reference.
For a customer who has already cleared payments verification, Rain provisions the route synchronously: it comes back active with a full depositAddress, shown in the next step. On a program with deferred KYC enabled, an unverified customer’s route comes back pending with no depositAddress. Continue to the next step in that case.
3

Get the named virtual account details

An active route’s depositAddress is the virtual account: a named beneficiary account you give to your customer so they can send fiat by ACH or wire.
If your route came back pending instead, wait for the paymentRoute.created webhook before you share deposit details:
A pending route is returned immediately from the create call so you have its id, but wait for the paymentRoute.created webhook before you share deposit details with the customer. See Payment Routes for the full webhook payload.
4

Funds land on-chain

Once your customer sends fiat to the virtual account, Rain converts it to the destination stablecoin and delivers it to the onchain address you specified, no additional API call needed.Rain notifies you as the transfer progresses through the transactionTransfer webhooks. See Transaction Webhooks for the full lifecycle and payload.

What’s next

Onramps

See the full onramp guide, including supported currencies, chains, and error handling.

Payments Compliance

Understand account-owner verification, transaction monitoring, and on-chain screening.

Transaction Webhooks

Track a transfer from creation through settlement.