Skip to main content
GET
/
v2
/
payment-sessions
/
{paymentSessionId}
/
authorizations
/
wallet
/
options
Get wallet authorization options
curl --request GET \
  --url https://api.cdp.coinbase.com/platform/v2/payment-sessions/{paymentSessionId}/authorizations/wallet/options \
  --header 'Authorization: Bearer <token>'
{
  "options": [
    {
      "optionId": "opt_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "source": {
        "address": "0xAbC1234567890aBcDeF1234567890AbCdEf123456",
        "network": "base",
        "asset": "usdc"
      },
      "amount": "1.00",
      "asset": "usdc",
      "network": "base",
      "payloads": [
        {
          "payloadId": "payload_af2937b0-9846-4fe7-bfe9-ccc22d935114",
          "type": "eip3009",
          "data": {
            "types": {
              "EIP712Domain": [
                {
                  "name": "name",
                  "type": "string"
                },
                {
                  "name": "version",
                  "type": "string"
                },
                {
                  "name": "chainId",
                  "type": "uint256"
                },
                {
                  "name": "verifyingContract",
                  "type": "address"
                }
              ],
              "TransferWithAuthorization": [
                {
                  "name": "from",
                  "type": "address"
                },
                {
                  "name": "to",
                  "type": "address"
                },
                {
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "name": "validAfter",
                  "type": "uint256"
                },
                {
                  "name": "validBefore",
                  "type": "uint256"
                },
                {
                  "name": "nonce",
                  "type": "bytes32"
                }
              ]
            },
            "primaryType": "TransferWithAuthorization",
            "domain": {
              "name": "USD Coin",
              "version": "2",
              "chainId": 8453,
              "verifyingContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
            },
            "message": {
              "from": "0x1111111111111111111111111111111111111111",
              "to": "0x2222222222222222222222222222222222222222",
              "value": "1000000",
              "validAfter": "0",
              "validBefore": "1767225600",
              "nonce": "0x8f5c2d6f4b9a1e3c7d2f8a6b5c4e3d2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d"
            }
          }
        }
      ]
    },
    {
      "optionId": "opt_b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "source": {
        "address": "0xDeF9876543210FeDcBa9876543210FedcBa987654",
        "network": "base",
        "asset": "usdc"
      },
      "amount": "1.00",
      "asset": "usdc",
      "network": "base",
      "payloads": [
        {
          "payloadId": "payload_bg5160f4-c290-8li1-fjc3-ggg66h379558",
          "type": "eip3009",
          "data": {
            "types": {
              "EIP712Domain": [
                {
                  "name": "name",
                  "type": "string"
                },
                {
                  "name": "version",
                  "type": "string"
                },
                {
                  "name": "chainId",
                  "type": "uint256"
                },
                {
                  "name": "verifyingContract",
                  "type": "address"
                }
              ],
              "TransferWithAuthorization": [
                {
                  "name": "from",
                  "type": "address"
                },
                {
                  "name": "to",
                  "type": "address"
                },
                {
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "name": "validAfter",
                  "type": "uint256"
                },
                {
                  "name": "validBefore",
                  "type": "uint256"
                },
                {
                  "name": "nonce",
                  "type": "bytes32"
                }
              ]
            },
            "primaryType": "TransferWithAuthorization",
            "domain": {
              "name": "USD Coin",
              "version": "2",
              "chainId": 8453,
              "verifyingContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
            },
            "message": {
              "from": "0x3333333333333333333333333333333333333333",
              "to": "0x2222222222222222222222222222222222222222",
              "value": "1000000",
              "validAfter": "0",
              "validBefore": "1767225600",
              "nonce": "0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b"
            }
          }
        }
      ]
    }
  ]
}

Path Parameters

paymentSessionId
string
required

The unique identifier of the payment session. The ID of the payment session, a UUID prefixed by paymentSession_.

Pattern: ^paymentSession_[a-f0-9\-]{36}$
Example:

"paymentSession_82c879c1-84e1-44ed-a8c2-1ac239cf09ad"

Query Parameters

addresses
string[]
required

