Mandates

Revoke a mandate with a wallet

Changed on

Customer-initiated. Removes the mandate's spending allowance on-chain using the customer's signed payloads from Get wallet revocation options. The customer signs the payloads themselves, so this call is unauthenticated. The mandate must have an active allowance and no approval or revocation in flight.

Returns a pending revocation and moves the mandate to revocation_pending. When the network transaction confirms, revokedAt is set and status becomes revocation_succeeded; if it does not complete, status becomes revocation_failed and a new revocation can be submitted. Follow progress with Get a mandate revocation or the acceptance.mandate.revocation_* webhooks.

A canceled mandate can still be revoked: the revocation sets revokedAt while canceledAt remains set.

post/v2/mandates/{mandateId}/revocations/wallet

Request

  • Base URL: https://api.cdp.coinbase.com/platform
  • URL: https://api.cdp.coinbase.com/platform/v2/mandates/{mandateId}/revocations/wallet
  • 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 to revoke.

Headers

X-Idempotency-Keystring

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

optionIdstring required

The identifier of the chosen option. Must match an optionId from the Get wallet revocation options response.

reasonstring

An optional human-readable reason for revoking the spending allowance.

metadataMetadata

Optional metadata as key-value pairs. Use this to store additional structured information on a resource, such as customer IDs, order references, or any application-specific data. Up to 10 key/value pairs may be provided. Keys and values are both strings. Keys must be ≤ 40 characters; values must be ≤ 500 characters.

Example request

{
  "optionId": "opt_b2c3d4e5-f6a7-8901-bcde-f23456789012",
  "signedPayloads": [
    {
      "payloadId": "payload_bf3048c1-0957-5gf8-cgf0-ddd33e046225",
      "signature": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890ab"
    }
  ],
  "reason": "Customer requested that the allowance be removed."
}

Response

Successfully created mandate wallet revocation.

revocationIdstring required

The ID of a revocation, a UUID prefixed by revocation_.

mandateIdstring required

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

status'pending' | 'succeeded' | 'failed' required

The status of a wallet revocation attempt:

  • pending: awaiting network confirmation.

  • succeeded: the spending allowance has been removed on-chain.

  • failed: the revocation did not complete (see error).

metadataMetadata

Optional metadata as key-value pairs. Use this to store additional structured information on a resource, such as customer IDs, order references, or any application-specific data. Up to 10 key/value pairs may be provided. Keys and values are both strings. Keys must be ≤ 40 characters; values must be ≤ 500 characters.

createdAtstring date-time required

The UTC ISO 8601 timestamp at which the revocation was created.

updatedAtstring date-time required

The UTC ISO 8601 timestamp at which the revocation was last updated.

Example response

{
  "revocationId": "revocation_9d2e7c14-3b8a-4f21-9c66-2a1e5d7b8f03",
  "mandateId": "mandate_82c879c1-84e1-44ed-a8c2-1ac239cf09ad",
  "status": "succeeded",
  "onchainTransactions": [
    {
      "transactionHash": "0xdef456789012345678901234567890abcdef1234567890abcdef1234567890ab",
      "network": "base"
    }
  ],
  "createdAt": "2026-08-21T14:10:00.000Z",
  "updatedAt": "2026-08-21T14:12:00.000Z"
}

Changes