Actors
- End user — owns the smart wallet, completes KYC, taps “Cash out”.
- Host app — hosts the SDK, owns the signing key, drives the UI.
- Archer API — prepares intents, calls Bridge, relays user operations.
- Bridge — KYC provider and off-ramp; issues liquidation addresses and settles fiat.
- Base network — executes the USDC transfer on chain.
Sequence
Steps
- Check status.
client.getBridgeStatus(). If not approved,startBridgeVerificationand send the end user throughkyc_link/tos_link. - Add a destination.
createExternalAccount(or list existing ones). Bridge validates the account (in the US, via VoP for supported rails). - Ensure a liquidation address.
ensureLiquidationAddressreturns a Base address that Bridge sweeps to fiat and settles to the external account. - Prepare.
prepareCashOutbuilds anerc20_transferintent from the end user’s smart wallet to the liquidation address and asks Archer to prepare the ERC-4337 user operation. - Authorize. The host calls its wallet-authorization surface with
prepared.intentandprepared.prepared.request_payload, receives a signature, and packages it asSignedPayload. - Submit.
submitWalletIntentreturns{ tx_hash, user_operation_hash }. The transfer executes on Base. - Settle. Bridge detects the deposit at the liquidation address and initiates fiat settlement to the linked bank account. Poll
getOfframpHistoryfor status.
Failure recovery
- If step 5 fails (user rejects, signer offline), nothing has hit chain — you can retry from step 4.
- If step 6 succeeds but the user operation reverts on chain, the response carries a
tx_hash; the funds never leave the smart wallet. - Bridge settlement failures show up in
getOfframpHistorywithcombined_statusreflecting the reason.