---
title: "Update invoice"
method: PATCH
path: "/invoices/{id}"
tags: ["Invoices"]
---

# Update invoice

`PATCH /invoices/{id}`

Update a draft invoice's details.

Required permissions:
 - `invoice:update`
 - `member:email:read`

## Path parameters

- `id` string, required

## Request body

- object — Parameters for UpdateInvoice
  - `automatically_finalizes_at` string, date-time, nullable — The date and time when the invoice will be automatically finalized. For charge_automatically, triggers an automatic charge. For send_invoice, sends the invoice email at the specified time.
  - `billing_address` object, nullable — Inline billing address to create or update a mailing address for this invoice.
    - `city` string, nullable — The city of the address.
    - `country` string, nullable — The country of the address.
    - `line1` string, nullable — The line 1 of the address.
    - `line2` string, nullable — The line 2 of the address.
    - `name` string, nullable — The name of the customer.
    - `phone` string, nullable — The phone number of the customer.
    - `postal_code` string, nullable — The postal code of the address.
    - `state` string, nullable — The state of the address.
    - `tax_id_type` 'ad_nrt' | 'ao_tin' | 'ar_cuit' | 'al_tin' | 'am_tin' | 'aw_tin' | 'au_abn' | 'au_arn' | 'eu_vat' | 'az_tin' | 'bs_tin' | 'bh_vat' | 'bd_bin' | 'bb_tin' | 'by_tin' | 'bj_ifu' | 'bo_tin' | 'ba_tin' | 'br_cnpj' | 'br_cpf' | 'bg_uic' | 'bf_ifu' | 'kh_tin' | 'cm_niu' | 'ca_bn' | 'ca_gst_hst' | 'ca_pst_bc' | 'ca_pst_mb' | 'ca_pst_sk' | 'ca_qst' | 'cv_nif' | 'cl_tin' | 'cn_tin' | 'co_nit' | 'cd_nif' | 'cr_tin' | 'hr_oib' | 'do_rcn' | 'ec_ruc' | 'eg_tin' | 'sv_nit' | 'et_tin' | 'eu_oss_vat' | 'ge_vat' | 'gh_tin' | 'de_stn' | 'gb_vat' | 'gn_nif' | 'hk_br' | 'hu_tin' | 'is_vat' | 'in_gst' | 'id_npwp' | 'il_vat' | 'jp_cn' | 'jp_rn' | 'jp_trn' | 'kz_bin' | 'ke_pin' | 'kg_tin' | 'la_tin' | 'li_uid' | 'li_vat' | 'my_frp' | 'my_itn' | 'my_sst' | 'mr_nif' | 'mx_rfc' | 'md_vat' | 'me_pib' | 'ma_vat' | 'np_pan' | 'nz_gst' | 'ng_tin' | 'mk_vat' | 'no_vat' | 'no_voec' | 'om_vat' | 'pe_ruc' | 'ph_tin' | 'pl_nip' | 'ro_tin' | 'ru_inn' | 'ru_kpp' | 'sa_vat' | 'sn_ninea' | 'rs_pib' | 'sg_gst' | 'sg_uen' | 'si_tin' | 'za_vat' | 'kr_brn' | 'es_cif' | 'ch_uid' | 'ch_vat' | 'tw_vat' | 'tj_tin' | 'tz_vat' | 'th_vat' | 'tr_tin' | 'ug_tin' | 'ua_vat' | 'ae_trn' | 'us_ein' | 'uy_ruc' | 'uz_tin' | 'uz_vat' | 've_rif' | 'vn_tin' | 'zm_tin' | 'zw_tin' | 'sr_fin' | 'xi_vat' — The type of tax identifier
    - `tax_id_value` string, nullable — The value of the tax identifier.
  - `charge_buyer_fee` boolean, nullable — Whether to charge the customer a buyer fee on this invoice.
  - `collection_method` 'send_invoice' | 'charge_automatically' — The method of collection for an invoice.
  - `customer_name` string, nullable — The name of the customer.
  - `due_date` string, date-time, nullable — The date by which the invoice must be paid.
  - `email_address` string, nullable — The email address of the customer.
  - `line_items` object[], nullable — Line items that break down the invoice total.
    - `label` string, required — The label or description for this line item.
    - `quantity` number, nullable — The quantity of this line item. Defaults to 1.
    - `unit_price` number, required — The unit price for this line item. Provided as a number in the specified currency. Eg: 10.43 for $10.43
  - `mailing_address_id` string, nullable — The unique identifier of an existing mailing address to attach.
  - `member_id` string, nullable — The unique identifier of a member to assign as the customer.
  - `payment_method_id` string, nullable — The unique identifier of the payment method to charge.
  - `plan` object, nullable — Updated plan attributes.
    - `adaptive_pricing_enabled` boolean, nullable — Whether this plan accepts local currency payments via adaptive pricing.
    - `billing_period` integer, nullable — The interval in days at which the plan charges (renewal plans).
    - `currency` 'usd' | 'sgd' | 'inr' | 'aud' | 'brl' | 'cad' | 'dkk' | 'eur' | 'nok' | 'gbp' | 'sek' | 'chf' | 'hkd' | 'huf' | 'jpy' | 'mxn' | 'myr' | 'pln' | 'czk' | 'nzd' | 'aed' | 'eth' | 'ape' | 'cop' | 'ron' | 'thb' | 'bgn' | 'idr' | 'dop' | 'php' | 'try' | 'krw' | 'twd' | 'vnd' | 'pkr' | 'clp' | 'uyu' | 'ars' | 'zar' | 'dzd' | 'tnd' | 'mad' | 'kes' | 'kwd' | 'jod' | 'all' | 'xcd' | 'amd' | 'bsd' | 'bhd' | 'bob' | 'bam' | 'khr' | 'crc' | 'xof' | 'egp' | 'etb' | 'gmd' | 'ghs' | 'gtq' | 'gyd' | 'ils' | 'jmd' | 'mop' | 'mga' | 'mur' | 'mdl' | 'mnt' | 'nad' | 'ngn' | 'mkd' | 'omr' | 'pyg' | 'pen' | 'qar' | 'rwf' | 'sar' | 'rsd' | 'lkr' | 'tzs' | 'ttd' | 'uzs' | 'rub' | 'btc' | 'cny' | 'usdt' | 'kzt' | 'awg' | 'whop_usd' | 'xau' — The available currencies on the platform
    - `custom_fields` object[], nullable — An array of custom field objects.
      - `field_type` 'text', required — The type of the custom field.
      - `id` string, nullable — The ID of the custom field (if being updated)
      - `name` string, required — The name of the custom field.
      - `order` integer, nullable — The order of the field.
      - `placeholder` string, nullable — The placeholder value of the field.
      - `required` boolean, nullable — Whether or not the field is required.
    - `description` string, nullable — The description of the plan.
    - `expiration_days` integer, nullable — The number of days until the membership expires and revokes access (expiration plans). For example, 365 for a one-year access period.
    - `initial_price` number, nullable — An additional amount charged upon first purchase. Use only if a one time payment OR you want to charge an additional amount on top of the renewal price. Provided as a number in the specified currency. Eg: 10.43 for $10.43
    - `internal_notes` string, nullable — A personal description or notes section for the business.
    - `legacy_payment_method_controls` boolean, nullable — Whether this plan uses legacy payment method controls
    - `payment_method_configuration` object, nullable — The explicit payment method configuration for the plan. If not provided, the platform or company's defaults will apply.
      - `disabled` PaymentMethodTypes[], required — An array of payment method identifiers that are explicitly disabled. Only applies if the include_platform_defaults is true.
      - `enabled` PaymentMethodTypes[], required — An array of payment method identifiers that are explicitly enabled. This means these payment methods will be shown on checkout. Example use case is to only enable a specific payment method like cashapp, or extending the platform defaults with additional methods.
      - `include_platform_defaults` boolean, nullable — Whether Whop's platform default payment method enablement settings are included in this configuration. The full list of default payment methods can be found in the documentation at docs.whop.com/payments.
    - `plan_type` 'renewal' | 'one_time' — The type of plan that can be attached to a product
    - `release_method` 'buy_now' | 'waitlist' — The methods of how a plan can be released.
    - `renewal_price` number, nullable — The amount the customer is charged every billing period. Use only if a recurring payment. Provided as a number in the specified currency. Eg: 10.43 for $10.43
    - `stock` integer, nullable — The number of units available for purchase.
    - `trial_period_days` integer, nullable — The number of free trial days added before a renewal plan.
    - `unlimited_stock` boolean, nullable — When true, the plan has unlimited stock (stock field is ignored). When false, purchases are limited by the stock field.
    - `visibility` 'visible' | 'hidden' | 'archived' | 'quick_link' — Visibility of a resource
  - `product_id` string, nullable — The unique identifier of an existing product to attach to this invoice. Only allowed while the invoice is still a draft.
  - `subscription_billing_anchor_at` string, date-time, nullable — The date that defines when the subscription billing cycle should start.

