---
title: "Abort a payment attempt"
method: POST
path: "/payment-attempts/{id}/abort"
tags: ["Payment Attempts API"]
---

# Abort a payment attempt

`POST /payment-attempts/{id}/abort`

Abort a payment attempt that is awaiting merchant approval. No payment is created. The tokenised payment instrument associated with the attempt is invalidated. Call this endpoint when, after tokenisation, a business decision is made that the payment should not proceed (e.g. a merchant-side fraud check flagged the transaction, the customer cancelled on the merchant's own UI, or an inventory check failed between tokenisation and approval).

## Path parameters

- `id` string, uuid, required

## Headers

- `X-API-VERSION` string, required

## Request body

- AbortPaymentAttemptRequest
  - `reason` string — Optional free-text reason for aborting the payment attempt, recorded for your own records. Useful for observability into abort patterns. Do not include cardholder data.

## Response `200`

Successful Response

- AbortPaymentAttemptResponse
  - `paymentAttemptId` string, uuid, required — ID of the aborted payment attempt.

## Other responses

- `400` — Bad request
- `404` — Payment attempt not found, or its client session belongs to another tenant
- `409` — Payment attempt cannot be aborted in its current state
- `410` — Payment attempt has expired
- `422` — Request failed validation

---

[API](https://skmtc.dev/primer/apis/primer-api.md) · [All operations](https://skmtc.dev/primer/apis/primer-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/primer/primer-api/revisions/a4459530edb7/schema)
