Overview
This guide describes how Tally.ERP 9 and TallyPrime (all editions, including Server, Developer and Tally on Cloud) connect to TrustBill, a UAE FTA-accredited service provider (ASP), so Tally users can issue PINT-AE compliant e-invoices without leaving the Tally interface.
Tally is the most widely-used ERP among UAE SMEs — but it does not ship with native Peppol / FTA e-invoicing. TrustBill sits between Tally and the FTA: voucher data is pulled from Tally through the connector, translated to PINT-AE XML, validated in real time, delivered over the Peppol network via a certified ASP (Tron-Stride or Storecove), and the FTA acknowledgement is returned as a status update that can be written back into the Tally voucher.
What this integration delivers
- Push-based (TDL) or pull-based (XML gateway / ODBC) — pick what fits your Tally deployment
- Sales, Purchase, Credit Note and Debit Note vouchers all mapped to PINT-AE document types
- UAE VAT ledgers auto-detected and mapped to FTA tax categories (Standard 5%, Zero-rated, Exempt, Reverse Charge, Out-of-scope)
- Live FTA status (delivered / acknowledged / rejected) written back into a custom Tally field via the TrustBill TDL
- Bulk migration path for historical Tally vouchers via XML export or CSV
- Free-zone, designated-zone and margin-scheme flags mapped end to end
- Works offline — the connector queues vouchers when the internet drops
Supported Tally Versions
TrustBill's Tally connector is tested and certified against the following editions. Older Tally 7.x / 8.x builds are not supported (they predate Tally's XML gateway).
| Tally edition | Release | Deployment | Support level |
|---|---|---|---|
| Tally.ERP 9 | Release 6.6.x | On-premise / LAN | Full — legacy path via XML gateway + UAE VAT localisation |
| TallyPrime | 1.x | On-premise (Silver / Gold) | Full |
| TallyPrime | 2.x | On-premise (Silver / Gold) | Full |
| TallyPrime | 3.x | On-premise + Multi-company | Full — recommended for multi-branch SMEs |
| TallyPrime | 4.x / 4.1 | On-premise + WhatsApp integration | Full |
| TallyPrime | 5.x | On-premise + Connected services | Full — native Connected-Services hook available |
| TallyPrime Server | 3.x+ | Multi-user data server | Full — recommended for 5+ concurrent Tally users |
| TallyPrime Developer | Any | TDL customisation edition | Full — includes ODBC + Custom TDL push |
| TallyPrime Edit Log | 3.x+ | Audit-compliant edition | Full — TrustBill acknowledgement writes are logged |
| TallyPrime on AWS / Tally Cloud | Any TSP-hosted | Cloud / RDP | Full via TrustBill Cloud Bridge (VPN tunnel) |
UAE localisation required. Your Tally company must have "VAT (UAE)" enabled under F11 → Statutory & Taxation → Enable Value Added Tax → United Arab Emirates. TRN, VAT registration date and VAT filing period must be populated on the company master.
Prerequisites
On the Tally side
- Tally.ERP 9 Release 6.6+ or TallyPrime 1.x–5.x with UAE VAT localisation enabled
- Valid 15-digit UAE TRN on the company master (Gateway → F3 Company Info → TRN)
- Party Ledgers populated with buyer name, TRN (for B2B), country and address
- Tax Ledgers (Output VAT 5%, Zero-Rated, Exempt, etc.) linked to the correct Nature of Transaction
- XML gateway enabled: F1 → Configure → Advanced Configuration → Client/Server → Server, port
9000open on the LAN - Optional: TallyPrime Developer edition if you want to load the TrustBill TDL for push-mode + write-back
On the TrustBill side
- A TrustBill SME account (one account = one TRN = one Tally company)
- Completed KYB (business verification) — trade licence + TRN certificate uploaded
- Submission mode set to
testorsandboxduring onboarding,livefor production - Per-tenant API credential issued by TrustBill support for headless calls
Integration Architecture
The Tally ↔ TrustBill integration uses request/response outbound and polling inbound today. An outbound webhook is on the roadmap.
Outbound flow (Tally → TrustBill → FTA)
- A voucher (Sales / Purchase / Credit Note / Debit Note) is saved in Tally.
- Either the TDL plug-in triggers on
Post-Save, or the connector polls the XML gateway everyNseconds for new vouchers. - The connector reads the voucher as Tally XML (
TALLYREQUEST/EXPORT DATA) and translates it into TrustBill'sInvoiceCreateInputshape. - Connector calls
POST /v1/invoices— invoice stored asdraft. Nothing has reached the FTA yet. - Connector calls
POST /v1/invoices/submit— status flips toqueued. - TrustBill runs:
queued → transformed → validated → delivered(PINT-AE XML built, Schematron-validated, handed to the ASP). - ASP forwards the XML to the FTA over Peppol.
Inbound flow (FTA → TrustBill → Tally)
- The ASP posts an inbound webhook to TrustBill when the FTA acknowledges or rejects the invoice.
- TrustBill verifies the ASP's HMAC signature and updates the status to
acknowledgedorrejected. - The Tally connector polls
GET /v1/invoices/{id}every 2–5 minutes for non-terminal invoices. - On
acknowledged, the TDL plug-in writes the FTA acknowledgement reference into the custom UDFTrustBillAckRefon the Tally voucher; onrejected, it writes the rejection reason.
Connection Methods
Six paths are supported. Pick the one that matches your Tally deployment and IT constraints.
1. TrustBill TDL Plug-in (recommended for TallyPrime Silver / Gold / Developer)
A signed .tdl file loaded into Tally that hooks the Post-Save event on Sales / Purchase / Credit / Debit Note vouchers and POSTs the voucher XML to TrustBill.
- Real-time — no polling delay
- Writes the FTA ack ref back into a custom Tally field
- Shows the TrustBill status directly in the Tally voucher screen
- Configured via a small TrustBill Configuration menu inside Tally
2. TrustBill Windows Connector (XML Gateway pull)
A Windows service installed on the Tally server that polls the Tally XML gateway (http://localhost:9000) at a configurable interval, batches new vouchers, and calls the TrustBill API.
- Zero changes required inside Tally
- Best when you can't modify Tally (e.g. locked-down Silver install)
- Automatic retry + offline queue + tamper-evident audit log
3. ODBC (Tally Developer editions)
Tally's ODBC server exposes voucher tables that can be queried with SQL. The connector uses this as a fallback when XML export is disabled.
- Requires TallyPrime Developer or a licensed ODBC seat
- Read-only — no write-back to Tally
- Useful for one-off historical extracts
4. CSV / Excel drop folder
Tally's built-in Export → Day Book / Sales Register → Excel or CSV is scheduled to dump vouchers to a shared folder. TrustBill's watcher picks up the file and calls POST /v1/invoices/bulk.
- Zero technical setup — the accountant runs a Tally shortcut once a day
- Best for very small SMEs with < 20 invoices / day
- Uses the standard TrustBill CSV schema (see Bulk Migration)
5. TallyPrime Connected Services (TallyPrime 5.x)
TallyPrime 5 introduced a Connected Services layer that lets certified partners register a webhook and receive voucher payloads directly. TrustBill is a registered partner — enable us from Connect → Manage Services → TrustBill E-Invoicing.
- Native to TallyPrime 5 — no TDL, no Windows service
- Real-time push, TLS end-to-end
- Configuration and OAuth handshake done inside Tally
6. TrustBill Cloud Bridge (for Tally on AWS / Tally Cloud)
For customers running Tally on a hosted VPS or Tally-on-AWS from a Tally Solutions Partner (TSP), TrustBill provides a Cloud Bridge that opens a reverse VPN tunnel and either polls the XML gateway or loads the TDL plug-in.
- No open inbound ports on your VPS
- Traffic pinned to me-central-1 (UAE) for data residency
- TSP handles Tally licensing; TrustBill handles the e-invoicing layer
Which method should I use?
If you're on TallyPrime 5, use Connected Services. If you're on TallyPrime 3/4 Silver/Gold, use the TDL Plug-in. If Tally is on a hosted VPS, use the Cloud Bridge. If you're on legacy Tally.ERP 9 without customisation rights, use the Windows Connector (XML pull).
Authentication
TrustBill's API uses Bearer JWT authentication. The Tally connector (any method above) authenticates once per tenant with a per-tenant API credential and refreshes the token on expiry.
Required request headers
Authorization: Bearer {jwt_token}
Content-Type: application/json
Idempotency-Key: {unique_key_per_request}
X-TrustBill-Source: tally-connector/1.0Idempotency-Key derivation for Tally
Every write endpoint requires a unique Idempotency-Key header. For Tally, derive it from the Tally VOUCHERGUID (a stable UUID assigned to every voucher, unchanged across sync/export):
Idempotency-Key: tally::{COMPANYGUID}::{VOUCHERGUID}Re-sending the same key + body returns the cached response — a Tally XML pull retry cannot create a duplicate FTA submission.
Tally → PINT-AE Field Mapping
The connector translates Tally's XML voucher shape into TrustBill's InvoiceCreateInput, which TrustBill then renders into PINT-AE XML.
Header-level mapping
| Tally XML tag | TrustBill field | Notes |
|---|---|---|
VOUCHERNUMBER | number | 1–64 chars, unique per tenant + mode |
DATE | issueDate | Tally uses YYYYMMDD → converted to ISO YYYY-MM-DD |
BILLTODATE / DUEDATE | dueDate | Optional |
VOUCHERTYPENAME | invoiceType | Sales → sale, Purchase → purchase, Credit Note → credit_note, Debit Note → debit_note |
CURRENCY | currency | Must be AED; multi-currency Tally vouchers are converted at Tally's posting rate |
Company.TRN | seller.trn | 15-digit UAE TRN (from company master) |
PARTYLEDGERNAME | buyer.name | Legal name of the party ledger |
PARTYGSTIN / PARTYTRN | buyer.trn | In UAE localisation this holds the TRN; leave empty for B2C |
COUNTRYOFRESIDENCE | buyer.country | ISO 3166-1 alpha-2 (connector normalises Tally's full country name) |
BASICBUYERADDRESS.LIST | buyer.address.{line1,line2,city} | Multi-line address collapsed into line1/line2 |
REFERENCE | referencedInvoiceNumber | Required for Credit / Debit Notes — original invoice ref |
NARRATION | notes | Preserved verbatim; visible in FTA-facing XML |
VOUCHERGUID | sellerInvoiceReference | Stored for traceability + used as the idempotency key |
Line-level mapping (INVENTORYENTRIES.LIST + ALLLEDGERENTRIES.LIST)
| Tally XML tag | TrustBill field | Notes |
|---|---|---|
STOCKITEMNAME | lines[].description | Supports Arabic; if empty, uses LEDGERNAME from ALLLEDGERENTRIES |
ACTUALQTY | lines[].quantity | Must be > 0; negative Qty in Tally signals a return (auto-mapped to credit note) |
RATE | lines[].unitPrice | VAT-exclusive; connector strips VAT if voucher is inclusive-of-tax |
UOM / BASEUNITS | lines[].unit | Tally UOM mapped to UN/ECE Rec 20 (Nos → C62, Kg → KGM, Ltr → LTR) |
DISCOUNT | lines[].discountAmount | Per-line discount, applied before VAT |
STOCKITEMNAME.ALIAS | lines[].sellerItemId | Preserved for traceability |
Ledger with ISDUTYLEDGER=YES | lines[].vatRate + lines[].taxCategory | Tally VAT ledger (e.g. "Output VAT @ 5%") mapped via the ledger → category table |
NATUREOFTRANSACTION | lines[].taxCategory (hint) | "Sales Taxable", "Sales Zero Rated", "Sales Exempt", "Sales to Designated Zone", etc. |
Totals are computed server-side
Do not send subtotal, vat_amount or total. TrustBill re-computes totals from lines[] and returns them so Tally can reconcile. If Tally's total differs from TrustBill's by more than ±0.01 AED, the connector logs a variance and blocks submission until the voucher is corrected — this catches Tally rounding-mode mismatches early.
Create Invoice (draft)
Endpoint: POST /v1/invoices
A real Tally sales voucher mapped to the TrustBill payload. Tally voucher: SI/2026-27/00518 — Sale of consulting services to a Dubai buyer at 5% VAT.
Request body
{
"number": "SI/2026-27/00518",
"issueDate": "2026-09-08",
"dueDate": "2026-10-08",
"currency": "AED",
"invoiceType": "sale",
"buyer": {
"name": "Emirates Digital Solutions LLC",
"trn": "100987654300005",
"country": "AE",
"email": "accounts@emiratesdigital.example",
"address": {
"line1": "Office 1204, Sheikh Zayed Road",
"city": "Dubai",
"country": "AE"
}
},
"seller": {
"name": "Tally Trading LLC",
"trn": "100100100100005",
"country": "AE"
},
"lines": [
{
"description": "SAP Implementation Consulting",
"sellerItemId": "SVC-SAP-IMPL",
"quantity": 40,
"unit": "HUR",
"unitPrice": 750.00,
"vatRate": 0.05,
"taxCategory": "standard_5"
}
],
"sellerInvoiceReference": "Tally VoucherGUID 5f2c7e9a-...",
"notes": "Milestone 2 of 3 — 30 days net"
}Response (201 Created) — abbreviated:
{
"id": "c8d2f1a4-....-uuid",
"number": "SI/2026-27/00518",
"status": "draft",
"invoiceType": "sale",
"totals": { "subtotal": 30000, "tax": 1500, "total": 31500, "currency": "AED" },
"pipeline": [],
"errors": [],
"submissionMode": "sandbox",
"source": "tally-connector"
}Credit & Debit Notes
Tally posts Credit Notes (sales return / rate correction) and Debit Notes (purchase return / additional charge) as first-class voucher types. The connector maps them directly.
| Tally voucher | invoiceType | Required extra fields |
|---|---|---|
| Credit Note (sales return / rate correction) | credit_note | referencedInvoiceNumber = original Sales voucher number, reasonCode (e.g. ReturnOfGoods, PriceCorrection) |
| Debit Note (purchase return / debit memo) | debit_note | referencedInvoiceNumber = original Purchase voucher number, reasonCode |
Sign convention: Tally posts credit / debit notes with positive quantities and positive rates. Send the same — do not negate. The invoiceType tells TrustBill and the FTA that the document reverses the reference invoice; PINT-AE handles the sign in the XML.
Submit Invoice(s) for Delivery
Creating a draft does not deliver the invoice to the FTA. Submission is an explicit second call so the accountant can review before sending.
Endpoint: POST /v1/invoices/submit
{ "ids": ["c8d2f1a4-....-uuid"] }Accepts 1–200 UUIDs per call. Non-draft invoices are silently skipped, so retry is safe.
Response (200):
{ "submitted": 1, "ids": ["c8d2f1a4-....-uuid"] }Tally tip: most Tally users configure the TDL plug-in to auto-submit any draft older than N minutes (default: 10). This gives the accountant a window to alter or void the voucher in Tally before it reaches the FTA.
Status Tracking & Write-back
Statuses are forward-only. A retry starts a new pipeline run rather than rewinding.
| Status | Meaning | Tally write-back |
|---|---|---|
| draft | Created, not submitted | — |
| queued | Submitted, waiting for pipeline | TrustBillStatus = Queued |
| transformed | PINT-AE XML generated | — |
| validated | Passed schema + Schematron | — |
| blocked_no_credit | Insufficient TrustBill credit | TrustBillStatus = BlockedNoCredit |
| delivered | Sent to FTA via ASP | TrustBillStatus = Delivered |
| acknowledged | FTA confirmed receipt / validity | TrustBillAckRef = <FTA ref>, TrustBillStatus = Acknowledged |
| rejected | FTA or ASP rejected the invoice | TrustBillStatus = Rejected, TrustBillRejectReason = <code> |
Polling recommendation: the Tally connector polls GET /v1/invoices/{id} every 2 minutes for non-terminal invoices, then stops on a terminal status. Write-back happens via the TrustBill TDL on the same tick.
Bulk Migration from Tally
Historical Tally vouchers (up to 12 months back) can be imported either as "archive only" (marked historical, not submitted to the FTA) or as "submit to FTA" depending on your compliance requirement.
Endpoint: POST /v1/invoices/bulk — multipart/form-data, one CSV part, max 5 MB, Idempotency-Key header required.
CSV column headers (in order)
number,issueDate,dueDate,invoiceType,currency,sellerTrn,sellerName,buyerTrn,buyerName,buyerCountry,buyerAddressLine1,buyerCity,lineDescription,lineQty,lineUnit,lineUnitPrice,lineVatRate,lineTaxCategory,referencedInvoiceNumber,notes| Limit | Value |
|---|---|
| Max rows per file | 1,000 invoices |
| Multiple lines per invoice | Repeat the number column — importer groups lines automatically |
| Partial success | Yes — bad rows are reported without rolling back the batch |
| Duplicate invoice number | Draft rows are upserted; already-submitted rows are rejected |
Recommended workflow: in Tally, run Display → Day Book → Alt+E (Export) → Format: CSV → Range: from 01-Apr-2026 to today. Run the TrustBill tally-csv-normaliser script to remap Tally's column headers to the schema above. Upload in test mode first, review the summary, then repeat in sandbox and live.
Test / Sandbox / Live Modes
Every TrustBill tenant has one active submission mode. Invoices are hard-partitioned — a live invoice cannot be viewed from sandbox, and vice-versa.
| Mode | Purpose | Reaches FTA? |
|---|---|---|
test | Local integration testing — no ASP call | No |
sandbox | End-to-end dry run against the ASP sandbox | FTA sandbox only |
live | Real, legally binding e-invoicing | Yes — the FTA production network |
Tally best practice: run the connector in sandbox for the full first VAT-return period. Reconcile TrustBill's "Delivered invoices" report against Tally's Display → Statutory Reports → VAT → VAT Computation before switching to live.
VAT Ledger Mapping
In Tally UAE, VAT is captured as a duty ledger (e.g. "Output VAT @ 5%") + a Nature-of-Transaction on the party/item. Map each Tally VAT ledger to a TrustBill taxCategory once, at connector setup:
| Typical Tally VAT ledger | Nature of Transaction | vatRate | taxCategory |
|---|---|---|---|
| Output VAT @ 5% | Sales Taxable | 0.05 | standard_5 |
| Output VAT — Zero Rated | Sales Zero Rated (Exports) | 0 | zero_rated_export |
| Output VAT — Zero Rated | Sales Zero Rated (Healthcare) | 0 | zero_rated_healthcare |
| Output VAT — Zero Rated | Sales Zero Rated (Education) | 0 | zero_rated_education |
| (no VAT ledger) | Sales Exempt (Financial) | 0 | exempt_financial |
| (no VAT ledger) | Sales Exempt (Residential Rent) | 0 | exempt_residential_rent |
| Reverse Charge — Output VAT | Sales to Designated Zone | 0 | reverse_charge_designated_zone |
| (no VAT ledger) | Non-GCC / Out of Scope | 0 | out_of_scope |
The Tally connector reads each voucher's ALLLEDGERENTRIES to find the tax-ledger amount and pairs it with the Nature of Transaction to pick the correct taxCategory. If a voucher uses a custom-named ledger that isn't in the mapping table, the connector flags it and blocks submission until you add the row.
UAE-Specific Scenarios
Free Zone / Designated Zone sellers
Set the Tally Company master flag VAT Registration → Type of Registration → Designated Zone. The connector propagates it as seller.designatedZone: true so PINT-AE emits the correct free-zone declaration.
Margin scheme (used cars, antiques, second-hand goods)
Configure the Tally stock item with Type of Supply = "Second-hand goods (Profit margin scheme)". The connector reads the flag and sends lines[].marginScheme: true. The margin, not the sale value, is used as the VAT base — matching FTA rules for margin-scheme traders.
Reverse charge on imports
Purchase vouchers from non-UAE suppliers with Nature of Transaction = "Purchase from Outside GCC — Reverse Charge" are mapped to invoiceType: "purchase" + taxCategory: "reverse_charge_designated_zone". TrustBill emits the required ReverseCharge markers.
B2C simplified tax invoices
Leave buyer.trn empty. Tally POS vouchers under 10,000 AED are simplified tax invoices under FTA rules; TrustBill emits the correct PINT-AE profile automatically based on the missing TRN + total < 10,000 AED.
Multi-company Tally installs
One Tally installation often holds many companies (one per legal entity). Each company = one TRN = one TrustBill tenant. Configure the connector with a companyMap section listing each Tally COMPANYGUID and its matching TrustBill API credential.
Error Handling
TrustBill errors follow the shape { code, humanMessage, meta? }. The Tally connector logs the code against the source voucher (via the TDL's TrustBillLog field) and either retries (transient) or surfaces the error in the Tally voucher screen (permanent).
| HTTP | Typical code | Tally root cause | Action |
|---|---|---|---|
| 400 | invalid_body | Party ledger missing TRN, or Nature of Transaction blank on a line | Fix the ledger / voucher in Tally; connector auto-retries on next poll |
| 400 | totals_mismatch | Tally rounding mode differs (e.g. voucher-level vs item-level rounding) | Set Tally invoice rounding to "As per Invoice" |
| 400 | unknown_tax_ledger | Custom-named VAT ledger not in the connector's mapping table | Add the ledger name → taxCategory entry in the connector config |
| 401 | missing_authorization_header | JWT expired between polls | Automatic refresh — logged as INFO, no action needed |
| 403 | kyb_required | Tenant not yet approved by TrustBill compliance | Contact TrustBill support |
| 409 | invoice_mode_mismatch | Tally is posting live vouchers but tenant is still in sandbox | Switch mode in TrustBill dashboard |
| 409 | invoice_number_duplicate | Two Tally companies share a voucher-numbering series that overlaps | Prefix each company's voucher number (Tally: Voucher Types → Method of Numbering) |
| 413 | bulk_payload_too_large | CSV export > 1,000 rows or > 5 MB | Split by date range and re-upload |
| 422 | idempotency_required | Custom middleware missed the header | Always send Idempotency-Key derived from COMPANYGUID + VOUCHERGUID |
Setup Checklist
- Enable UAE VAT localisation in Tally (F11 → Statutory & Taxation → United Arab Emirates)
- Fill in Company TRN and VAT registration date on the Tally company master
- Create your TrustBill SME account and complete KYB (upload trade licence + TRN certificate)
- Request a per-tenant API credential from TrustBill support
- Choose a connection method and install: TDL Plug-in (recommended), Windows Connector, or Connected Services (TallyPrime 5)
- Enable Tally XML gateway (F1 → Configure → Advanced → Client/Server → Server, port 9000) if using pull mode
- Map Tally VAT ledgers to TrustBill
taxCategoryvalues (one-time) - Enable
sandboxmode in the TrustBill dashboard - Post a test Sales voucher in Tally — confirm it reaches
acknowledgedin TrustBill within 3 minutes - Reconcile Tally's VAT Computation report against TrustBill's "Delivered invoices" report
- Switch to
livemode when the FTA registration is complete - Enable the TrustBill TDL write-back so acknowledgement refs appear inside the Tally voucher
Suggested test cases before go-live
- B2B Sales voucher, single line, 5% VAT — expect
acknowledged - POS Sales voucher under 10,000 AED with no buyer TRN — expect PINT-AE "simplified" profile
- Credit Note referencing an earlier Sales voucher — expect matching pair
- Export sale outside GCC, zero-rated — expect
taxCategory: zero_rated_export - Sale to a designated-zone customer — expect reverse-charge markers
- Multi-line voucher with mixed VAT rates (5% + 0%) — expect two
taxCategoryvalues - Duplicate voucher number across two Tally companies — expect
invoice_number_duplicate - Bulk upload of 500 historical vouchers via CSV — expect partial success reported per row
- Voucher alteration in Tally after submission — expect connector to raise a Credit Note automatically (if enabled)
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Tally voucher never appears in TrustBill | XML gateway not enabled, or company not loaded in Tally | Enable the gateway (F1 → Configure → Server); load the target company |
| Windows Connector cannot reach Tally | Port 9000 blocked by Windows firewall or Tally running as a different user | Add an inbound firewall rule; run Tally and the connector as the same Windows account |
Invoice stuck in queued | Insufficient credit, or KYB rejected | Check the TrustBill dashboard for a red banner; top up credit |
Invoice reaches rejected with "buyer_trn_invalid" | Party ledger TRN has spaces or is 14 digits | Fix in Tally: Party Ledger → Statutory Info → TRN. Connector re-emits. |
totals_mismatch on many vouchers | Tally rounding is item-level, TrustBill expects invoice-level (or vice-versa) | In Tally: Voucher Type → Method of Rounding → "Round Off (Nearest)" |
Arabic party names appear as ??? in PINT-AE XML | Tally data path on a non-Unicode Windows install | Set Windows system locale to Unicode (Control Panel → Region → Administrative) |
| TDL write-back not appearing on voucher | TrustBill TDL not loaded, or user does not have "Alter voucher" permission | Reload TDL from F1 → TDL Configuration → Load; grant permission in Security Control |
| Duplicate FTA submissions after a network blip | Idempotency-Key not derived from VOUCHERGUID | Confirm the key formula is tally::COMPANYGUID::VOUCHERGUID |
| Connector picks up altered vouchers repeatedly | Tally alters bump ALTERID but keep the same VOUCHERGUID | Enable the "Re-submit on alter" flag in the connector config (issues an automatic Credit Note + new Sales voucher pair) |
Support & Contact
Technical Support
- WhatsApp: +971 52 260 9313
- Email: info@trustbill.ae
- Documentation hub: trustbill.ae/en/documentation
- Focus RT integration: /documentation/focus-rt
- ERP Partner API guide: /documentation/erp-partner-api
Escalation
For go-live escalations, include your TrustBill tenant ID, the Tally COMPANYGUID + VOUCHERGUID of the failing voucher, and the timestamp of the failed pipeline run. TrustBill support responds to Tally-tagged tickets within one business hour during UAE working days.