---
title: "Cancel a token"
method: PUT
path: "/tokens/{tokenId}/cancel"
tags: ["Tokens"]
---

# Cancel a token

`PUT /tokens/{tokenId}/cancel`

The `PUT /tokens/{tokenId}/cancel` endpoint cancels a given token.

## Path parameters

- `tokenId` string, required

## Headers

- `token-customer-ip-address` string, ipv4
- `customer-initiated` boolean
- `token-customer-device-id` string

## Response `200`

Successful response

- CancelTokenResponse
  - `result` TokenOperationResult — Contains details about the canceled token.
    - `status` 'INVALID' | 'SUCCESS' | 'MORE_SIGNATURES_NEEDED' — Specifies the success or failure of the cancellation, the condition can be avoided by using a PRIVILEGED signature, rather than LOW or STANDARD.
    - `token` Token — Contains the details of each requested token returned according to the request's filtering parameters
      - `id` string — Identifies a unique authorization token for a transfer, standing order, or account information access.
      - `payload` union — Contains the details about the token specified by id.
        - object
          - `transfer` TransferBody — Contains the request payload for a transfer token representing a one-time payment.
            - `amount` string — The transaction amount with up to four digits after the decimal point.
            - `attachments` Attachment[] — Contains optional provider blob objects supporting the transfer/transaction.
              - …
            - `confirmFunds` boolean — If true, sufficient funds available for transfer are confirmed.
            - `currency` string, required — The <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank">ISO 4217</a> three letter currency code.
            - `executionDate` string — Specifies the execution date for the transfer (in <a href="https://www.iso.org/iso-8601-date-and-time-format.html" target="_blank">ISO 8601</a> format).
            - `instructions` TransferInstructions, required — Contains the transfer instructions for each payment.
              - …
            - `lifetimeAmount` string, required — The total amount over the life of the token, with up to four digits after the decimal point.
            - `remittanceReference` string — The creditor's reference for matching an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts receivable system.
            - `returnRefundAccount` boolean — Requests that a refund account be returned in the response of `GET transfers` for any amounts refunded.
          - `actingAs` ActingAs — Specifies another party for whom the token was created 'on behalf of'.
            - `displayName` string — The name of the recipient shown to the user; required when specifying `actingAs`, optional otherwise.
            - `refId` string — The TPP-generated reference identifier for the token. This is not to be confused with the `requestId`. The `refId` maps to the `tppRefId` in the bank's `consentRequest`. This is needed to match/verify the originating token request with the bank's consent request. <br/>We recommend that the `refId` should not contain special characters (the allowed characters are the 26-letter Latin alphabet, the numerical digits from 0-9 and the hyphen '-'). This field should not exceed 18 characters in length.
            - `secondaryName` string — The domain or email address of the recipient shown to the user along with the `displayName`.
          - `authorizationMetadata` TokenPayloadAuthorizationMetadataEntry — Bank-defined additional authorization properties.
          - `description` string — Description of the payment with the following qualifiers<ul><li>must not contain special characters</li> <li>length must be no greater than 255 characters</li><li>the description in a subsequent call must match description in originating request</li><li>the description omitted in originating request must also be omitted in subsequent calls</li><li>the description omitted in subsequent call will be replaced with `refId`, this field maps to the description in the bank's `consentRequest` presented to the user.<br/>**Warning** - If the description in a subsequent token request for lookups/changes/updates (retrieve, redeem, or cancel) doesn't match the description in the originating token request, an exception is thrown.</li></ul>
          - `effectiveAtMs` string, string — Sets when the token took effect in milliseconds, 1 day (24 hours) = 8640000000, 1 hour = 36000000, and 1 minute = 60000
          - `endorseUntilMs` string, string — The token can be endorsed until this time in milliseconds, 1 day (24 hours) = 8640000000, 1 hour = 36000000, and 1 minute = 60000
          - `expiresAtMs` string, string — Token expiration date-time. Access tokens typically have a 90-day lifespan unless overridden by `tokenExpiration` in the original token request. For transfer tokens, this is a bank-optional expiration time. Note - Not all banks support the override of the 90-day default
          - `from` TokenMember — Contains information identifying the Token.io member.
            - `alias` Alias — Alternate or additional member identification information.
              - …
            - `id` string, required — The Token.io-assigned `memberId` of the TPP.
          - `initiatorId` string — The `memberId` of the member that requested the token creation.
          - `issuer` TokenMember — Contains information identifying the Token.io member.
            - `alias` Alias — Alternate or additional member identification information.
              - …
            - `id` string, required — The Token.io-assigned `memberId` of the TPP.
          - `receiptRequested` boolean — Indicates whether the TPP requested an email confirmation of the token request be sent to the user.
          - `refId` string — The TPP-generated reference identifier for the token. This is not to be confused with the `requestId`. The `refId` maps to the `tppRefId` in the bank's `consentRequest`. This is needed to match/verify the originating token request with the bank's consent request. <br/>We recommend that the `refId` should not contain special characters (the allowed characters are the 26-letter Latin alphabet, the numerical digits from 0-9 and the hyphen '-'). This field should not exceed 18 characters in length.
          - `to` TokenMember — Contains information identifying the Token.io member.
            - `alias` Alias — Alternate or additional member identification information.
              - …
            - `id` string, required — The Token.io-assigned `memberId` of the TPP.
          - `tokenRequestId` string — Identifies the original token request. The value returned in the response to the original token request as the id.
          - `version` string — Token.io API version number
        - object
          - `standingOrder` StandingOrderBody — Contains the request payload for a token representing a standing order/recurring payment.
            - `amount` string, required — Specifies the transaction amount, with up to four digits after the decimal point, for payments scheduled according to frequency.
            - `currency` string, required — The <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank">ISO 4217</a> three letter currency code.
            - `endDate` string — Date when regularly scheduled payments end, in <a href="https://www.iso.org/iso-8601-date-and-time-format.html" target="_blank">ISO 8601</a> format.
            - `frequency` string — Specifies the <a href="https://www.iso.org/standard/55005.html" target="_blank">ISO 20022</a> code for the scheduled frequency of standing order payments occurring between the first and final payments. Options:<ul><li>DAIL - daily/once a day</li><li>WEEK - weekly/once a week</li><li>TOWK - twice weekly/two times a week</li><li>MNTH - monthly/once a month</li><li>TOMN - twice monthly/two times a month</li><li>QUTR - quarterly/once every three months</li><li>SEMI - semi-annually/twice a year</li><li>YEAR - annually/once a year</li></ul>
            - `instructions` TransferInstructions, required — Contains the transfer instructions for each payment.
              - …
            - `remittanceReference` string — Creditor's reference for matching an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts receivable system.
            - `returnRefundAccount` boolean — Requests that a refund account be returned in the response of `GET transfers` for any amounts refunded.
            - `startDate` string — The date when the regularly scheduled payments will start; uses YYYY-MM-DD or YYYYMMDD format.
          - `actingAs` ActingAs — Specifies another party for whom the token was created 'on behalf of'.
            - `displayName` string — The name of the recipient shown to the user; required when specifying `actingAs`, optional otherwise.
            - `refId` string — The TPP-generated reference identifier for the token. This is not to be confused with the `requestId`. The `refId` maps to the `tppRefId` in the bank's `consentRequest`. This is needed to match/verify the originating token request with the bank's consent request. <br/>We recommend that the `refId` should not contain special characters (the allowed characters are the 26-letter Latin alphabet, the numerical digits from 0-9 and the hyphen '-'). This field should not exceed 18 characters in length.
            - `secondaryName` string — The domain or email address of the recipient shown to the user along with the `displayName`.
          - `authorizationMetadata` TokenPayloadAuthorizationMetadataEntry — Bank-defined additional authorization properties.
          - `description` string — Description of the payment with the following qualifiers<ul><li>must not contain special characters</li> <li>length must be no greater than 255 characters</li><li>the description in a subsequent call must match description in originating request</li><li>the description omitted in originating request must also be omitted in subsequent calls</li><li>the description omitted in subsequent call will be replaced with `refId`, this field maps to the description in the bank's `consentRequest` presented to the user.<br/>**Warning** - If the description in a subsequent token request for lookups/changes/updates (retrieve, redeem, or cancel) doesn't match the description in the originating token request, an exception is thrown.</li></ul>
          - `effectiveAtMs` string, string — Sets when the token took effect in milliseconds, 1 day (24 hours) = 8640000000, 1 hour = 36000000, and 1 minute = 60000
          - `endorseUntilMs` string, string — The token can be endorsed until this time in milliseconds, 1 day (24 hours) = 8640000000, 1 hour = 36000000, and 1 minute = 60000
          - `expiresAtMs` string, string — Token expiration date-time. Access tokens typically have a 90-day lifespan unless overridden by `tokenExpiration` in the original token request. For transfer tokens, this is a bank-optional expiration time. Note - Not all banks support the override of the 90-day default
          - `from` TokenMember — Contains information identifying the Token.io member.
            - `alias` Alias — Alternate or additional member identification information.
              - …
            - `id` string, required — The Token.io-assigned `memberId` of the TPP.
          - `initiatorId` string — The `memberId` of the member that requested the token creation.
          - `issuer` TokenMember — Contains information identifying the Token.io member.
            - `alias` Alias — Alternate or additional member identification information.
              - …
            - `id` string, required — The Token.io-assigned `memberId` of the TPP.
          - `receiptRequested` boolean — Indicates whether the TPP requested an email confirmation of the token request be sent to the user.
          - `refId` string — The TPP-generated reference identifier for the token. This is not to be confused with the `requestId`. The `refId` maps to the `tppRefId` in the bank's `consentRequest`. This is needed to match/verify the originating token request with the bank's consent request. <br/>We recommend that the `refId` should not contain special characters (the allowed characters are the 26-letter Latin alphabet, the numerical digits from 0-9 and the hyphen '-'). This field should not exceed 18 characters in length.
          - `to` TokenMember — Contains information identifying the Token.io member.
            - `alias` Alias — Alternate or additional member identification information.
              - …
            - `id` string, required — The Token.io-assigned `memberId` of the TPP.
          - `tokenRequestId` string — Identifies the original token request. The value returned in the response to the original token request as the id.
          - `version` string — Token.io API version number
        - object
          - `access` AccessBody — Contains the request payload for a token representing account information access permissions.
            - `resources` AccessBodyResource[]
              - …
            - `transactionHistoryDays` integer — The number of transaction history days.
          - `actingAs` ActingAs — Specifies another party for whom the token was created 'on behalf of'.
            - `displayName` string — The name of the recipient shown to the user; required when specifying `actingAs`, optional otherwise.
            - `refId` string — The TPP-generated reference identifier for the token. This is not to be confused with the `requestId`. The `refId` maps to the `tppRefId` in the bank's `consentRequest`. This is needed to match/verify the originating token request with the bank's consent request. <br/>We recommend that the `refId` should not contain special characters (the allowed characters are the 26-letter Latin alphabet, the numerical digits from 0-9 and the hyphen '-'). This field should not exceed 18 characters in length.
            - `secondaryName` string — The domain or email address of the recipient shown to the user along with the `displayName`.
          - `authorizationMetadata` TokenPayloadAuthorizationMetadataEntry — Bank-defined additional authorization properties.
          - `description` string — Description of the payment with the following qualifiers<ul><li>must not contain special characters</li> <li>length must be no greater than 255 characters</li><li>the description in a subsequent call must match description in originating request</li><li>the description omitted in originating request must also be omitted in subsequent calls</li><li>the description omitted in subsequent call will be replaced with `refId`, this field maps to the description in the bank's `consentRequest` presented to the user.<br/>**Warning** - If the description in a subsequent token request for lookups/changes/updates (retrieve, redeem, or cancel) doesn't match the description in the originating token request, an exception is thrown.</li></ul>
          - `effectiveAtMs` string, string — Sets when the token took effect in milliseconds, 1 day (24 hours) = 8640000000, 1 hour = 36000000, and 1 minute = 60000
          - `endorseUntilMs` string, string — The token can be endorsed until this time in milliseconds, 1 day (24 hours) = 8640000000, 1 hour = 36000000, and 1 minute = 60000
          - `expiresAtMs` string, string — Token expiration date-time. Access tokens typically have a 90-day lifespan unless overridden by `tokenExpiration` in the original token request. For transfer tokens, this is a bank-optional expiration time. Note - Not all banks support the override of the 90-day default
          - `from` TokenMember — Contains information identifying the Token.io member.
            - `alias` Alias — Alternate or additional member identification information.
              - …
            - `id` string, required — The Token.io-assigned `memberId` of the TPP.
          - `initiatorId` string — The `memberId` of the member that requested the token creation.
          - `issuer` TokenMember — Contains information identifying the Token.io member.
            - `alias` Alias — Alternate or additional member identification information.
              - …
            - `id` string, required — The Token.io-assigned `memberId` of the TPP.
          - `receiptRequested` boolean — Indicates whether the TPP requested an email confirmation of the token request be sent to the user.
          - `refId` string — The TPP-generated reference identifier for the token. This is not to be confused with the `requestId`. The `refId` maps to the `tppRefId` in the bank's `consentRequest`. This is needed to match/verify the originating token request with the bank's consent request. <br/>We recommend that the `refId` should not contain special characters (the allowed characters are the 26-letter Latin alphabet, the numerical digits from 0-9 and the hyphen '-'). This field should not exceed 18 characters in length.
          - `to` TokenMember — Contains information identifying the Token.io member.
            - `alias` Alias — Alternate or additional member identification information.
              - …
            - `id` string, required — The Token.io-assigned `memberId` of the TPP.
          - `tokenRequestId` string — Identifies the original token request. The value returned in the response to the original token request as the id.
          - `version` string — Token.io API version number
      - `payloadSignatures` TokenSignature[] — Contains information about the payload signatures.
        - `action` 'INVALID' | 'ENDORSED' | 'CANCELED' — Specifies the signature validation action.
        - `signature` Signature — Contains information about the signing party. This is only present if a `tokenId` is present. It can be used to validate that the provided `tokenId` corresponds to the token request (this is needed for the Hosted Pages flows only).
          - `keyId` string — The id of the public key used to verify the signature. This is only present if a `tokenId` is present. It can be used to validate that the provided `tokenId` corresponds to the token request (this is needed for Hosted Pages flows only).
          - `memberId` string — The Token.io member id of the signing member.
          - `signature` string — The Base64url-encoded ciphertext signature.
      - `replacedByTokenId` string — The id of the latest token replacing the original `tokenId`.
      - `tokenRequestId` string — Identifies the original token request.

## Other responses

- `400` — The client specified an invalid argument
- `401` — The authorization information is missing or invalid
- `403` — Permission to access this endpoint is denied
- `404` — The requested entity, such as a payment, was not found
- `429` — Too many requests
- `500` — An unexpected or internal server error
- `501` — The operation was not implemented
- `503` — Service is unavailable
- `504` — Gateway has timed out

---

[API](https://skmtc.net/token/apis/token-io-s-open-banking-api-for-tpps.md) · [All operations](https://skmtc.net/token/apis/token-io-s-open-banking-api-for-tpps/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/token/token-io-s-open-banking-api-for-tpps/versions/5e8d6d2c24a1/schema)
