Coinbase’s hosted checkout runs this flow for you. Call these endpoints only when you build the checkout yourself.
How it works
Before you start, create a payment session.1. Get authorization options
Pass every address the connected wallet controls, up to 5, comma-separated. Each returned option gives the network, asset, amount, and payloads to sign.- Coinbase returns at most one option per asset, from the address with the highest stablecoin balance. That can be a Solana address.
- Addresses that aren’t chosen, for example because of insufficient funds, are omitted.
- Add
networkorassetonly when you must restrict the choice. The Solana network name issolanain every environment, including Sandbox.
EVM wallet
EVM wallet
Solana wallet
Solana wallet
network=solana only when the payment must come from Solana.This call doesn’t modify the session.
2. Sign the payloads
Sign every payload in the chosen option. The payloadtype tells you how to handle data:
Solana signatures
data.transaction is the unsigned transaction, base64-encoded. Coinbase broadcasts it, so you submit only the signature:
- Base64-decode
data.transaction. - Pass the bytes to Wallet Standard
signTransaction. - Take the 64-byte ed25519 signature of the signer:
data.signerAddressfor a payment, or the customer’s Solana address for a mandate approval. - Base58-encode that signature and submit it as
signature.
invalid_signature.
3. Submit the signatures
Submit the signatures with the chosenoptionId:
EVM wallet
EVM wallet
Solana wallet
Solana wallet
pending and moves to succeeded or failed. Track it with webhooks.
What to read next
Payment Sessions
Session lifecycle, authorization outcomes, and idempotency
Recurring Payments
Approve once, then authorize payments without a new signature
Webhooks
Get notified when authorization succeeds or fails
API Reference - Wallet Auth
Wallet authorization API