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
activeroute synchronously. - An unverified customer gets a
403by default. Programs with deferred KYC enabled get apendingroute instead, which activates once the customer clears verification, as described in the next step.
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 If your route came back
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.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.