Excel to Tally Sales Order XML
Tally imports Excel only in its own templates. Put your order lines in a simple sheet, and get an XML file that TallyPrime imports as Sales Order vouchers, with GST split for you. It runs in your browser.
Drop your sales order sheet here
Excel (.xlsx) or CSV, one row per order line. The file is read in your browser and is not uploaded.
Example result
Sample sheet. Sample data, invented for this example. · 3 lines read, 2 orders
To download, fill in your company name, your state.
| Order | Date | Party | Lines | Taxable | GST | Total |
|---|---|---|---|---|---|---|
| SO-101 | 2026-10-21 | Mehta Electric Stores | 2 | 38,096.00 | 6,857.28 | 44,953.28 |
| SO-102 | 2026-10-21 | Kumar Hardware | 1 | 12,400.00 | 1,488.00 | 13,888.00 |
Show the XML
<ENVELOPE>
<HEADER><TALLYREQUEST>Import Data</TALLYREQUEST></HEADER>
<BODY>
<IMPORTDATA>
<REQUESTDESC>
<REPORTNAME>Vouchers</REPORTNAME>
<STATICVARIABLES><SVCURRENTCOMPANY>Your Company</SVCURRENTCOMPANY></STATICVARIABLES>
</REQUESTDESC>
<REQUESTDATA>
<TALLYMESSAGE xmlns:UDF="TallyUDF">
<VOUCHER VCHTYPE="Sales Order" ACTION="Create" OBJVIEW="Invoice Voucher View">
<DATE>20261021</DATE>
<VOUCHERTYPENAME>Sales Order</VOUCHERTYPENAME>
<REFERENCE>SO-101</REFERENCE>
<PARTYLEDGERNAME>Mehta Electric Stores</PARTYLEDGERNAME>
<PARTYNAME>Mehta Electric Stores</PARTYNAME>
<PERSISTEDVIEW>Invoice Voucher View</PERSISTEDVIEW>
<ISINVOICE>Yes</ISINVOICE>
<LEDGERENTRIES.LIST>
<LEDGERNAME>Mehta Electric Stores</LEDGERNAME>
<ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE>
<ISPARTYLEDGER>Yes</ISPARTYLEDGER>
<AMOUNT>-44953.28</AMOUNT>
</LEDGERENTRIES.LIST>
<LEDGERENTRIES.LIST>
<LEDGERNAME>IGST</LEDGERNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<AMOUNT>6857.28</AMOUNT>
</LEDGERENTRIES.LIST>
<ALLINVENTORYENTRIES.LIST>
<STOCKITEMNAME>Wire 1.5 sqmm Red FR 90m</STOCKITEMNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<RATE>1540.00/Coil</RATE>
<AMOUNT>30800.00</AMOUNT>
<ACTUALQTY> 20 Coil</ACTUALQTY>
<BILLEDQTY> 20 Coil</BILLEDQTY>
<BATCHALLOCATIONS.LIST>
<GODOWNNAME>Main Location</GODOWNNAME>
<BATCHNAME>Primary Batch</BATCHNAME>
<ORDERNO>SO-101</ORDERNO>
<AMOUNT>30800.00</AMOUNT>
<ACTUALQTY> 20 Coil</ACTUALQTY>
<BILLEDQTY> 20 Coil</BILLEDQTY>
<ORDERDUEDATE P="24-Oct-2026">24-Oct-2026</ORDERDUEDATE>
</BATCHALLOCATIONS.LIST>
<ACCOUNTINGALLOCATIONS.LIST>
<LEDGERNAME>Sales</LEDGERNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<AMOUNT>30800.00</AMOUNT>
</ACCOUNTINGALLOCATIONS.LIST>
</ALLINVENTORYENTRIES.LIST>
<ALLINVENTORYENTRIES.LIST>
<STOCKITEMNAME>MCB 16A SP C Curve</STOCKITEMNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<RATE>160.00/Nos</RATE>
<DISCOUNT>5</DISCOUNT>
<AMOUNT>7296.00</AMOUNT>
<ACTUALQTY> 48 Nos</ACTUALQTY>
<BILLEDQTY> 48 Nos</BILLEDQTY>
<BATCHALLOCATIONS.LIST>
<GODOWNNAME>Main Location</GODOWNNAME>
<BATCHNAME>Primary Batch</BATCHNAME>
<ORDERNO>SO-101</ORDERNO>
<AMOUNT>7296.00</AMOUNT>
<ACTUALQTY> 48 Nos</ACTUALQTY>
<BILLEDQTY> 48 Nos</BILLEDQTY>
<ORDERDUEDATE P="24-Oct-2026">24-Oct-2026</ORDERDUEDATE>
</BATCHALLOCATIONS.LIST>
<ACCOUNTINGALLOCATIONS.LIST>
<LEDGERNAME>Sales</LEDGERNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<AMOUNT>7296.00</AMOUNT>
</ACCOUNTINGALLOCATIONS.LIST>
</ALLINVENTORYENTRIES.LIST>
</VOUCHER>
<VOUCHER VCHTYPE="Sales Order" ACTION="Create" OBJVIEW="Invoice Voucher View">
<DATE>20261021</DATE>
<VOUCHERTYPENAME>Sales Order</VOUCHERTYPENAME>
<REFERENCE>SO-102</REFERENCE>
<PARTYLEDGERNAME>Kumar Hardware</PARTYLEDGERNAME>
<PARTYNAME>Kumar Hardware</PARTYNAME>
<PERSISTEDVIEW>Invoice Voucher View</PERSISTEDVIEW>
<ISINVOICE>Yes</ISINVOICE>
<LEDGERENTRIES.LIST>
<LEDGERNAME>Kumar Hardware</LEDGERNAME>
<ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE>
<ISPARTYLEDGER>Yes</ISPARTYLEDGER>
<AMOUNT>-13888.00</AMOUNT>
</LEDGERENTRIES.LIST>
<LEDGERENTRIES.LIST>
<LEDGERNAME>IGST</LEDGERNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<AMOUNT>1488.00</AMOUNT>
</LEDGERENTRIES.LIST>
<ALLINVENTORYENTRIES.LIST>
<STOCKITEMNAME>LED Bulb 9W Cool White</STOCKITEMNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<RATE>62.00/Nos</RATE>
<AMOUNT>12400.00</AMOUNT>
<ACTUALQTY> 200 Nos</ACTUALQTY>
<BILLEDQTY> 200 Nos</BILLEDQTY>
<BATCHALLOCATIONS.LIST>
<GODOWNNAME>Main Location</GODOWNNAME>
<BATCHNAME>Primary Batch</BATCHNAME>
<ORDERNO>SO-102</ORDERNO>
<AMOUNT>12400.00</AMOUNT>
<ACTUALQTY> 200 Nos</ACTUALQTY>
<BILLEDQTY> 200 Nos</BILLEDQTY>
<ORDERDUEDATE P="21-Oct-2026">21-Oct-2026</ORDERDUEDATE>
</BATCHALLOCATIONS.LIST>
<ACCOUNTINGALLOCATIONS.LIST>
<LEDGERNAME>Sales</LEDGERNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<AMOUNT>12400.00</AMOUNT>
</ACCOUNTINGALLOCATIONS.LIST>
</ALLINVENTORYENTRIES.LIST>
</VOUCHER>
</TALLYMESSAGE>
</REQUESTDATA>
</IMPORTDATA>
</BODY>
</ENVELOPE>Then import it in TallyPrime
- Open the company. Order processing must be on (F11), so the Sales Order voucher type exists.
- Every party, stock item, unit and ledger in the file must already exist in Tally with exactly the same name.
- Go to Import, then Transactions, and choose the downloaded file. Tally reports how many vouchers it created and lists any errors.
Errors explained in the Tally Sales Order XML guide.
What the file contains
- One Sales Order voucher per order number, with the party debited for the total and the sales and GST ledgers credited, so each voucher balances.
- Inventory lines with stock item, quantity and unit, rate, discount, godown, order number and due date.
- Names escaped for XML, so parties like
Mehta & Coimport correctly.
The XML is made by the same code OrderDak uses to create Sales Orders. It has been checked against a stand-in for Tally, not yet against every TallyPrime release, so try a few orders first. See the Tally Sales Order XML guide for the format and common errors.
Is my file uploaded?
No. The sheet is read and the XML is built in your browser. Nothing is sent to OrderDak or stored.
Which columns does the sheet need?
Party, Item Name, Qty, Unit and Rate. Order No, Date, Party GSTIN, Disc %, GST % and Due Date are optional. Column order does not matter and common names like Particulars, Quantity, UOM or Price are recognised. Rows with the same Order No become one Sales Order.
Why does Tally say a ledger or stock item does not exist?
Tally only accepts names that already exist in the company, spelt exactly the same. Create the party, stock item, unit or ledger first, or correct the name in the sheet.
How is GST worked out?
Taxable value is quantity × rate less discount, rounded to paise. If the party's GSTIN is from another state the tax goes to the IGST ledger; otherwise half to CGST and half to SGST. Rows without a GSTIN are treated as within your state.
Does it work with Tally ERP 9?
The file uses the XML import format that TallyPrime documents for vouchers, and was built for TallyPrime. It has not been tested on Tally ERP 9.
My customers send orders in their own layouts. Can this read those?
This tool needs one row per line in a clear table. OrderDak, the full product, reads customer orders in any layout, including PDFs, emails and WhatsApp chats, and matches them to your stock items before creating the Sales Order.