Skip to main content
POST

Authorizations

x-api-key
string
header
required

API key for authentication. Get yours from Settings → Integrations

Body

application/json
customerName
string
required
customerEmail
string<email>
required
lineItems
object[]
required
Minimum array length: 1
dueDate
string
required

ISO 8601 date (YYYY-MM-DD) or date-time string.

customerId
string | null

Optional existing customer ID. A new customer record is created if omitted.

additionalEmails
string<email>[]

Extra recipients copied on the invoice email.

customerAddress
object
paymentType
enum<string>
default:one_time
Available options:
one_time,
renewal
currency
string
default:usd

3-letter ISO 4217 currency code (lowercase).

taxCents
integer
default:0
Required range: x >= 0
discountCents
integer
default:0
Required range: x >= 0
collectCustomerFee
boolean
default:true

Whether processing fees are added on top of the customer's total.

allowedPaymentTypes
enum<string>[]

Payment rails the invoice should accept. Order is non-significant.

All values except bank_transfer are processed by Whop's hosted checkout (card / wallet / Plaid ACH / BNPL / crypto).

bank_transfer is special: it provisions a Stripe Customer Balance virtual receiving account dedicated to wire transfers (USD, EUR, GBP, JPY, MXN). Customers wire totalCents plus a 1% platform fee; the merchant is credited only totalCents. ACH pulls remain on the us_bank_account rail. We never link out to a Stripe-hosted page.

Available options:
card,
apple_pay,
google_pay,
link,
us_bank_account,
sepa_debit,
bacs_debit,
acss_debit,
au_becs_debit,
cashapp,
paypal,
venmo,
klarna,
affirm,
afterpay_clearpay,
crypto,
bank_transfer
description
string | null
notes
string | null
terms
string | null
sendReminders
boolean
default:true

Whether to send automatic past-due reminders.

sendEmail
boolean
default:true

Send the hosted payment link by email immediately on create.

Response

Invoice created

invoice
object
url
string

Hosted payment URL for the customer