Invoices

Resolves final tax and opens a draft invoice without emailing it. An invoice with a payment_method_id is charged to it off-session, as POST /payments charges a saved payment method: at charge_at if given, otherwise on due_at while it is still ahead, otherwise right away (see scheduled_charge_at). With a future due_at and no charge_at, the customer is charged on the due date without being emailed first. Issuing an open invoice again retains its totals and charges nothing.

post/invoices/{id}/issue

Request

  • Base URL
    https://api.whop.com/api/v1
  • URL
    https://api.whop.com/api/v1/invoices/{id}/issue
  • Auth
    HTTP bearer

Headers

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

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

Request body

charge_atstring date-time nullable

When to charge the draft's payment_method_id, as an ISO 8601 timestamp in the future. Only for a draft with a payment_method_id and a total above zero. Omit to charge on due_at if it is still ahead, or right away otherwise.

Response

invoice issued

account_idstring required
buyer_fee_percentagenumber required
checkout_linkstring nullable required

A signed link that opens this invoice in a checkout session so the buyer can pay it: pass it as link to POST /checkout_sessions. Present while the invoice is open; null in any other status, for an invoice billed to a business buyer or whose membership was canceled, and unless you have payment:charge, or invoice:create or invoice:update on an invoice with no payment_method_id.

created_atstring required
customer_namestring nullable required
due_atstring nullable required
email_addressstring nullable required
idstring required
invoice_prefixstring nullable required
mailing_address_idstring nullable required
member_idstring nullable required
metadataobject required
numberstring required
object'invoice' required
overdueboolean required
paid_atstring nullable required
payment_method_idstring nullable required
recipient_emailsstring[] required
scheduled_charge_atstring nullable required

When the invoice's saved payment method will be charged, as an ISO 8601 timestamp: the charge_at it was sent or issued with, or due_at when an invoice with a payment_method_id is sent or issued before it is due without one. On a draft, the charge_at of its scheduled send. null otherwise, once the charge starts, and once the invoice is paid, void, or uncollectible.

scheduled_send_atstring nullable required
status'draft' | 'open' | 'authorized' | 'paid' | 'pending' | 'uncollectible' | 'unresolved' | 'void' required
totals_status'estimated' | 'final' required
updated_atstring required

Example response

{
  "account_id": "biz_xxxxxxxxxxxxxx",
  "amount_due": {
    "amount": "-1234.56",
    "currency": "usd",
    "decimals": 2,
    "display_decimals": 2
  },
  "billing_address": {
    "city": "Austin",
    "country": "US",
    "line1": "1114 Bouldin Ave",
    "line2": "Unit B",
    "name": "Dana Whitfield",
    "postal_code": "78704",
    "state": "TX"
  },
  "buyer_fee_amount": {
    "amount": "-1234.56",
    "currency": "usd",
    "decimals": 2,
    "display_decimals": 2
  },
  "checkout_link": "pay_xxxxxxxxxxxxxx.eyJfcmFpbHMiOnsiZGF0YSI6WzEsZmFsc2VdLCJwdXIiOiJSZWNlaXB0XG5jaGVja291dF9tb3VudFxuIn19--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "created_at": "2026-01-01T12:00:00.000Z",
  "customer_name": "Dana",
  "email_address": "marcus@shinetime.example",
  "id": "pay_xxxxxxxxxxxxxx",
  "line_items": [
    {
      "discount_amount": {
        "amount": "-1234.56",
        "currency": "usd",
        "decimals": 2,
        "display_decimals": 2
      },
      "id": "li_xxxxxxxxxxxxxx",
      "label": "Ceramic Coating Package",
      "product_id": "prod_xxxxxxxxxxxxxx",
      "quantity": 1,
      "subtotal": {
        "amount": "-1234.56",
        "currency": "usd",
        "decimals": 2,
        "display_decimals": 2
      },
      "tax_amount": {
        "amount": "-1234.56",
        "currency": "usd",
        "decimals": 2,
        "display_decimals": 2
      },
      "unit_amount": {
        "amount": "-1234.56",
        "currency": "usd",
        "decimals": 2,
        "display_decimals": 2
      },
      "variant_id": "plan_xxxxxxxxxxxxxx"
    }
  ],
  "member_id": "mber_xxxxxxxxxxxxxx",
  "metadata": {},
  "number": "#xxxxxxxx",
  "object": "invoice",
  "recipient_emails": [
    "marcus@shinetime.example"
  ],
  "status": "open",
  "subtotal": {
    "amount": "-1234.56",
    "currency": "usd",
    "decimals": 2,
    "display_decimals": 2
  },
  "tax_amount": {
    "amount": "-1234.56",
    "currency": "usd",
    "decimals": 2,
    "display_decimals": 2
  },
  "total": {
    "amount": "-1234.56",
    "currency": "usd",
    "decimals": 2,
    "display_decimals": 2
  },
  "totals_status": "final",
  "updated_at": "2026-01-01T12:00:00.000Z"
}

Changes