Mandates

Get wallet approval options

Changed on

Returns the available wallet approval options for a mandate. The mandate must be in created or approval_failed status, not expired, and have no approval or revocation in flight.

Provide one or more customer wallet addresses as query parameters. Each option specifies the network, asset, and payloads the customer must sign to approve the mandate. Present the options to the customer and let them choose one, then call Approve a mandate with a wallet with the selected option and its signed payloads.

This is a stateless read operation and does not modify the mandate. The payloads embed fresh on-chain signing data such as a nonce and deadline, so sign and submit the payloads from a single response rather than caching them.

If a requested address has no eligible approval options, it appears in ineligibleAddresses with a code and message instead of being absent from options.

get/v2/mandates/{mandateId}/approvals/wallet/options

Request

  • Base URL: https://api.cdp.coinbase.com/platform
  • URL: https://api.cdp.coinbase.com/platform/v2/mandates/{mandateId}/approvals/wallet/options
  • Auth: HTTP none

Path parameters

mandateIdstring required

The ID of the mandate, a UUID prefixed by mandate_.

Example:mandate_82c879c1-84e1-44ed-a8c2-1ac239cf09ad

The unique identifier of the mandate.

Query parameters

addressesBlockchainAddress[] required

The customer's wallet addresses to generate approval 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 approval options, it appears in ineligibleAddresses with a code explaining why.

[
  "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
]
network'arbitrum' | 'arbitrum-sepolia' | 'avalanche' | 'base' | 'base-sepolia' | 'ethereum' | 'ethereum-sepolia' | 'optimism' | 'optimism-sepolia' | 'polygon' | 'polygon-amoy' | 'solana' | 'solana-devnet'

The blockchain network supported for payment session sources. Testnet networks are only available in sandbox environments.

Example:base

Optional filter to restrict options to a specific blockchain network.

assetstring

The symbol of the asset (e.g., eth, usd, usdc, usdt).

Example:usd

Filter options by asset. Currently, only usdc and usdt return results.

Response

Successfully retrieved mandate wallet approval options.

Example response

{
  "options": [
    {
      "optionId": "opt_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "source": {
        "address": "0xAbC1234567890aBcDeF1234567890AbCdEf123456",
        "network": "base",
        "asset": "usdc"
      },
      "payloads": [
        {
          "payloadId": "payload_af2937b0-9846-4fe7-bfe9-ccc22d935114",
          "type": "eip2612",
          "data": {
            "types": {
              "EIP712Domain": [
                {
                  "name": "name",
                  "type": "string"
                },
                {
                  "name": "version",
                  "type": "string"
                },
                {
                  "name": "chainId",
                  "type": "uint256"
                },
                {
                  "name": "verifyingContract",
                  "type": "address"
                }
              ],
              "Permit": [
                {
                  "name": "owner",
                  "type": "address"
                },
                {
                  "name": "spender",
                  "type": "address"
                },
                {
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "name": "deadline",
                  "type": "uint256"
                }
              ]
            },
            "primaryType": "Permit",
            "domain": {
              "name": "USD Coin",
              "version": "2",
              "chainId": 8453,
              "verifyingContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
            },
            "message": {
              "owner": "0xAbC1234567890aBcDeF1234567890AbCdEf123456",
              "spender": "0x9Fb909eA400c2b8D99Be292DADf07e63B814527c",
              "value": "115792089237316195423570985008687907853269984665640564039457584007913129639935",
              "nonce": "0",
              "deadline": "1798761600"
            }
          }
        }
      ]
    }
  ],
  "ineligibleAddresses": []
}

Changes