← Back to reports
Sales ({{ $summary['sales_count'] }})
{{ number_format($summary['sales_total'], 2) }}
Purchases ({{ $summary['purchases_count'] }})
{{ number_format($summary['purchases_total'], 2) }}
Receipts ({{ $summary['receipts_count'] }})
{{ number_format($summary['receipts_total'], 2) }}
Payments ({{ $summary['payments_count'] }})
{{ number_format($summary['payments_total'], 2) }}
Credit notes ({{ $summary['credit_notes_count'] }})
{{ number_format($summary['credit_notes_total'], 2) }}
Debit notes ({{ $summary['debit_notes_count'] }})
{{ number_format($summary['debit_notes_total'], 2) }}
Not a one-click Tally upload — these are the registers an accountant already asks for (Sales, Purchase, Receipt, Payment, Credit Note, Debit Note), in the flat date/party/amount shape Tally's own Import Vouchers Excel/CSV wizard expects. Map party names to your existing ledgers on the way in.
{{-- Sales Register --}}

Sales Register

@if ($mixedLeftOut > 0)

{{ $mixedLeftOut }} {{ Str::plural('invoice', $mixedLeftOut) }} with more than one brand {{ $mixedLeftOut === 1 ? 'is' : 'are' }} left out here: export them from All brands, so no invoice is imported twice.

@endif
@can('reports.export') @endcan
@if ($salesRegister->isEmpty()) @else
@foreach ($salesRegister as $sale) @endforeach
Date Invoice No Party Total
{{ $sale->sale_date->format('d M Y') }} {{ $sale->invoice_number }} {{ $sale->customer->name }} {{ number_format($sale->total, 2) }}
@endif
{{-- Purchase Register --}}

Purchase Register

One row per goods receipt — the real bill event, not the order.

@can('reports.export') @endcan
@if ($purchaseRegister->isEmpty()) @else
@foreach ($purchaseRegister as $r) @endforeach
Date Bill / Receipt No Party Total
{{ \Illuminate\Support\Carbon::parse($r->received_date)->format('d M Y') }} {{ $r->supplier_bill_number ?: $r->receipt_number }} {{ $r->supplier_name }} {{ number_format($r->taxable + $r->tax, 2) }}
@endif
{{-- Receipts --}}

Receipts (from customers)

@can('reports.export') @endcan
@if ($receiptsRegister->isEmpty()) @else
@foreach ($receiptsRegister as $payment) @endforeach
Date Party Method Amount
{{ $payment->payment_date->format('d M Y') }} {{ $payment->customer->name }} {{ $payment->method ? str($payment->method)->replace('_', ' ')->title() : '—' }} {{ number_format($payment->amount, 2) }}
@endif
{{-- Payments --}}

Payments (to suppliers)

@can('reports.export') @endcan
@if ($paymentsRegister->isEmpty()) @else
@foreach ($paymentsRegister as $payment) @endforeach
Date Party Method Amount
{{ $payment->payment_date->format('d M Y') }} {{ $payment->supplier->name }} {{ $payment->method ? str($payment->method)->replace('_', ' ')->title() : '—' }} {{ number_format($payment->amount, 2) }}
@endif

Credit Notes (customer returns)

Each reduces a sales invoice, so it is a Credit Note voucher.

@can('reports.export') @endcan
@if ($creditNotesRegister->isEmpty()) @else
@foreach ($creditNotesRegister as $return) @endforeach
Date Credit note Against invoice Party Total
{{ $return->return_date->format('d M Y') }} {{ $return->return_number }} {{ $return->sale->invoice_number }} {{ $return->customer->name }} {{ number_format($return->total, 2) }}
@endif

Debit Notes (returns to suppliers)

Only returns settled as credit; replacements leave what you owe unchanged.

@can('reports.export') @endcan
@if ($debitNotesRegister->isEmpty()) @else
@foreach ($debitNotesRegister as $return) @endforeach
Date Debit note Party Total
{{ $return->return_date->format('d M Y') }} {{ $return->return_number }} {{ $return->supplier->name }} {{ number_format($return->total, 2) }}
@endif