Create a mandate
Changed onCreates a mandate denominated in asset. Optionally set policy to cap debits; if omitted, a Coinbase-configured monthly max applies. The response always includes the resolved policy.
Returns the mandate in created status with no source; it is not yet usable. Next step: have the customer approve it with Get wallet approval options then Approve a mandate with a wallet, which attaches the source and moves the mandate to approval_succeeded.
A mandate's terms can't be modified once created. To change them, cancel the mandate and create a new one.
Request
- Base URL: https://api.cdp.coinbase.com/platform
- URL: https://api.cdp.coinbase.com/platform/v2/mandates
- Auth: HTTP bearer
Headers
An optional string request header for making requests safely retryable. When included, duplicate requests with the same key will return identical responses. Refer to our Idempotency docs for more information on using idempotency keys.
Request body
Example request
{
"asset": "usdc",
"policy": {
"maxPerAuthorization": "50.00",
"maxPerPeriod": {
"amount": "500.00",
"period": "month"
}
},
"expiresAt": "2027-06-15T12:00:00.000Z",
"approvalRedirect": {
"failureUrl": "https://merchant.example.com/mandate/approval/failed",
"successUrl": "https://merchant.example.com/mandate/approval/success"
},
"revocationRedirect": {
"failureUrl": "https://merchant.example.com/mandate/revocation/failed",
"successUrl": "https://merchant.example.com/mandate/revocation/success"
},
"customerDisplay": {
"merchantName": "Acme Store"
},
"metadata": {
"customer_id": "cust_12345"
}
}Response
Successfully created mandate.
Example response
{
"mandateId": "mandate_82c879c1-84e1-44ed-a8c2-1ac239cf09ad",
"asset": "usdc",
"source": {
"address": "0xAbC1234567890aBcDeF1234567890AbCdEf123456",
"network": "base",
"asset": "usdc"
},
"policy": {
"maxPerAuthorization": "50.00",
"maxPerPeriod": {
"amount": "500.00",
"period": "month"
}
},
"status": "approval_succeeded",
"expiresAt": "2027-06-15T12:00:00.000Z",
"revocationUrl": "https://payments.coinbase.com/mandates/mandate_82c879c1-84e1-44ed-a8c2-1ac239cf09ad/revoke",
"approvalRedirect": {
"failureUrl": "https://merchant.example.com/mandate/approval/failed",
"successUrl": "https://merchant.example.com/mandate/approval/success"
},
"revocationRedirect": {
"failureUrl": "https://merchant.example.com/mandate/revocation/failed",
"successUrl": "https://merchant.example.com/mandate/revocation/success"
},
"customerDisplay": {
"merchantName": "Acme Store"
},
"metadata": {
"customer_id": "cust_12345"
},
"approvedAt": "2025-06-15T12:05:00.000Z",
"createdAt": "2025-06-15T12:00:00.000Z",
"updatedAt": "2025-06-15T12:05:00.000Z"
}Changes
- info
endpoint added
- info