Skip to main content

Overview

Credit notes are used to reduce or cancel an invoice that has already been issued. Common scenarios include:
  • Partial or full refunds - Customer returns goods or cancels services
  • Invoice corrections - Price errors, wrong quantities, or incorrect amounts
  • Discounts after invoicing - Retroactive discounts or price adjustments
  • Cancellations - Voiding an incorrect invoice
Like invoices, credit notes are sent via Peppol and follow the UBL BIS Billing 3.0 standard.

Workflow

Creating and sending a credit note follows the same workflow as invoices:
  1. Validate your JSON credit note data (required)
  2. Create the credit note document
  3. Send via Peppol
Always validate your credit note JSON using /api/validate/json before creating the document. Only valid JSON that converts to UBL BIS Billing 3.0 is accepted.

Basic Credit Note

Here’s a simple credit note that refunds a full invoice:

Step 1: Validate the Credit Note

Key Differences from Invoices

Use the purchase_order field to reference the original invoice number. This creates a clear audit trail linking the credit note to the original invoice.

Step 2: Create the Credit Note

Once validation passes, create the document:

Step 3: Send via Peppol

Partial Credit Notes

To credit only part of an invoice, adjust the quantities or prices:
Result: Credit note for €605.00 (5 × €100 + 21% VAT)

Price Correction Credit Notes

To correct a pricing error, credit the difference:
Result: Credit note for €121.00 (10 × €10 difference + 21% VAT)

Credit Note with Multiple Line Items

Credit notes can include multiple line items:

Credit Notes with Allowances

You can include allowances (discounts) on credit notes:
Calculation:
  • Line items: €1,000.00
  • Allowance: -€100.00
  • Subtotal: €900.00
  • VAT (21%): €189.00
  • Total credit: €1,089.00

Payment Terms

Credit notes can include payment details if you’re issuing a refund:

Complete Example

Here’s a complete Node.js example for creating and sending a credit note:

Best Practices

Use the purchase_order field to link to the original invoice:
This maintains a clear audit trail and helps customers match credits to invoices.
Use the note field to explain why the credit note is being issued:
Also use descriptive line item descriptions:
If crediting specific line items from the original invoice, use the same descriptions for consistency:
Ensure tax rates on the credit note match the original invoice, even if tax rates have changed since then. The credit note should use the rates from the original transaction date.
Credit note amounts should be positive values, not negative. The system interprets the entire credit note as a reduction:❌ Wrong:
✓ Correct:
Track credit notes the same way as invoices:
  • DRAFT - Created but not sent
  • TRANSIT - Being transmitted
  • SENT - Successfully delivered
  • FAILED - Transmission failed
  • RECEIVED - Received from another party
Outbound document state flowDocuments in TRANSIT use automatic retry with exponential backoff (10 attempts with delays: 1, 2, 4, 8, 16, 32, 64, 128, 256, and 360 minutes) before transitioning to FAILED.If a document reaches FAILED state, you can retry by calling POST /api/documents/{document_id}/send again.Use webhooks to monitor delivery status.

Common Use Cases

1. Full Invoice Cancellation

2. Product Returns

3. Price Adjustments

4. Service Cancellation

Troubleshooting

Credit Note Rejected

Error: purchase_order is required for credit notes Solution: Always include the purchase_order field with the original invoice number to create a clear audit trail.

Amount Mismatch Concerns

Question: “My credit note total is higher than the original invoice” Solution: This can be valid if you’re crediting the invoice amount plus adding a goodwill gesture or covering return shipping costs. Ensure your accounting system can handle this scenario.

Customer Didn’t Receive Credit Note

Check:
  1. Verify the customer’s Peppol ID is correct
  2. Check document state: GET /api/documents/{document_id}
  3. Review transmission report: GET /api/documents/{document_id}/transmission-report
  4. Check webhook notifications for delivery status

Next Steps

Advanced Invoicing

Learn about allowances and charges

Creating Invoices

Review invoice creation guide

Webhooks

Monitor credit note delivery

API Reference

Explore all endpoints