sign up and get card
sequenceDiagram
note over user,chain: **SIGN UP AND GET CARD**
actor user
participant app as Machines App
participant kyc as KYC Provider
participant rain as Rain API
participant wallet as User Wallet
participant chain as Blockchain
user->>app: Sign up (email / social / wallet)
app->>kyc: Submit identity info
kyc-->>app: KYC approved
app->>rain: Create virtual account
rain-->>app: Virtual account created
app->>rain: Deploy collateral contract
rain->>chain: Deploy user contract
chain-->>rain: Return contract address
app->>rain: Issue first virtual card
rain-->>app: Card created
app-->>user: Account ready (VA + contract + card)
note over wallet,chain: Wallet owns contract and signs all transactions
onramp fiat direct
sequenceDiagram
note over user,chain: **ONRAMP FUNDS (FIAT DIRECT)**
participant user as User
participant bank as User Bank
participant rain as Rain (VA + API)
participant chain as Blockchain (User Contract)
user->>bank: Initiate ACH/RTP/Wire deposit
bank-->>rain: Send fiat to Rain virtual account
rain->>rain: Convert fiat to stablecoins
rain->>chain: Settle stablecoins to user contract
chain-->>rain: Confirm balance update
onramp fiat private
sequenceDiagram
participant Wallet
participant Bank as Bank Service (Revolut / Cash App)
participant ZKP2P
participant Contract as Blockchain (User Contract)
Wallet->>Wallet: ONRAMP FUNDS – PRIVATE FIAT (ZKP2P)
Wallet->>Bank: initiate private transfer
Bank-->>ZKP2P: send funds + zero-knowledge proof
ZKP2P-->>Wallet: private payout to wallet
Wallet->>Contract: send to rain contract
Contract-->>Wallet: balance updated
onramp crypto direct
sequenceDiagram
participant Wallet
participant Converter as Converter (ChangeNow / FixedFlow / SideShift / DaimoPay)
participant Alias as Alias Relay (Veil / 0xBow / Railgun)
participant Contract as Blockchain (User Contract)
Wallet->>Wallet: ONRAMP FUNDS – CRYPTO (DIRECT / CONVERT / ALIAS)
alt Direct (token supported)
Wallet->>Contract: send token
Contract-->>Wallet: stable settled
else Convert (token unsupported)
Wallet->>Converter: swap to supported stable
Converter-->>Wallet: stable received
Wallet->>Contract: send stable
Contract-->>Wallet: settled
else Alias (extra privacy)
Wallet->>Alias: send asset
Alias->>Contract: relay to contract
Contract-->>Alias: settled
end
cards and balances
sequenceDiagram
participant Wallet
participant Rain as Rain API
participant C1 as Contract A
participant C2 as Contract B
participant Card1 as Card 1
participant Card2 as Card 2
Wallet->>Wallet: CARDS AND BALANCES – SINGLE VS MULTIPLE
Wallet->>Rain: issue cards under Contract A
Rain-->>Card1: card active
Rain-->>Card2: card active
Card1->>C1: spend (auth)
Card2->>C1: spend (auth)
Note over Card1,C1: all cards draw from one balance (Contract A)
Wallet->>Rain: deploy Contract B (extra fee)
Rain-->>Wallet: Contract B ready
Wallet->>Rain: issue cards under Contract B
Card1->>C2: spend (auth)
Note over Card1,C2: each contract has its own balance and unlimited cards
spend funds
sequenceDiagram
participant Wallet
participant Card as Virtual Card (Visa)
participant Rain as Rain API
participant Contract as Blockchain (User Contract)
participant Merchant as Merchant / POS
Wallet->>Wallet: SPEND FUNDS
Merchant->>Card: payment request (authorization)
Card->>Rain: forward auth + amount
Rain->>Contract: verify balance & lock funds
Contract-->>Rain: approval + stable transfer
Rain-->>Card: auth approved
Card-->>Merchant: payment complete
Contract-->>Wallet: balance updated
withdraw funds
sequenceDiagram
participant Wallet
participant Rain as Rain API (Co-sign)
participant Contract as Blockchain (User Contract)
participant Dest as Destination (Stable Out / Crypto)
Wallet->>Wallet: WITHDRAW FUNDS
Wallet->>Rain: request API signature
Rain-->>Wallet: API signature
Wallet->>Contract: submit tx (wallet + rain sig)
Contract-->>Dest: send out (stable or crypto)
Dest-->>Wallet: funds received