Skip to main content
POST
Cancel payments

Overview

Cancels up to 100 payments in one request. It is the only way to cancel a SWIFT or T2 payment. The older per-scheme endpoints remain available for existing integrations: Cancel SEPA transaction (v1) and Cancel SDD payment (v0). You do not pass the schema and it is not returned. The platform derives it from the payments you reference - SEPA, SDD, SWIFT or T2, where SEPA covers both SEPA CT and Instant - and names it only when it rejects your reason or additionalComment. reason and paymentIds are required. additionalComment is optional, 1-105 characters.
All payments in one request must resolve to the same schema. A request mixing schemas is rejected in full with 400 MIXED_CANCELLATION_SCHEMAS.

Reason codes

reason must be valid for the derived schema. The enum in the schema below is the union across all schemas, so it accepts values your request will reject. SDD accepts both sets at request level and enforces the direction per payment. A reason valid for the other direction is rejected in results.

When you can send additionalComment

Reading the response

You get 200 OK whenever the request itself was well formed - including when every payment in it was rejected. Check results, not the status code.
Response
Every payment id you sent appears in results, sorted by id. A payment rejected on its own merits does not affect the others.
error is a human-readable message, not a stable code. Log it and show it to your operators, but do not branch on its text.

Errors

A 4xx response means nothing was cancelled.

What happens to an accepted payment

ACCEPTED means different things depending on whether the payment had already left the platform.
A payment in Created, To sign or Signed is cancelled outright. Its status becomes Cancelled, nothing is sent to the beneficiary bank, and no cancellation request is created - so you receive a payment-status-change webhook, not a payment-cancellation-status-change one.This is final. Nobody can refuse it.
Outbound SDD payments are the exception. They are cancellable only in Accepted and always create a cancellation request.

Extra conditions for SWIFT

A SWIFT payment that has already been sent is checked against the correspondent bank first. It is rejected when the payment has no UETR, when the debtor has no BIC to send the camt.056 from, when the correspondent BIC cannot be resolved from the payment, or when the correspondent does not support cancellation.
The capability lookup is live and fails closed: a correspondent that cannot be reached at that moment is treated as not supporting cancellation. Retry before treating this rejection as permanent.

Retrying

This endpoint takes no Idempotency-Key and does not need one. A payment whose cancellation is already in flight comes back as REJECTED, so you can replay a whole batch after a partial failure and only the payments that did not go through will be processed.
Do not send two cancellation requests for the same payment at the same time. Retry after the previous response, not alongside it.

Body

application/json
paymentIds
integer<int64>[]
required

Ids of the payments to cancel. All must resolve to the same cancellation schema.

Required array length: 1 - 100 elements
reason
enum<string>
required

Cancellation reason. The set of accepted values depends on the schema derived from the referenced payments — the enum below is the union across all schemas, not the set valid for any one request:

  • SEPA CT / INST: DUPL, CUST, FRAD, TECH, AC03, AM09
  • SEPA DD outbound: AC01, AC04, AC06, AC13, AG01, AG02, AM04, AM05, CNOR, DNOR, MD01, MD02, MD07, MS02, MS03, RC01, RR01, RR02, RR03, RR04, SL01, BE05, FF01, DT01, ED05, PY01
  • SEPA DD inbound: DUPL, AGNT, CURR, CUST, CUTA, UPAY, TECH, FRAD
  • SWIFT: DUPL, CUST, FRAD, TECH, AM09, AGNT, COVR, CURR, CUTA, UPAY
  • T2: DT01, DUPL, CUTA, TECH, UPAY, CUST, AGNT, FRAD, AM09, NARR
Available options:
AC01,
AC03,
AC04,
AC06,
AC13,
AG01,
AG02,
AGNT,
AM04,
AM05,
AM09,
BE05,
CNOR,
COVR,
CURR,
CUST,
CUTA,
DNOR,
DT01,
DUPL,
ED05,
FF01,
FRAD,
MD01,
MD02,
MD07,
MS02,
MS03,
NARR,
PY01,
RC01,
RR01,
RR02,
RR03,
RR04,
SL01,
TECH,
UPAY
additionalComment
string | null

Free-text detail accompanying the reason. Permitted only where the derived schema allows it:

  • SEPA CT / INST: with CUST, FRAD, AM09 or AC03
  • SEPA DD: not permitted
  • SWIFT: optional with any reason
  • T2: with any reason, and required when the reason is NARR
Required string length: 1 - 105

Response

Request accepted. Every referenced payment carries its own outcome in results; a payment rejected on its own merits does not fail the request. Returned even when every payment was rejected — always inspect results rather than relying on the status code.

results
object[]
required

Per-payment outcome, one entry for every requested payment id, ordered by payment id

Last modified on August 28, 2026