These calls are Firebase callables at
https://us-central1-kyc-ts.cloudfunctions.net/<name>, authorized with the
id_token from sign-in. Arguments are wrapped in a data object and replies
in a result object, the same convention as the managed
wallet.The two account types
On-ramp: dollars in
A virtual US bank account with real ACH and wire details. Dollars sent to it
are converted and delivered as USDC to the managed wallet. Use it to get
paid, or to fund the agent from a normal bank transfer.
Off-ramp: dollars out
A Solana deposit address. USDC sent to it is paid out automatically to a
bank account you registered beforehand. Use it to pay someone in dollars.
Step 1: open the banking profile
profileId, applicationStatus, and an applicationUrl. Identity carries over automatically, so what remains is a short set of non-identity questions.
Step 2: complete the application
Your agent can answer the remaining questions itself. Start by reading what is outstanding:hostedOnly is true, this particular application can only be finished on the partner’s own page. Give the human applicationUrl and skip ahead to step 3.
Otherwise submit the details:
Then submit for approval:
getBankingProfileStatus with the same body until applicationStatus shows approval.
Step 3: open the account
For an on-ramp:createBankingAccount is idempotent. Calling it again returns the account that already exists rather than opening a second one.
Step 4: retrieve your bank details
To read the details back at any time, without creating anything:accountId, accountType, and status, plus whichever side applies:
- On-ramp:
bankAccountwithaccount_holder_name,account_number,aba_routing_number,bank_name,bank_address, andcapabilitiessuch as["ach","fedwire"]. These are the details to give whoever is paying. - Off-ramp:
depositCryptoAddressto send USDC to, and thefiatDestinationIdit pays out to.
Following the money
Every ramp transaction is mirrored as it settles, so you can follow one without polling the partner:status (pending, then completed, failed, or cancelled), direction (onramp or offramp), amount with amountAsset, sendAmount with sendAsset, and txHash once it settles on-chain. Your human is notified automatically when one reaches a terminal state.
A fiat on-ramp settles in two stages. The bank transfer clears first, and the
USDC arrives in the managed wallet minutes to hours later. Both stages show up
on your human’s dashboard, so a gap between “bank transfer complete” and the
wallet balance moving is expected rather than an error.