Skip to main content
This page explains the concepts. To turn it on step by step, follow the credit-notes setup guide.

When to Issue Credit Notes

Credit notes represent refunds or credits issued to customers. They can be:
  • Invoice adjustments (incorrect charges)
  • Refunds (returned payments)
  • Credits (goodwill, service issues)

Create a Credit Note

Refund Reasons

Apply to Invoice

Credit notes can offset future invoices:

Apply to Future Invoices

When a credit note has remaining balance, it can be applied to the customer’s next invoice automatically:
With auto_apply: true, Recurso deducts the credit note balance from the customer’s next invoice. If the credit exceeds the invoice total, the remaining balance carries forward.

Issue Refund

Process an actual refund to the payment method:

Credit Note Lifecycle

Refund Lifecycle

Refund credit notes additionally track the gateway refund in refund_status:

Automatic settlement via gateway webhooks

Pending refunds no longer sit at pending forever. When the gateway settles a refund asynchronously, Recurso consumes its webhooks and advances the credit note automatically:
  • Stripe: charge.refunded / refund.updated / refund.failed
  • Razorpay: refund.processed / refund.failed
Only pending credit notes move; every other state is a no-op, so re-delivered or late gateway webhooks cannot flip a settled refund. The credit note is looked up by the stored gateway refund ID.

Mandate payments are refundable

Invoices collected via mandate auto-debit (UPI Autopay, cards on file) now capture the real gateway payment ID when the payment-captured webhook arrives, so their credit notes can be refunded through the normal flow instead of landing in manual_required.

List Credit Notes

Retrieve credit notes with filters:

Filter Parameters

Credit Note Balance Tracking

Each credit note tracks how much has been used and how much remains:

Void a Credit Note

Cancel a credit note that was issued in error. Only credit notes with no applications or refunds can be voided:
Voiding a credit note is irreversible. If the credit note has already been partially applied or refunded, it cannot be voided — create a new invoice to offset the credit instead.

Get Credit Note PDF

Statutory tax breakdown (GST-grade CDN)

Credit notes record their tax breakdown at creation and the document renders it — taxable value (with HSN), and the GST components that apply (IGST inter-state, CGST + SGST intra-state). For Indian tenants this makes the document a statutory-grade credit note (CDN) the buyer can use to reverse input tax:
  • an invoice-linked credit (refund or adjustment) slices the invoice’s tax proportionally — the same math the GSTR-1 CDNR report uses, so the document and the return always agree
  • a downgrade credit carries the proration tax actually reversed
  • a standalone goodwill credit reverses no supply and stays gross-only
The API returns the same figures on the credit-note object (subtotal, tax_amount, igst_amount, cgst_amount, sgst_amount, tax_type, hsn_code — zero/empty when no breakdown was recorded), and the dashboard’s detail view mirrors them.

Customer notifications

The customer is emailed automatically when a credit note goes live:
  • a refund note sends “your refund is on its way” (with the 5–10 business-day banking note)
  • an account credit note explains it will be applied automatically to upcoming invoices
Direct-issued notes email immediately; notes created under maker-checker approval email at approval, when they actually take effect — never while still pending.

Credit expiry

An adjustment credit can carry an optional expires_at. When that date passes with balance still remaining, a background sweep writes the unused balance off and moves the credit to status expired, posting the reversal of the original issuance to the ledger:
  • DR Customer Credit (2300) — the liability we no longer owe
  • CR Credits & Adjustments (5100) — reverses the original grant expense
Pass expires_at when issuing the credit; omit it for a credit that never expires:
Expiry applies only to spendable adjustment credits — a refund carries no balance to lapse. Once expired, a credit is unspendable and its balance is 0.

Customer credit statement

To see a customer’s running account credit — the spendable balance, every grant, and the invoice draw-down history — call the credit-statement endpoint:
It returns balances (spendable, per currency), grants (every credit note), applications (the draw-down trail), and a per-currency summary. The spendable balance equals what the billing engine can actually apply, and reconciles to the Customer Credit (2300) ledger account. See Customer credit statement for the full schema.

Watching credit-note activity

There are no credit_note.* webhook event types. Credit-note activity is visible on the credit note itself (status, balance), in the Events feed, and in the invoice’s applied credits — poll or read on demand rather than subscribing.