Return Invoice Posting - Voucher Entry Creation
Overview
Return invoice posting in the General Ledger module creates journal entries that reverse the original sales transaction when customers return products. The system automatically determines which posting strategies to apply based on return data and what was originally posted. This document explains what entries are created for each scenario and how different return features affect the final voucher.
Architecture
The return invoice posting system uses a modular reversal strategy pattern with the following main components:
Core Strategy Calculator
ReturnInvoicePostingStrategyCalculator: Main orchestrator that coordinates all reversal sub-strategiesReturnInvoiceTransactionData: Comprehensive data structure containing all return informationPostingCalculationContext: Configuration context with posting profiles and master data
Individual Reversal Strategy Calculators
ReturnEntriesPostingStrategyCalculator: Creates AR credit and Revenue debit reversalsCostOfGoodsSoldReversalPostingStrategyCalculator: Creates COGS credit and Inventory debit reversalsDiscountReversalPostingStrategyCalculator: Creates discount credit reversalsVatReversalPostingStrategyCalculator: Creates VAT debit reversals
Posting Strategy Flow
Key Business Principle: Complete Reversal
Critical Concept: Return invoices create entries that are exactly opposite to the original sales invoice entries. Every debit becomes a credit, every credit becomes a debit.
Original Sales vs Return Comparison:
| Original Sales Transaction | Return Transaction |
|---|---|
| DR Accounts Receivable | CR Accounts Receivable |
| CR Revenue | DR Revenue |
| DR COGS | CR COGS |
| CR Inventory | DR Inventory |
| DR Discounts | CR Discounts |
| CR VAT Payable | DR VAT Payable |
Return Invoice Posting Scenarios
1. Basic Return Invoice (No COGS, No Discounts, No Tax)
Original Sales Invoice:
DR Accounts Receivable - ACME Corp $1,000
CR Revenue - Services $1,000
Return Invoice Data:
- Customer: ACME Corp
- Returned Service: $1,000
- Return Reason: Customer Cancellation
Return Voucher Entries Created:
CR Accounts Receivable - ACME Corp $1,000 (Reduces customer balance)
DR Revenue - Services $1,000 (Reverses original revenue)
Strategy Applied: Return Entries only
Business Impact: Customer's outstanding balance reduced by $1,000, revenue reduced by $1,000.
2. Product Return with Cost of Goods Sold Reversal
Original Sales Invoice:
DR Accounts Receivable - ACME Corp $1,500
CR Revenue - Product A $1,500
DR Cost of Goods Sold - Product A $900
CR Inventory - Product A $900
Return Invoice Data:
- Customer: ACME Corp
- Returned Product A: $1,500 (original cost: $900)
- Return Disposition: Returned to Stock
Return Voucher Entries Created:
# Revenue Reversal
CR Accounts Receivable - ACME Corp $1,500 (Reduces customer balance)
DR Revenue - Product A $1,500 (Reverses original revenue)
# COGS Reversal
DR Inventory - Product A $900 (Restores inventory asset)
CR Cost of Goods Sold - Product A $900 (Reverses original expense)
Strategies Applied: Return Entries + COGS Reversal
Business Impact:
- Customer balance reduced by $1,500
- Revenue reduced by $1,500
- Inventory restored by $900
- COGS expense reduced by $900
3. Return with Line Item Discount Reversal
Original Sales Invoice:
DR Accounts Receivable - ACME Corp $1,800
DR Sales Discount - Product A $200 (Line discount)
CR Revenue - Product A $2,000 (Full revenue)
Return Invoice Data:
- Customer: ACME Corp
- Returned Product A: $2,000, Discount: $200
- Net Original Sale: $1,800, Return: $1,800
Return Voucher Entries Created:
# Revenue and AR Reversal
CR Accounts Receivable - ACME Corp $1,800 (Reduces net receivable)
DR Revenue - Product A $2,000 (Reverses full revenue)
CR Sales Discount - Product A $200 (Reverses discount debit)
Strategies Applied: Return Entries + Discount Reversal
Key Business Rule: The discount reversal creates a credit to the discount account, effectively reversing the original discount expense.
4. Return with Cash Discount Reversal
Original Sales Invoice:
DR Accounts Receivable - ACME Corp $1,960 (Net after cash discount)
DR Cash Discount - ACME Corp $40 (2% cash discount)
CR Revenue - Products $2,000 (Full revenue)
Return Invoice Data:
- Customer: ACME Corp
- Returned Products: $2,000
- Cash Discount: $40 (2% reversal)
Return Voucher Entries Created:
CR Accounts Receivable - ACME Corp $1,960 (Reduces net receivable)
DR Revenue - Products $2,000 (Reverses revenue)
CR Cash Discount - ACME Corp $40 (Reverses discount expense)
Strategy Applied: Return Entries + Cash Discount Reversal
5. Return with VAT Reversal (Tax-Exclusive)
Original Sales Invoice:
DR Accounts Receivable - ACME Corp $1,200 (Including VAT)
CR Revenue - Products $1,000 (Revenue excluding VAT)
CR VAT Payable $200 (20% VAT liability)
Return Invoice Data:
- Customer: ACME Corp
- Returned Products: $1,000 (tax-exclusive)
- VAT: $200 (20% VAT reversal)
- Total Return: $1,200
Return Voucher Entries Created:
CR Accounts Receivable - ACME Corp $1,200 (Reduces receivable including VAT)
DR VAT Payable $200 (Reduces VAT liability)
DR Revenue - Products $1,000 (Reverses revenue)
Strategies Applied: Return Entries + VAT Reversal
Critical Business Rule: VAT reversal creates a debit to VAT Payable, reducing the company's VAT liability to tax authorities.
6. Return with VAT Reversal (Tax-Inclusive)
Original Sales Invoice:
DR Accounts Receivable - ACME Corp $1,000 (Tax-inclusive total)
CR Revenue - Products $833 (Revenue net of embedded VAT)
CR VAT Payable $167 (Embedded 20% VAT)
Return Invoice Data:
- Customer: ACME Corp
- Returned Products: $1,000 (tax-inclusive)
- Embedded VAT: $167 (20% embedded VAT reversal)
Return Voucher Entries Created:
CR Accounts Receivable - ACME Corp $1,000 (Total return amount)
DR VAT Payable $167 (Reduces embedded VAT liability)
DR Revenue - Products $833 (Reverses net revenue)
Strategy Applied: Return Entries + VAT Reversal
7. Comprehensive Return Invoice (All Features)
Original Sales Invoice:
# Revenue and AR Posting
DR Accounts Receivable - ACME Corp $2,176 (Net total)
DR Cash Discount - ACME Corp $44 (Cash discount)
DR Sales Discount - Product A $50 (Line discount)
DR Sales Discount - Product B $100 (Line discount)
CR Revenue - Product A $1,000 (Full revenue)
CR Revenue - Product B $1,000 (Full revenue)
CR VAT Payable $370 (Tax liability)
# COGS Posting
DR Cost of Goods Sold - Product A $600 (COGS expense)
DR Cost of Goods Sold - Product B $600 (COGS expense)
CR Inventory - Product A $600 (Inventory relief)
CR Inventory - Product B $600 (Inventory relief)
Return Invoice Data:
- Customer: ACME Corp
- All products returned with costs, discounts, and VAT
Return Voucher Entries Created:
# Return Entries and Discount Reversals
CR Accounts Receivable - ACME Corp $2,176 (Reduces receivable)
DR VAT Payable $370 (Reduces VAT liability)
DR Revenue - Product A $1,000 (Reverses revenue)
DR Revenue - Product B $1,000 (Reverses revenue)
CR Cash Discount - ACME Corp $44 (Reverses cash discount)
CR Sales Discount - Product A $50 (Reverses line discount)
CR Sales Discount - Product B $100 (Reverses line discount)
# COGS Reversal
DR Inventory - Product A $600 (Restores inventory)
DR Inventory - Product B $600 (Restores inventory)
CR Cost of Goods Sold - Product A $600 (Reverses COGS)
CR Cost of Goods Sold - Product B $600 (Reverses COGS)
All Strategies Applied: Return Entries + COGS Reversal + Discount Reversals + VAT Reversal
Total Debit Balance: $4,450 Total Credit Balance: $4,450
Strategy Selection Logic
The system automatically determines which reversal strategies to apply:
Return Entries Strategy (Always Applied)
- Condition: Return has lines
- Purpose: Create AR credit and Revenue debit reversals
COGS Reversal Strategy
- Condition:
transactionData.HasItemCosts(any line has ItemCost > 0) - Purpose: Create COGS credit and inventory debit entries to restore inventory
Discount Reversal Strategy
- Condition:
transactionData.HasDiscounts(TotalDiscountAmount > 0 OR CashDiscountAmount > 0) - Purpose: Create discount credit entries to reverse original discount debits
VAT Reversal Strategy
- Condition:
transactionData.HasTax(TotalTaxAmount > 0) - Purpose: Create VAT payable debit entries to reduce tax liability
Return Disposition Handling
Return to Stock (Sellable)
DR Inventory - Product A (Sellable) $600
CR Cost of Goods Sold $600
Business Impact: Items returned to sellable inventory at original cost.
Return to Stock (Damaged)
DR Inventory - Product A (Damaged) $400 (Reduced value)
DR Inventory Write-Down $200 (Loss recognition)
CR Cost of Goods Sold $600 (Original cost reversal)
Business Impact: Items returned at reduced value with loss recognition.
Return - Scrap/Dispose
DR Disposal Expense $600
CR Cost of Goods Sold $600
Business Impact: Items written off as disposal expense, no inventory restoration.
Account Resolution & Traceability
Hierarchical Account Lookup
Returns use the same posting profile as sales to ensure reversals use identical accounts:
- Item-Specific Account: Same account used in original sale
- Category-Specific Account: Same account used in original sale
- Default Account: Same account used in original sale
Posting Types Used
PostingType.SalesRevenue: Same revenue accounts as original salePostingType.CostOfGoodsSold: Same COGS accounts as original salePostingType.CostOfUnits: Same inventory accounts as original salePostingType.SalesDiscount: Same discount accounts as original sale
Traceability Features
- Original Invoice Number: Links return to original transaction
- Original Line Numbers: Links return lines to original invoice lines
- Return Reason Codes: Categorizes returns for analytics
- Return Disposition Codes: Tracks what happens to returned items
Business Impact Analysis
Financial Statement Impact
| Account Type | Original Sale | Return | Net Effect |
|---|---|---|---|
| Accounts Receivable | +$1,200 (DR) | -$1,200 (CR) | $0 |
| Revenue | +$1,000 (CR) | -$1,000 (DR) | $0 |
| VAT Payable | +$200 (CR) | -$200 (DR) | $0 |
| Inventory | -$600 (CR) | +$600 (DR) | $0 |
| COGS | +$600 (DR) | -$600 (CR) | $0 |
Result: Complete reversal returns all accounts to pre-sale positions.
Partial Returns
For partial returns, only the returned portion is reversed:
Example: 50% Return
- Original Sale: $1,000 revenue, $600 COGS
- 50% Return: $500 revenue reversal, $300 COGS reversal
- Net Position: $500 revenue, $300 COGS remaining
Dimensional Accounting Integration
Default Dimensions
- Customer Dimensions: Same as original sale for consistency
- Item Dimensions: Same as original sale for proper tracking
- Return-Specific Dimensions: Return reason, disposition tracking
Example with Dimensions
# Original Sale
DR AR - ACME [Dept:Sales, Region:East] $1,200
CR Revenue [Dept:Sales, Product:A] $1,000
CR VAT [Dept:Sales, Region:East] $200
# Return Reversal
CR AR - ACME [Dept:Sales, Region:East] $1,200
DR VAT [Dept:Sales, Region:East] $200
DR Revenue [Dept:Sales, Product:A] $1,000
Related Documentation
Technical References
- Return Invoice Domain Documentation - Technical implementation details
- Posting Strategy API - Integration endpoints
- Sales Invoice Posting - Original transaction reference
Business Process References
- Return Authorization Workflow - Complete return process
- Quality Management Integration - Quality control processes
- Customer Credit Management - Credit limit impact
Cross-Reference Documentation
- Purchase Return Processing - Vendor return scenarios
- Inventory Adjustment Processing - Inventory impact
- VAT Management - Tax authority reporting
Last Updated: [2025-09-19] | Version: 1.0 | Status: Active Development