Shopify to Tally integration: orders, GST, shipping and refunds as vouchers
A Shopify to Tally integration posts each Shopify order into TallyPrime as a sales voucher with the right GST ledgers, records refunds as credit notes and gateway settlements as receipts, and reconciles the two every night. Shopify pushes orders by webhook; Tally only accepts data on the office computer where it runs, so orders queue on a server and a small agent posts them whenever Tally is open.
What this integration connects
"Tally" here means TallyPrime, the accounting software. Shopify holds the orders, payments and refunds; Tally holds the books your accountant files from. Without an integration, someone exports Shopify orders to a spreadsheet and keys them in, or posts one summary entry per day and loses the detail.
The two systems are built very differently, which is what makes this pairing harder than it looks:
| Shopify | TallyPrime | |
|---|---|---|
| Where it runs | Shopify's cloud, always on | Usually one office computer |
| How it shares data | GraphQL Admin API and webhooks | XML (or JSON) requests over HTTP on that computer, port 9000 by default |
| When it accepts data | Any time | Only while TallyPrime is running with the company loaded |
| What it calls an order | An order with line items, tax lines, discounts, shipping lines, refunds | A voucher whose debits and credits must balance exactly |
The general Tally side, including the XML format and a worked voucher, is on Tally integration. The Shopify side is on working with the Shopify Admin API.
Data flow
Shopify ── webhook: orders/paid, orders/cancelled, refunds/create ──▶ Cloud service
│ verify HMAC, reply 200 in < 5 s
│ fetch full order by GraphQL
│ map to voucher (rules below)
▼
Queue (pending / posted / failed)
▲ │
agent polls ─────┘ │
Office PC: TallyPrime ◀── agent posts XML on localhost:9000 ◀─────────────────────┘
response CREATED / ERRORS / LINEERROR ──▶ agent reports back ──▶ queue status
Nightly: bulk query of yesterday's Shopify orders vs vouchers posted → difference report
The agent only makes outbound requests, so the office computer is never exposed to the internet.
The voucher mapping
This is the part your accountant must agree before any code is written. A common starting point:
| Shopify event | Tally voucher | Debit | Credit | Notes |
|---|---|---|---|---|
| Prepaid order, paid | Sales | Gateway clearing ledger (for example "Razorpay Receivable") | Sales ledger by GST rate; output CGST + SGST, or IGST | Voucher number or reference carries the Shopify order name, such as #1042 |
| Tax on the order | Part of the sales voucher | CGST and SGST when the delivery state is the store's own state; IGST otherwise | CBIC: same state means CGST/SGST, inter-state means IGST | |
| Shipping charged | Part of the sales voucher | Shipping income ledger, with its tax | Tax treatment of shipping is the accountant's call | |
| Discount or coupon | Part of the sales voucher | Discount ledger, or net into the rate | Choose one method and keep it | |
| Paise difference | Part of the sales voucher | Round-off ledger | Round-off ledger | Shopify rounds per line; Tally needs an exact balance |
| COD order | Sales, when dispatched or delivered | COD receivable (or courier) ledger | As above | Timing set by the accountant |
| Gateway settlement | Receipt | Bank | Gateway clearing ledger | Gateway fee and GST on the fee as separate debits |
| Courier COD remittance | Receipt | Bank | COD receivable ledger | Courier charges deducted as an expense |
| Refund (full or partial) | Credit note | Sales return and reversed tax ledgers | Gateway clearing or customer ledger | Linked to the original order name |
| Cancelled before dispatch | Delete or cancel the voucher, or post a credit note | Depends on whether the period is already closed | ||
| B2B order with GSTIN | Sales, against the buyer's own ledger | Buyer ledger | As above | If e-invoicing applies, see GST e-invoicing |
Settlement data comes from the gateway, not Shopify; for Razorpay, see Razorpay integration.
What breaks, and the guard against each
| What goes wrong | Why | Guard |
|---|---|---|
| Some orders never arrive | A SKU, ledger or GST rate in the order has no match in Tally | Mapping checked before posting; failure names the missing item |
| "Voucher totals do not match" | Line-level rounding in Shopify against an exact balance in Tally | Round-off entry; tax recomputed the accountant's way |
| Same order twice | Shopify retries webhooks up to eight times in four hours, and a slow reply counts as failure | Reply within five seconds; skip any X-Shopify-Webhook-Id or order name already posted |
| Refunds missing | Only order creation was synced | Subscribe to refunds; post credit notes |
| Nothing posted overnight | Tally closed, a different company open, or the PC asleep | Queue holds orders; alert if it stops draining |
| Sync stops after a quarter starts | The connector used a retired Shopify API version | Version upgrade in the quarterly maintenance list |
| Wrong tax type | Missing or wrong state on the shipping address | Validate state before posting; hold the order for review |
The full diagnostic for an existing sync that misbehaves is on orders not syncing to Tally or your ERP.
What WavX builds
WavX builds the cloud service (webhook receiver, mapping engine, queue), the outbound agent for the Tally computer, a screen for the accounts team showing pending, posted and failed orders with readable errors and a retry button, a mapping screen for new SKUs and tax rates, and the nightly reconciliation. The Shopify app sits in the merchant's own Shopify organisation and the code is handed over. It is one of the Shopify integrations WavX offers.
Effort band
Quoted after scoping, because the work depends on the number of voucher types (sales only, or sales, receipts, refunds and COD) and the exceptions in your mapping. For planning, the software cost estimator carries third-party integrations as a ₹60,000 line item inside a larger build; the worked planning range for a standalone integration service is on API and system integration services.
When not to build one
If you have a few orders a day, export them from Shopify and let your accountant import a daily summary; it costs nothing to build. If a ready-made Shopify to Tally connector handles your mapping (single GST rate, no COD, few refunds), use it and spend the money elsewhere. Build custom when the order volume makes manual entry a daily job, when COD and partial refunds are common, or when the accounts team needs to see and fix failures without calling a developer.
Frequently asked questions
How often do orders reach Tally?
Within minutes of payment while Tally is open, because Shopify sends a webhook and the agent on the Tally computer collects queued orders on a short interval. When Tally is closed, orders wait and go across in order when it reopens. Some accountants prefer one batch at the end of the day; the same integration can run that way.
Should each Shopify customer get a ledger in Tally?
Usually not for retail buyers. Most accountants post retail sales against one ledger per payment route (for example, the gateway or a cash-on-delivery ledger) and create individual ledgers only for B2B buyers who give a GSTIN. Your accountant decides; the integration follows the rule.
What happens to cash-on-delivery orders?
They are posted as sales when your accountant says the sale happens, typically on dispatch or delivery, against a COD receivable ledger. When the courier remits the cash, a receipt clears that ledger. Orders that return undelivered are reversed with a credit note.
Can we fix past months that were entered by hand?
Yes. Orders can be read from Shopify for any date range and compared with what is in Tally. We produce a list of missing or mismatched orders first, and post corrections only after your accountant has reviewed it.
Sources
- TallyHelp: XML integration · read 2 October 2026
- TallyHelp: Pre-requisites for integrations · read 2 October 2026
- TallyHelp: Sample XML · read 2 October 2026
- Shopify developer docs: Deliver webhooks through HTTPS · read 2 October 2026
- Shopify developer docs: Troubleshooting webhooks · read 2 October 2026
- Shopify developer docs: API versioning · read 2 October 2026
- Shopify developer docs: Bulk operation queries · read 2 October 2026
- CBIC GST: Frequently asked questions · read 2 October 2026
Related
Build your own software — your way, your pricing.
WavX Solutions is here to create your own software in a fully custom way, built exactly how you work — with a pricing model that fits your business. Connect now and let's build it.