- Loyalty and rewards programs that let users spend tokenized balances at checkout. The user pays in tokens, while the business receives USD.
- Fintech and neobank apps adding a spending layer that hold user balances in stablecoins for yield, foreign exchange flexibility, or by design. Users can pay with their balance at checkout, while the merchant receives fiat transparently.
How it works
- Create a Bridge USD external account for the Stripe Financial Account, then create a liquidation address that uses it. This is a one-time setup.
- When a user pays, call Privy’s Transfer API with the liquidation address as the destination.
- Bridge detects the incoming USDC, converts it to USD, and sends the USD to the Stripe Financial Account through ACH.
Prerequisites
- A Privy app with server-side API credentials and an embedded wallet that can authorize server-initiated transfers
- A Bridge account with a verified customer ID
- A Stripe account with Treasury enabled
- The routing number and account number for the Stripe Financial Account that receives payments
Set up the payment destination
Create a Stripe Financial Account
Create a Stripe Financial Account if the business does not already have one. Enable ACH inbound transfers, then save the routing and account numbers from its financial address.Create a Bridge USD external account
Create a USD Bridge external account for the Stripe Financial Account. Use the business’s legal name and address as the account-owner details, and use the Financial Account’s routing and account numbers.Create a Bridge liquidation address
Create a Bridge liquidation address for the business. Pass the external account ID at the top level so Bridge can send converted USD to the Stripe Financial Account through ACH.return_instructions.address is the Tempo address that receives the crypto if Bridge returns or fails the drain. The business must control this address, and it must be valid for the source chain.
Bridge returns a liquidation address that automatically liquidates received USDC and routes USD to the configured external account:
Send a payment from a Privy wallet
When a user confirms a payment, call the Transfer API with the Bridge liquidation address as the destination.id to track the payment:
succeeded, or use your existing wallet-action monitoring flow:
Reconcile fiat settlement
Asucceeded Privy wallet action confirms the onchain USDC transfer. It does not confirm that the USD ACH payment has settled in the Stripe Financial Account.
Bridge processes ACH payouts in daily batches, not in real time. Reconcile each drain through Bridge drain history and treat payment_processed as the successful settlement state. Handle every non-success state before marking the payment as settled.
Subscribe to Bridge’s real-time liquidation_address.drain webhooks to update the payment status as the drain progresses. The drain lifecycle documents the available states.
Next steps
Transfer API
Review transfer parameters, supported assets, and error handling.
Wallet action status
Track a transfer from pending to a terminal state.