## Response `200`

A successful response

- Invoice — An invoice represents an itemized bill sent by a company to a customer for a specific product and plan, tracking the amount owed, due date, and payment status.
  - `automatically_finalizes_at` string, date-time, nullable, required — The date and time when the invoice will be automatically finalized. For charge_automatically, triggers an automatic charge. For send_invoice, sends the invoice email at the specified time.
  - `charge_buyer_fee` boolean, required — Whether the invoice includes a buyer processing fee on top of the plan price.
  - `collection_method` 'send_invoice' | 'charge_automatically', required — The method of collection for an invoice.
  - `company` object, required — The company that issued this invoice.
    - `id` string, required — The unique identifier for the company.
  - `created_at` string, date-time, required — The datetime the invoice was created.
  - `current_plan` object, required — The plan that this invoice charges for.
    - `currency` 'usd' | 'sgd' | 'inr' | 'aud' | 'brl' | 'cad' | 'dkk' | 'eur' | 'nok' | 'gbp' | 'sek' | 'chf' | 'hkd' | 'huf' | 'jpy' | 'mxn' | 'myr' | 'pln' | 'czk' | 'nzd' | 'aed' | 'eth' | 'ape' | 'cop' | 'ron' | 'thb' | 'bgn' | 'idr' | 'dop' | 'php' | 'try' | 'krw' | 'twd' | 'vnd' | 'pkr' | 'clp' | 'uyu' | 'ars' | 'zar' | 'dzd' | 'tnd' | 'mad' | 'kes' | 'kwd' | 'jod' | 'all' | 'xcd' | 'amd' | 'bsd' | 'bhd' | 'bob' | 'bam' | 'khr' | 'crc' | 'xof' | 'egp' | 'etb' | 'gmd' | 'ghs' | 'gtq' | 'gyd' | 'ils' | 'jmd' | 'mop' | 'mga' | 'mur' | 'mdl' | 'mnt' | 'nad' | 'ngn' | 'mkd' | 'omr' | 'pyg' | 'pen' | 'qar' | 'rwf' | 'sar' | 'rsd' | 'lkr' | 'tzs' | 'ttd' | 'uzs' | 'rub' | 'btc' | 'cny' | 'usdt' | 'kzt' | 'awg' | 'whop_usd' | 'xau', required — The available currencies on the platform
    - `description` string, nullable, required — A text description of the plan visible to customers. Maximum 1000 characters. Null if no description is set.
    - `formatted_price` string, required — The formatted price (including currency) for the plan.
    - `id` string, required — The unique identifier for the plan.
  - `customer_name` string, nullable, required — The full name of the customer this invoice is addressed to. Null if no name is on file.
  - `due_date` string, date-time, nullable, required — The deadline by which payment is expected. Null if the invoice is collected automatically.
  - `email_address` string, nullable, required — The email address of the customer this invoice is addressed to. Null if no email is on file.
  - `fetch_invoice_token` string, required — A signed token that allows fetching invoice data publicly without authentication.
  - `id` string, required — The unique identifier for the invoice.
  - `line_items` object[], required — Optional line items that break down the invoice total into individual charges.
    - `label` string, required — The label or description for this line item.
    - `position` integer, required — The display order of this line item within the invoice.
    - `quantity` number, required — The quantity of this line item.
    - `total` number, required — The computed total for this line item (quantity * unit_price).
    - `unit_price` number, required — The unit price for this line item.
  - `mailing_address` object, nullable, required — The billing/mailing address associated with this invoice, if one was provided at creation time.
    - `city` string, nullable, required — The city of the address.
    - `country` string, nullable, required — The country of the address.
    - `line1` string, nullable, required — The line 1 of the address.
    - `line2` string, nullable, required — The line 2 of the address.
    - `name` string, nullable, required — The name of the customer.
    - `phone` string, nullable, required — The phone number of the customer.
    - `postal_code` string, nullable, required — The postal code of the address.
    - `state` string, nullable, required — The state of the address.
  - `number` string, required — The sequential invoice number for display purposes.
  - `pay_online_url` string, nullable, required — The checkout URL where the customer can pay this invoice online, with their email address pre-filled and locked.
  - `product` object, required — The product that this invoice was generated for.
    - `id` string, required — The unique identifier for the product.
    - `title` string, required — The display name of the product shown to customers on the product page and in search results.
  - `status` 'draft' | 'open' | 'paid' | 'past_due' | 'uncollectible' | 'void', required — The different statuses an invoice can be in
  - `subscription_billing_anchor_at` string, date-time, nullable, required — The date that defines when the subscription billing cycle starts. When set on a renewal plan invoice, all future billing periods anchor to this date.
  - `updated_at` string, date-time, required — The datetime the invoice was last updated.
  - `user` object, nullable, required — The user this invoice is addressed to. Null if the user account has been removed.
    - `email` string, nullable, required — The user's email address. Requires the member:email:read permission to access. Null if not authorized.
    - `id` string, required — The unique identifier for the user.
    - `name` string, nullable, required — The user's display name shown on their public profile.
    - `username` string, required — The user's unique username shown on their public profile.

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `422` — Verification required
- `429` — Too many requests
- `500` — Internal server error

---

[API](https://skmtc.net/whop/apis/whop-api.md) · [All operations](https://skmtc.net/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whop/whop-api/versions/db0883548bc5/schema)
