---
updatedAt: 2026-07-17T13:09:45.000Z
agentTools:
  projectIndex: https://docs.mollie.com/llms.txt
---

# Cancel draft transfer

> 🚧 Beta feature
>
> This feature is currently in beta testing, and the final specification may still change.

Cancels a draft transfer created via this API. Transitions the draft transfer to `declined` with `statusReason.code` set to `deleted-by-creator`.

Only draft transfers created via this API, and still in `pending-review`, can be cancelled this way. A `422` is returned if the initiator has already started approving it.

In test mode, this always returns a synthetic `declined` draft. See [Create draft transfer](create-draft-transfer) for how to simulate `approved` and `declined` outcomes.

> 🔑 Access with
>
> [Advanced access token with **business-account-draft-transfers.write**](/reference/authentication)
>
> [OAuth access with **business-account-draft-transfers.write**](/reference/authentication)

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Business Accounts",
    "version": "1.0.0",
    "license": {
      "name": "Attribution-NonCommercial-ShareAlike 4.0 International",
      "identifier": "CC-BY-NC-SA-4.0"
    }
  },
  "servers": [
    {
      "url": "https://api.mollie.com/v2"
    }
  ],
  "security": [
    {
      "apiKey": []
    },
    {
      "advancedAccessToken": []
    },
    {
      "oAuth": []
    }
  ],
  "paths": {
    "/business-accounts/draft-transfers/{draftTransferId}": {
      "parameters": [
        {
          "name": "draftTransferId",
          "description": "Provide the ID of the related draft transfer.",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "pattern": "^badrt_.+$",
            "example": "badrt_87GByBuj4UCcUTEbs6aGJ"
          }
        }
      ],
      "delete": {
        "summary": "Cancel draft transfer",
        "x-speakeasy-name-override": "cancel",
        "tags": [
          "Draft Transfers API"
        ],
        "operationId": "cancel-draft-transfer",
        "security": [
          {
            "advancedAccessToken": [
              "business-account-draft-transfers.write"
            ]
          },
          {
            "oAuth": [
              "business-account-draft-transfers.write"
            ]
          }
        ],
        "description": "> 🚧 Beta feature\n>\n> This feature is currently in beta testing, and the final specification may still change.\n\nCancels a draft transfer created via this API. Transitions the draft transfer to `declined` with `statusReason.code` set to `deleted-by-creator`.\n\nOnly draft transfers created via this API, and still in `pending-review`, can be cancelled this way. A `422` is returned if the initiator has already started approving it.\n\nIn test mode, this always returns a synthetic `declined` draft. See [Create draft transfer](create-draft-transfer) for how to simulate `approved` and `declined` outcomes.\n\n> 🔑 Access with\n>\n> [Advanced access token with **business-account-draft-transfers.write**](/reference/authentication)\n>\n> [OAuth access with **business-account-draft-transfers.write**](/reference/authentication)",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "testmode": {
                    "type": [
                      "boolean",
                      "null"
                    ],
                    "description": "Most API credentials are specifically created for either live mode or test mode, in which case this parameter must not be sent. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.\n\nTest entities cannot be retrieved when the endpoint is set to live mode, and vice versa.",
                    "writeOnly": true,
                    "example": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The cancelled (declined) draft transfer object.",
            "content": {
              "application/hal+json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "resource": {
                          "type": "string",
                          "description": "Indicates the response contains a draft transfer object. Will always contain the string `business-account-draft-transfer` for this endpoint.",
                          "readOnly": true,
                          "example": "business-account-draft-transfer"
                        },
                        "id": {
                          "allOf": [
                            {
                              "type": "string",
                              "pattern": "^badrt_.+$",
                              "example": "badrt_87GByBuj4UCcUTEbs6aGJ"
                            }
                          ],
                          "description": "The identifier uniquely referring to this draft transfer. Mollie assigns this identifier at draft transfer creation time.",
                          "readOnly": true
                        },
                        "mode": {
                          "type": "string",
                          "description": "Whether this entity was created in live mode or in test mode.\n\nPossible values: `live` `test`",
                          "readOnly": true,
                          "example": "live"
                        },
                        "debtorIban": {
                          "type": "string",
                          "description": "The IBAN of the debtor's (sender) Mollie Business Account.",
                          "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9 ]+$",
                          "example": "NL55MLLE0123456789",
                          "writeOnly": true
                        },
                        "debtor": {
                          "allOf": [
                            {
                              "type": "object",
                              "description": "A party involved in the draft transfer, representing either the debtor (sender) or creditor (recipient). Contains the party's name and account details.",
                              "required": [
                                "fullName",
                                "account"
                              ],
                              "properties": {
                                "fullName": {
                                  "type": "string",
                                  "description": "The full name of the account holder.",
                                  "maxLength": 70,
                                  "example": "Jan Jansen"
                                },
                                "account": {
                                  "type": "object",
                                  "description": "The bank account details of the party.",
                                  "required": [
                                    "iban"
                                  ],
                                  "properties": {
                                    "iban": {
                                      "type": "string",
                                      "description": "The IBAN (International Bank Account Number) of the account holder.",
                                      "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]+$",
                                      "example": "NL02ABNA0123456789"
                                    }
                                  }
                                }
                              }
                            }
                          ],
                          "description": "The debtor (sender) of the draft transfer, resolved from `debtorIban` at creation time.",
                          "readOnly": true
                        },
                        "creditor": {
                          "description": "The creditor (recipient) of the draft transfer, including their name and account details.",
                          "type": "object",
                          "required": [
                            "fullName",
                            "account"
                          ],
                          "properties": {
                            "fullName": {
                              "type": "string",
                              "description": "The full name of the account holder.",
                              "maxLength": 70,
                              "example": "Jan Jansen"
                            },
                            "account": {
                              "type": "object",
                              "description": "The bank account details of the party.",
                              "required": [
                                "iban"
                              ],
                              "properties": {
                                "iban": {
                                  "type": "string",
                                  "description": "The IBAN (International Bank Account Number) of the account holder.",
                                  "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]+$",
                                  "example": "NL02ABNA0123456789"
                                }
                              }
                            }
                          }
                        },
                        "amount": {
                          "description": "The amount of the draft transfer, e.g. `{\"currency\":\"EUR\", \"value\":\"100.00\"}` if you would want to transfer €100.00.\n\nOnly `EUR` is supported.",
                          "type": "object",
                          "required": [
                            "currency",
                            "value"
                          ],
                          "properties": {
                            "currency": {
                              "type": "string",
                              "description": "A three-character ISO 4217 currency code.",
                              "example": "EUR"
                            },
                            "value": {
                              "type": "string",
                              "description": "A string containing an exact monetary amount in the given currency.",
                              "example": "10.00"
                            }
                          }
                        },
                        "description": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "A short description of the draft transfer. Once approved, this will appear on the bank statement of both the debtor and creditor.",
                          "maxLength": 140,
                          "example": "Invoice 12345"
                        },
                        "scheduledExecutionDate": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "date",
                          "description": "The date on which the resulting transfer will be executed, once approved. Defaults to same-day if omitted, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date format.",
                          "example": "2025-03-01"
                        },
                        "status": {
                          "allOf": [
                            {
                              "type": "string",
                              "description": "The status of the draft transfer.\n\nPossible values: `pending-review` `approved` `declined`",
                              "x-enumDescriptions": {
                                "pending-review": "Waiting for a human initiator to approve or decline it in Mollie Apps.",
                                "approved": "Approved by the initiator.",
                                "declined": "Declined, either by the initiator, the creator, or because the debtor account was closed."
                              },
                              "example": "pending-review"
                            }
                          ],
                          "readOnly": true
                        },
                        "statusReason": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "description": "The reason for the draft transfer's current status. `null` unless `status` is `declined`.",
                          "readOnly": true,
                          "required": [
                            "code",
                            "message"
                          ],
                          "properties": {
                            "code": {
                              "type": "string",
                              "description": "A machine-readable code that indicates the reason for the draft transfer's current status.\n\nPossible values: `deleted-by-creator` `declined-by-initiator` `account-closed`",
                              "x-enumDescriptions": {
                                "deleted-by-creator": "The draft transfer was deleted by the user who created it.",
                                "declined-by-initiator": "The initiator declined the draft transfer in Mollie Apps, optionally with a free-text reason.",
                                "account-closed": "The draft transfer was declined because the debtor account was closed."
                              },
                              "example": "deleted-by-creator"
                            },
                            "message": {
                              "type": "string",
                              "description": "A human-readable explanation of the status reason. For `declined-by-initiator`, this includes the initiator's free-text reason when they provided one.",
                              "example": "The draft transfer has been deleted by the user who created it"
                            }
                          }
                        },
                        "createdAt": {
                          "type": "string",
                          "description": "The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.",
                          "readOnly": true,
                          "example": "2024-03-20T09:13:37+00:00"
                        },
                        "approvedAt": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "The date and time the draft transfer was approved, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. `null` unless `status` is `approved`.",
                          "readOnly": true,
                          "example": "2025-01-01T12:05:00+00:00"
                        },
                        "declinedAt": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "The date and time the draft transfer was declined by the initiator, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. `null` unless `statusReason.code` is `declined-by-initiator`.",
                          "readOnly": true,
                          "example": "2025-01-01T12:05:00+00:00"
                        },
                        "deletedAt": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "The date and time the draft transfer was deleted via the [Cancel draft transfer](cancel-draft-transfer) endpoint, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. `null` unless `statusReason.code` is `deleted-by-creator`.",
                          "readOnly": true,
                          "example": "2025-01-01T12:05:00+00:00"
                        },
                        "testmode": {
                          "type": [
                            "boolean",
                            "null"
                          ],
                          "description": "Whether to create the entity in test mode or live mode.\n\nMost API credentials are specifically created for either live mode or test mode, in which case this parameter must not be sent. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.",
                          "writeOnly": true,
                          "example": false
                        },
                        "_links": {
                          "type": "object",
                          "description": "Links to related resources.",
                          "readOnly": true,
                          "required": [
                            "self"
                          ],
                          "properties": {
                            "self": {
                              "type": "object",
                              "description": "The URL to this draft transfer.",
                              "properties": {
                                "href": {
                                  "type": "string",
                                  "example": "https://api.mollie.com/v2/business-accounts/draft-transfers/badrt_87GByBuj4UCcUTEbs6aGJ"
                                },
                                "type": {
                                  "type": "string",
                                  "example": "application/hal+json"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ],
                  "required": [
                    "resource",
                    "id",
                    "mode",
                    "debtor",
                    "creditor",
                    "amount",
                    "status",
                    "createdAt",
                    "_links"
                  ]
                },
                "examples": {
                  "cancel-draft-transfer-200": {
                    "summary": "Declined",
                    "value": {
                      "resource": "business-account-draft-transfer",
                      "id": "badrt_87GByBuj4UCcUTEbs6aGJ",
                      "mode": "live",
                      "debtor": {
                        "fullName": "Mollie B.V.",
                        "account": {
                          "iban": "NL55MLLE0123456789"
                        }
                      },
                      "creditor": {
                        "fullName": "Jan Jansen",
                        "account": {
                          "iban": "NL02ABNA0123456789"
                        }
                      },
                      "amount": {
                        "currency": "EUR",
                        "value": "100.00"
                      },
                      "description": "Invoice 12345",
                      "scheduledExecutionDate": "2025-03-01",
                      "status": "declined",
                      "statusReason": {
                        "code": "deleted-by-creator",
                        "message": "The draft transfer has been deleted by the user who created it"
                      },
                      "createdAt": "2025-01-01T12:00:00+00:00",
                      "approvedAt": null,
                      "declinedAt": null,
                      "deletedAt": "2025-01-01T12:05:00+00:00",
                      "_links": {
                        "self": {
                          "href": "https://api.mollie.com/v2/business-accounts/draft-transfers/badrt_87GByBuj4UCcUTEbs6aGJ",
                          "type": "application/hal+json"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No entity with this ID exists.",
            "content": {
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "description": "An error response object.",
                  "required": [
                    "status",
                    "title",
                    "detail",
                    "_links"
                  ],
                  "properties": {
                    "status": {
                      "type": "integer",
                      "description": "The status code of the error message. This is always the same code as the status code of the HTTP message itself.",
                      "minimum": 400,
                      "maximum": 599,
                      "example": 404
                    },
                    "title": {
                      "type": "string",
                      "description": "The HTTP reason phrase of the error. For example, for a `404` error, the `title` will be `Not Found`.",
                      "example": "Not Found"
                    },
                    "detail": {
                      "type": "string",
                      "description": "A detailed human-readable description of the error that occurred.",
                      "example": "The resource does not exist"
                    },
                    "field": {
                      "type": "string",
                      "description": "If the error was caused by a value provided by you in a specific field, the `field` property will contain the name of the field that caused the issue.",
                      "example": "description"
                    },
                    "_links": {
                      "type": "object",
                      "required": [
                        "documentation"
                      ],
                      "properties": {
                        "documentation": {
                          "type": "object",
                          "description": "The URL to the generic Mollie API error handling guide.",
                          "required": [
                            "href",
                            "type"
                          ],
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "https://docs.mollie.com/errors"
                            },
                            "type": {
                              "type": "string",
                              "example": "text/html"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "status": 404,
                  "title": "Not Found",
                  "detail": "No entity exists with token 'uct_abcDEFghij123456789'",
                  "_links": {
                    "documentation": {
                      "href": "...",
                      "type": "text/html"
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "The draft transfer cannot be cancelled. Only draft transfers with status `pending-review` can be cancelled.",
            "content": {
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "description": "An error response object.",
                  "required": [
                    "status",
                    "title",
                    "detail",
                    "_links"
                  ],
                  "properties": {
                    "status": {
                      "type": "integer",
                      "description": "The status code of the error message. This is always the same code as the status code of the HTTP message itself.",
                      "minimum": 400,
                      "maximum": 599,
                      "example": 404
                    },
                    "title": {
                      "type": "string",
                      "description": "The HTTP reason phrase of the error. For example, for a `404` error, the `title` will be `Not Found`.",
                      "example": "Not Found"
                    },
                    "detail": {
                      "type": "string",
                      "description": "A detailed human-readable description of the error that occurred.",
                      "example": "The resource does not exist"
                    },
                    "field": {
                      "type": "string",
                      "description": "If the error was caused by a value provided by you in a specific field, the `field` property will contain the name of the field that caused the issue.",
                      "example": "description"
                    },
                    "_links": {
                      "type": "object",
                      "required": [
                        "documentation"
                      ],
                      "properties": {
                        "documentation": {
                          "type": "object",
                          "description": "The URL to the generic Mollie API error handling guide.",
                          "required": [
                            "href",
                            "type"
                          ],
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "https://docs.mollie.com/errors"
                            },
                            "type": {
                              "type": "string",
                              "example": "text/html"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "status": 422,
                  "title": "Unprocessable Entity",
                  "detail": "Only draft transfers with status 'pending-review' can be cancelled",
                  "_links": {
                    "documentation": {
                      "href": "...",
                      "type": "text/html"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/429-rate-limit"
          }
        },
        "x-readme": {
          "code-samples": [
            {
              "language": "shell",
              "code": "curl -X DELETE https://api.mollie.com/v2/business-accounts/draft-transfers/badrt_87GByBuj4UCcUTEbs6aGJ \\\n    -H \"Authorization: Bearer access_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM\""
            },
            {
              "language": "php",
              "code": "No example available.",
              "install": "composer require mollie/mollie-api-php"
            },
            {
              "language": "node",
              "code": "No example available.",
              "install": "npm install mollie-api-typescript"
            },
            {
              "language": "python",
              "code": "No example available.",
              "install": "pip install mollie-api-py"
            },
            {
              "language": "ruby",
              "code": "No example available.",
              "install": "gem install mollie-api-ruby"
            }
          ]
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "Authenticates API requests for a single website profile. Each key targets\neither live mode (`live_...`) or test mode (`test_...`).\n\nKeys are shown only once, at creation. Store the key securely — it cannot\nbe retrieved afterwards. If lost, create a new key under Developers → API\naccess tokens in the Dashboard and revoke the old one.",
        "x-default": "live_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"
      },
      "advancedAccessToken": {
        "type": "http",
        "scheme": "bearer",
        "description": "Authenticates API requests with configurable permissions. Can access\norganization-level resources and optionally scope to a specific payment\nprofile (`access_...`). Use for advanced integrations — such as bookkeeping\nor reporting tools — that need fine-grained control over API access.\n\nTokens are shown only once, at creation. Store it securely — it cannot be\nretrieved afterwards. If lost, create a new token under Developers → API\naccess tokens in the Dashboard and revoke the old one.",
        "x-default": "access_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"
      },
      "oAuth": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://my.mollie.com/oauth2/authorize",
            "tokenUrl": "https://api.mollie.com/oauth2/tokens",
            "scopes": {}
          }
        }
      }
    },
    "responses": {
      "429-rate-limit": {
        "description": "Rate Limit has been reached.",
        "content": {
          "application/hal+json": {
            "schema": {
              "type": "object",
              "description": "An error response object.",
              "required": [
                "status",
                "title",
                "detail",
                "_links"
              ],
              "properties": {
                "status": {
                  "type": "integer",
                  "description": "The status code of the error message. This is always the same code as the status code of the HTTP message itself.",
                  "minimum": 400,
                  "maximum": 599,
                  "example": 404
                },
                "title": {
                  "type": "string",
                  "description": "The HTTP reason phrase of the error. For example, for a `404` error, the `title` will be `Not Found`.",
                  "example": "Not Found"
                },
                "detail": {
                  "type": "string",
                  "description": "A detailed human-readable description of the error that occurred.",
                  "example": "The resource does not exist"
                },
                "field": {
                  "type": "string",
                  "description": "If the error was caused by a value provided by you in a specific field, the `field` property will contain the name of the field that caused the issue.",
                  "example": "description"
                },
                "_links": {
                  "type": "object",
                  "required": [
                    "documentation"
                  ],
                  "properties": {
                    "documentation": {
                      "type": "object",
                      "description": "The URL to the generic Mollie API error handling guide.",
                      "required": [
                        "href",
                        "type"
                      ],
                      "properties": {
                        "href": {
                          "type": "string",
                          "example": "https://docs.mollie.com/errors"
                        },
                        "type": {
                          "type": "string",
                          "example": "text/html"
                        }
                      }
                    }
                  }
                }
              }
            },
            "example": {
              "status": 429,
              "title": "Too Many Requests",
              "detail": "You have exceeded the rate limit. Please slow down your requests.",
              "_links": {
                "documentation": {
                  "href": "https://docs.mollie.com/overview/handling-errors",
                  "type": "text/html"
                }
              }
            }
          }
        }
      }
    }
  },
  "x-readme": {
    "explorer-enabled": false,
    "samples-languages": [
      "shell",
      "php",
      "node",
      "python",
      "ruby"
    ]
  }
}
```