Payments

Retrieve payment status

Changed on

Retrieves how far a payment has got and what the buyer must do next, if anything. A payment is collected in the background, so poll this rather than reading the create response. Accepts either a secret key or the payment's own client_secret, so the surface collecting the payment can poll it directly.

get/payments/{payment_id}/status

Request

  • Base URL: https://api.whop.com/api/v1
  • URL: https://api.whop.com/api/v1/payments/{payment_id}/status
  • Auth: HTTP bearer

Path parameters

payment_idstring required

The unique identifier of the payment.

Response

Payment status retrieved

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

    • breaking

      added to the //// response property oneOf list for the response status

    • info

      added collect_card_present discriminator mapping keys to the //// response property for the response status

    • warning

      added the new card_declined_by_issuer enum value to the ///// response property for the response status