Crypto
Wallets and address management
wallets in cross river cross river’s crypto payments api provides two types of blockchain wallet records account wallets and external beneficiary wallets each wallet is securely managed within cross river’s infrastructure and tied to an account, ensuring full traceability and operational consistency account wallets account wallets are onchain addresses linked to specific cross river accounts they are used for receiving inbound stablecoin payments from external sources purpose receive inbound payments from external wallets association each wallet is tied to a unique cross river account creation generated using the post /v1/accounts/{accountnumber}/account addresses endpoint retrieval listed with get /v1/accounts/{accountnumber}/account addresses blockchains supported ethereum and solana security wallets are managed through enterprise grade custodianship customers do not manage private keys directly example request post /v1/accounts/2917000057/account addresses { "blockchain" "solana", "currency" "usdc" } example response { "id" "108489fd 9f2f 4b1d 9a4e b39d01164422", "accountnumber" "2917000057", "blockchain" "solana", "address" "4zmmc9srt5ri5x14gagxhahii3gnpaeerypjgzjdncdu", "title" "solana", "lastmodifiedat" "2025 11 22t16 53 08 1639985z" } external beneficiary wallets external beneficiary wallets represent outbound payment destinations that partners can register and reuse when sending funds to customers, vendors, or other entities purpose send outbound payments to an external blockchain wallet association each external wallet is linked to a specific cross river account creation created using the post /v1/accounts/{accountnumber}/external addresses endpoint retrieval listed with get /v1/accounts/{accountnumber}/external addresses beneficiary details includes the recipient’s legal name and address for compliance blockchains supported ethereum and solana example request post /v1/accounts/2917000057/external addresses { "title" "supplier wallet", "blockchain" "ethereum", "address" "0x0e6f76783822826ed173fee6265bdbbdfed4a0f5", "currency" "usdc", "beneficiary" { "name" "abc supplier llc", "addressline1" "500 commerce ave", "city" "jersey city", "stateprovince" "nj", "countrycode" "us", "postalcode" "07302" } } example response { "id" "6d5a90a0 4967 44ba 8380 b39d011abba0", "accountnumber" "2917000057", "title" "supplier wallet", "blockchain" "ethereum", "address" "0x0e6f76783822826ed173fee6265bdbbdfed4a0f5", "beneficiary" { "name" "abc supplier llc", "addressline1" "500 commerce ave", "city" "jersey city", "stateprovince" "nj", "countrycode" "us", "postalcode" "07302" }, "lastmodifiedat" "2025 11 22t17 09 23 9971536z" } payment operational overview account wallet inbound cross river or partner receives usdc from external wallets external beneficiary outbound partner sends usdc to verified recipients best practices follow these recommendations when managing wallet records through the api use descriptive titles assign clear names like “usdc solana wallet” or “vendor payout wallet” for easy identification maintain consistent blockchain mappings create wallets on the same network as your intended payment flows to avoid rejection errors validate external addresses before use always verify recipient wallet addresses using your internal procedures before initiating a payment limit wallet creation reuse existing account and beneficiary wallets when possible to maintain a clear audit trail monitor modification timestamps use lastmodifiedat to track when a wallet was created or updated for operational reporting