Payments

Capture payment

Captures the full amount of a card payment created with capture: false. The payment must still be in requires_capture before capture_expires_at. Partial capture, multiple captures, capturing more than the authorized amount, and tips are not supported.

post/payments/{id}/capture

Path parameters

idstring required

The unique identifier of the payment.

Headers

Idempotency-Keystring
Example:d9105228-4a08-46b1-8b91-42fed586d383

A unique key that makes this request safe to retry. See Idempotent requests.

Response

Payment captured

auto_capture_atstring nullable required

When Whop will capture this authorization automatically, as an ISO 8601 timestamp. null when no automatic capture was requested.

capture_expires_atstring nullable required

When the card authorization must be captured, as an ISO 8601 timestamp. null when this payment was not authorized for later capture.

idstring required

The payment this status describes, prefixed pay_.

objectstring required

Always payment_status.

return_urlstring nullable required

Where to send the buyer once the payment reaches a resting state, or null to leave them where they are. Editable until they return — see the return_url operation.

status'requires_confirmation' | 'requires_action' | 'requires_capture' | 'confirming' | 'processing' | 'succeeded' | 'canceled' required

How far the payment has got. requires_confirmation — nothing attempted yet, or the last attempt failed and can be retried. requires_action — the buyer has a step outstanding; see next_action. requires_capture — the card authorization is holding funds and must be captured. confirming — the buyer has done their part and the processor is deciding. processing — with processing_details, the money is moving; without them, the charge is still being decided and the status should be read again. succeeded — collected. canceled — voided or written off.

Example response

{
  "account": {
    "id": "biz_xxxxxxxxxxxxxx",
    "title": "Shine Time Auto Detailing"
  },
  "capture_expires_at": "2026-01-01T12:00:00.000Z",
  "id": "pay_xxxxxxxxxxxxxx",
  "last_payment_error": {
    "code": "processing_error",
    "decline_code": "insufficient_funds",
    "message": "Your card was declined."
  },
  "next_action": {
    "data": {
      "frame_max_width": 500,
      "url": "https://psp.example/3ds/challenge"
    },
    "render": [
      "inline"
    ],
    "type": "redirect"
  },
  "object": "payment_status",
  "processing_details": {
    "expected_by": "2026-01-01T12:00:00.000Z"
  },
  "return_url": "https://shinetime.example/checkout/done",
  "status": "succeeded"
}

Changes

Changed in 4 of the 74 revisions of this API.4

    • ○

      added the required property to the response with the status

      response-required-property-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • ○

      added the optional property ///////// to the response with the status

      response-optional-property-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • ○

      added the required property to the response with the status

      response-required-property-added

    This revision also has 2 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • ○

      endpoint added

      endpoint-added

    This revision also has 2 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

Of the 74 revisions, 1 has no diff computed.