POST /invoices/{invoice-id}/record_refund
Record a full or partial offline refund for an invoice.
Use this API to record refunds processed outside Chargebee (for example, directly through a payment gateway or via offline methods such as bank transfers or checks) so you can reconcile them in Chargebee.
Important: This API does not process actual refunds for online payments or return money to customers through the payment gateway. To process refunds for online payments and return money to customers, use the Refund an invoice API instead.
Prerequisites & Constraints
The invoice must have a refundable amount. (See Implementation Notes for details.)
Impacts
Credit note
Chargebee creates a refundable credit note with status set to refunded.
Transactions
Chargebee records the refunds by creating transactions of type refund and links them to the credit note. The refund transactions are recorded in the following order:
linked_paymentsfor offline transactions. This is recorded aslinked_refunds[]in the credit note.linked_taxes_withheld(if available). This is recorded aslinked_tax_withheld_refunds[]in the credit note.linked_paymentsfor online transactions (after offline payments and taxes withheld are exhausted). This is recorded aslinked_refunds[]in the credit note.
Example
Consider an invoice with the following payments and tax withheld:
- Offline payments: $30
- Online payments: $20
- Tax withheld: $5
When you record a refund of $40, Chargebee allocates the refund as follows:
- Refund against offline payments: $30
- Refund against tax withheld: $5
- Refund against online payments: $5
Implementation Notes
Before calling this API, perform the following checks:
- The invoice must have a refundable amount. Specifically, the sum of
issued_credit_notes[].amountfor refundable credit notes must be less than the sum of:amount_paidcredits_applied- Sum of
linked_taxes_withheld[].amount
- Ensure the
transaction[date]is on or after the invoice date and not in the future. - Include the
transaction[amount]parameter to specify the refund amount. If you omit this parameter, the system records the entire refundable amount as refunded. - If reason codes are mandatory in Chargebee Billing, include the
credit_note[create_reason_code]parameter with a value from the configured list of codes.
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 |
Remarks, if any, on the refund. |
transaction |
Object | No |
Parameters for transaction |
transaction.reference_number |
String | No |
The reference number for this transaction. For example, the check number when |
transaction.custom_payment_method_id |
String | No |
Identifier of the custom payment method of this transaction. |
transaction.amount |
Integer | No |
The amount to be refunded (for online payments) or recorded as refunded (for offline payments). If not specified, the entire refundable amount for this invoice is refunded. The refundable amount is the total amount paid (and not already refunded) for the invoice. Note: Any |
transaction.payment_method |
String | Yes |
The payment method of this transaction
Valid values:
|
transaction.date |
Integer | Yes |
Indicates when this transaction occurred. |
credit_note |
Object | No |
Parameters for credit_note |
credit_note.reason_code |
String | No |
The reason for issuing this Credit Note. The following reason codes are supported now[Deprecated; use the create_reason_code parameter instead] * service_unsatisfactory - Service Unsatisfactory * subscription_pause - This reason will be automatically set to credit notes created during pause/resume subscription operation. * order_cancellation - Order Cancellation * subscription_cancellation - This reason will be set automatically for Credit Notes created during cancel subscription operation * product_unsatisfactory - Product Unsatisfactory * subscription_change - This reason will be set automatically for Credit Notes created during Change Subscription operation when proration is enabled * other - Can be set when none of the above reason codes are applicable * order_change - Order Change * chargeback - Can be set when you are recording your customer Chargebacks * write_off - This reason will be set automatically for the Credit Notes created during invoice Write Off operation. * fraudulent - FRAUDULENT * waiver - Waiver Valid values:
|
credit_note.create_reason_code |
String | No |
Reason code for creating the credit note. Must be one from a list of reason codes set in the Chargebee app in Settings > Configure Chargebee > Reason Codes > Credit Notes > Create Credit Note. The codes are case-sensitive |
customer_notes |
String | No |
The Customer Notes to be filled in the Credit Notes created to capture this refund detail. |
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.