Exercise 3

Sales Vouchers Without Inventory

Published


This exercise imports Sales Vouchers that don't carry stock item line items — just an invoice-level amount against a Sales Ledger. It's the simplest possible voucher import, and a good first voucher exercise before tackling item-wise sales.

The Excel sheet

A B C D E F
1 INV NO. DATE CLIENT'S NAME SALES LEDGER NARRATION AMOUNT
2 11077 01/04/2026 Vero Beach Embroidery US-DIGITISING-RETAIL Silk 100.00
3 11078 01/04/2026 A R S Marketing US-ART-RETAIL Mix 200.00
4 11079 01/04/2026 Vero Beach Embroidery US-DIGITISING-RETAIL Silk 300.00
5 11080 01/04/2026 V S Traders US-DIGITISING-RETAIL Mix 400.00
6 11081 01/04/2026 Parimal Arts US-ART-RETAIL Silk 500.00

Step 1 — Create the Ledger masters

Column C (Party Name) and Column D (Sales Ledger) both need a matching Ledger master in Tally before the voucher can post — udiMagic processes MASTER tags before VOUCHER tags, so both ledgers get created automatically in the same import if they don't already exist.

<!-- Party Ledger, created under Sundry Debtors -->
<MASTER TYPE="LEDGER">
    <NAME.LIST>
        <NAME COLUMNREFERENCE="C"/>
    </NAME.LIST>
    <PARENT>Sundry Debtors</PARENT>
</MASTER>

<!-- Sales Ledger, created under Sales Accounts -->
<MASTER TYPE="LEDGER">
    <NAME.LIST>
        <NAME COLUMNREFERENCE="D"/>
    </NAME.LIST>
    <PARENT>Sales Accounts</PARENT>
</MASTER>

Step 2 — Write the Voucher tags

The quickest way to get the exact tags Tally expects for a voucher is to let Tally generate them for you: enter one sample Sales Voucher manually in Tally Prime, then export it as Gateway of Tally >> Display >> Daybook >> Alt+E. This produces a Daybook.xml file — open it and look inside the <TALLYMESSAGE> tag for the voucher structure Tally actually uses (see udiMagic XML tags for how udiMagic's COLUMNREFERENCE attribute then maps each of those tags back to your Excel columns).

A Sales Voucher without inventory maps to something like this:

<VOUCHER>
    <DATE COLUMNREFERENCE="B"/>
    <VOUCHERTYPENAME>Sales</VOUCHERTYPENAME>
    <VOUCHERNUMBER COLUMNREFERENCE="A"/>
    <NARRATION COLUMNREFERENCE="E"/>
    <ALLLEDGERENTRIES.LIST>
        <!-- Party Ledger — debited with the invoice amount -->
        <LEDGERNAME COLUMNREFERENCE="C"/>
        <ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE>
        <AMOUNT COLUMNREFERENCE="F"/>
    </ALLLEDGERENTRIES.LIST>
    <ALLLEDGERENTRIES.LIST>
        <!-- Sales Ledger — credited with the invoice amount -->
        <LEDGERNAME COLUMNREFERENCE="D"/>
        <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
        <AMOUNT FORMULA="=-F#"/>
    </ALLLEDGERENTRIES.LIST>
</VOUCHER>
Remarks:
  • Master tags always process before voucher tags — so a Party or Sales Ledger that doesn't exist yet still gets created in time for the voucher that references it.
  • The two ALLLEDGERENTRIES.LIST blocks must net to zero — the debit to the Party and the credit to the Sales Ledger are equal and opposite.
Sample files: The sample Excel sheet and matching XML tags file for this exercise will be linked here shortly.

Ready to import your Excel data into Tally?

Download udiMagic and start a 14-day free trial — no credit card required.

Download udiMagic View Pricing