POST /invoices/{invoice-id}/write_off
Write off the specified invoice.
Use this operation to mark invoices as settled when they remain unpaid after multiple attempts to collect payment.
Reverse a write-off
You can reverse the write-off by removing the linked credit note.
Prerequisites & Constraints
- There must be no in-progress payments for the invoice.
- The invoice
statusmust bepayment_due,posted, ornot_paid.
Impacts
Invoice
- Chargebee sets the invoice
statustopaid. - Chargebee sets the invoice
write_off_amountto the invoiceamount_due.
Credit Note
- Chargebee creates a credit note with the following attributes:
typeisadjustment.create_reason_codeisWrite Off.totalisinvoice.amount_due.
Payment Schedules
- If the invoice has an associated
payment_schedulecreated against it, Chargebee marks the schedule as paid. Chargebee setsschedule_entries[].statustopaid.
RevRec
- To understand how write-offs sync to RevRec, see the write-off sync documentation.
- To understand how write-offs affect bad debt expenses in RevRec, see the bad debt expense documentation.
Accounting Integrations
- Write-offs sync to accounting platforms based on configured sync rules. For more details, see the following documentation:
- Intacct
- NetSuite
Implementation Notes
Before calling this API, ensure the following:
invoice.statusispayment_due,posted, ornot_paid.invoice.linked_payments[i].txn_statusis notin_progress. If it is, then wait for thetxn_statusto be finalized.
Servers
- {protocol}://{site}.{environment}:{port}/api/v2
- {protocol}://{site}-test.{environment}:{port}/api/v2
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
invoice-id |
String | Yes |
Request headers
| Name | Type | Required | Description |
|---|---|---|---|
chargebee-request-origin-device |
String | No |
The device from which the customer has made the request |
Content-Type |
String | Yes |
The media type of the request body.
Default value: "application/x-www-form-urlencoded" |
chargebee-event-webhook |
String | No |
skip only webhooks Valid values:
|
chargebee-business-entity-id |
String | No |
If the site has multiple business entities, you can use this custom HTTP header to specify the business entity for which Chargebee should perform the operation. |
chargebee-event-actions |
String | No |
skip all actions to be done on the events Valid values:
|
chargebee-request-origin-user |
String | No |
The email address of your customer/user. Use this when the email address has only ASCII characters. |
chargebee-request-origin-ip |
String | No |
The IP address of the customer where the request originated |
chargebee-request-origin-user-encoded |
String | No |
The Base64-encoded email address of your customer/user. Use this if the email address has UTF-8 characters. When this header is provided, the header chargebee-request-origin-user is ignored. |
chargebee-event-email |
String | No |
skip only emails Valid values:
|
Request body fields
| Name | Type | Required | Description |
|---|---|---|---|
comment |
String | No |
Reason for deleting this transaction. This comment will be added to the associated entity. |
How to start integrating
- Add HTTP Task to your workflow definition.
- Search for the API you want to integrate with and click on the name.
- This loads the API reference documentation and prepares the Http request settings.
- Click Test request to test run your request to the API and see the API's response.