Skip to main content
POST
Cancel an authorization at the payer's request

Authorizations

Authorization
string
header
required

JWT bearer token issued by the identity provider.

Headers

X-Account-Id
string<uuid>
required

Non-zero UUID of the payer account selected by the calling PSP. The PSP must authorize its end user for that account before calling this API. A resource outside the selected account returns 404; a read with no records returns an empty page. See the API overview for the complete trust boundary.

Pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$
X-Idempotency
string
required

REQUIRED. Client-supplied replay key, at most 64 bytes. A request without it is refused with PIX-0030 @ 400 before the handler runs. Replaying the same key with a divergent method, URL or body is PIX-0031 @ 412. X-Account-Id is part of the compared request too, so replaying one account's key under another account is divergent rather than a replay.

Required string length: 1 - 64

Path Parameters

authorization_id
string
required

Internal identifier of the mandate being revoked. A request or mandate that exists under a DIFFERENT account than X-Account-Id names is answered 404, not 403: the lookup carries the account as a predicate, so this end never learns that a resource exists elsewhere and cannot confirm it.

Example:

"01a044a8-f3bd-7488-a0dc-e8d4be4802be"

Body

application/json

Optional. Carries the payer's own free-text note, which is never forwarded to the counterparty.

reason
string

Free-text note for the PAYER's own audit trail. It is NOT the value sent to the counterparty: the receiving PSP is told a fixed code this end chooses, which the response echoes as counterpartyReason.

Maximum string length: 200
Example:

"Payer requested revocation in the mobile app"

Response

Recovered duplicate. The same X-Idempotency header was replayed with an identical request, so the FIRST call's response body is returned verbatim and nothing was reprocessed. A replay answers 200 whatever the original status was, so a client tells a replay from a fresh execution by the status code alone. NOTE: this 200 depends on the replay cache. The gate DEGRADES when the cache is unavailable -- it still demands the header, and each route still refuses a second effect through its own durable guard -- but a repeat is then answered by that guard rather than replayed, which for most routes is 409. A client must therefore treat 409 as a possible answer to a retry it believes is a replay, and must not read it as proof that a competing change happened.

authorizationId
string
required
Example:

"01a044a8-f3bd-7488-a0dc-e8d4be4802be"

cancelledScheduledPayments
integer<int64>
required
Example:

0

counterpartyReason
string
required
Example:

"SLDB"

preservedScheduledPayments
integer<int64>
required
Example:

0

status
string
required
Example:

"CANCELLED"