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

# Approve a payment attempt

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

Approve a payment attempt that is awaiting merchant approval, and trigger payment authorization on Primer's side. This endpoint is the merchant entry-point of the \*\*Backend-Driven CIT (MANUAL approval)\*\* flow: after the SDK tokenises a payment method and the merchant backend has decided the payment should proceed (e.g. after a fraud check or inventory validation), the backend calls this endpoint to hand off orchestration to Primer (3DS, retries, webhooks). The \`paymentAttemptId\` is the idempotency key: concurrent or retried calls converge on a single downstream payment.

## Path parameters

- `id` string, uuid, required

## Headers

- `X-API-VERSION` string, required

## Response `200`

Successful Response

- ApprovePaymentAttemptResponse
  - `paymentAttemptId` string, uuid, required — ID of the approved payment attempt.
  - `paymentId` string, required — ID of the payment created on Primer's side as a result of the approval. Use this to look up the payment via the Payments API.

## Other responses

- `400` — Bad request
- `404` — Payment attempt not found, or its client session belongs to another tenant
- `409` — Payment attempt cannot be approved 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)
