Invoices

Issues a draft and emails it to its recipients, with reminders after the due date. A draft with no payment_method_id needs invoice:update, invoice:create, or payment:charge, and is never charged. A draft with a payment_method_id needs payment:charge: with a charge_at, or when its due_at is still ahead, it is emailed now and charged to that method at that time (see scheduled_charge_at); otherwise it is charged right away instead of emailed. Voiding the invoice, marking it uncollectible, or paying it first cancels the scheduled charge, and its recipients get the payment link if a charge fails. Sending an open invoice needs payment:charge and emails it again, up to three emails a day including the first send. With send_at, the draft is sent at that time instead, and cannot be edited, except its recipients, until it is sent or unscheduled. Each email, reminders included, is sent separately to the customer email shown on the invoice and to each address in recipient_emails, so recipients never see each other's addresses.

post/invoices/{id}/send

Request

  • Base URL
    https://api.whop.com/api/v1
  • URL
    https://api.whop.com/api/v1/invoices/{id}/send
  • Auth
    • HTTP bearer
    • or HTTP bearer
    • or 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 and no earlier than send_at. 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 when the draft is sent, or right away otherwise. A scheduled send that runs after charge_at charges right away.

send_atstring date-time nullable

When to send the draft, as an ISO 8601 timestamp in the future. Omit to send now.

Response

invoice sent

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

    • info

      the security scope invoice:update was added to the endpoint's security scheme bearerAuth

    • info

      the security scope payment:charge was removed from the endpoint's security scheme bearerAuth

    • info

      the security scope invoice:update was added to the endpoint's security scheme bearerAuth

    • info

      the security scope payment:charge was removed from the endpoint's security scheme bearerAuth