The payer wallet addresses to generate authorization options for. Provide between 1 and 5 unique addresses, comma-separated (e.g. ?addresses=0xA,0xB). Each returned option's source.address identifies which requested address it applies to. If a requested address has no eligible authorization options, it is simply absent from options; clients should compare source.address against the requested set to detect this.

Required array length: 1 - 5 elements

A blockchain address. Format varies by network (e.g., 0x-prefixed for EVM, base58 for Solana).

Required string length: 1 - 128
network
enum<string>

Optional filter to restrict options to a specific blockchain network. The blockchain network supported for payment session sources. Testnet networks are only available in sandbox environments.

Available options:
arbitrum,
arbitrum-sepolia,
base,
base-sepolia,
ethereum,
ethereum-sepolia,
optimism,
optimism-sepolia,
polygon,
polygon-amoy
Example:

"base"

asset
string

Optional filter to restrict options to a specific asset. The symbol of the asset (e.g., eth, usd, usdc, usdt).

Required string length: 1 - 42
Example:

"usd"

Response

Successfully retrieved wallet authorization options.

The available wallet authorization options for a payment session. Each option describes one way the payer can authorize the payment from their wallet. Present the options to the payer and let them choose one.

options
Wallet Authorization Option · object[]
required

The available wallet authorization options.

Example:
[
{
"optionId": "opt_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"source": {
"address": "0xAbC1234567890aBcDeF1234567890AbCdEf123456",
"network": "base",
"asset": "usdc"
},
"amount": "1.00",
"asset": "usdc",
"network": "base",
"payloads": [
{
"payloadId": "payload_af2937b0-9846-4fe7-bfe9-ccc22d935114",
"type": "eip3009",
"data": {
"types": {
"EIP712Domain": [
{ "name": "name", "type": "string" },
{ "name": "version", "type": "string" },
{ "name": "chainId", "type": "uint256" },
{
"name": "verifyingContract",
"type": "address"
}
],
"TransferWithAuthorization": [
{ "name": "from", "type": "address" },
{ "name": "to", "type": "address" },
{ "name": "value", "type": "uint256" },
{ "name": "validAfter", "type": "uint256" },
{ "name": "validBefore", "type": "uint256" },
{ "name": "nonce", "type": "bytes32" }
]
},
"primaryType": "TransferWithAuthorization",
"domain": {
"name": "USD Coin",
"version": "2",
"chainId": 8453,
"verifyingContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
},
"message": {
"from": "0x1111111111111111111111111111111111111111",
"to": "0x2222222222222222222222222222222222222222",
"value": "1000000",
"validAfter": "0",
"validBefore": "1767225600",
"nonce": "0x8f5c2d6f4b9a1e3c7d2f8a6b5c4e3d2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d"
}
}
}
]
},
{
"optionId": "opt_b2c3d4e5-f6a7-8901-bcde-f12345678901",
"source": {
"address": "0xDeF9876543210FeDcBa9876543210FedcBa987654",
"network": "base",
"asset": "usdc"
},
"amount": "1.00",
"asset": "usdc",
"network": "base",
"payloads": [
{
"payloadId": "payload_bg5160f4-c290-8li1-fjc3-ggg66h379558",
"type": "eip3009",
"data": {
"types": {
"EIP712Domain": [
{ "name": "name", "type": "string" },
{ "name": "version", "type": "string" },
{ "name": "chainId", "type": "uint256" },
{
"name": "verifyingContract",
"type": "address"
}
],
"TransferWithAuthorization": [
{ "name": "from", "type": "address" },
{ "name": "to", "type": "address" },
{ "name": "value", "type": "uint256" },
{ "name": "validAfter", "type": "uint256" },
{ "name": "validBefore", "type": "uint256" },
{ "name": "nonce", "type": "bytes32" }
]
},
"primaryType": "TransferWithAuthorization",
"domain": {
"name": "USD Coin",
"version": "2",
"chainId": 8453,
"verifyingContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
},
"message": {
"from": "0x3333333333333333333333333333333333333333",
"to": "0x2222222222222222222222222222222222222222",
"value": "1000000",
"validAfter": "0",
"validBefore": "1767225600",
"nonce": "0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b"
}
}
}
]
}
]