Ca Skill
/install ca-skill
\r \r
TallyPrime (CA) Skill\r
\r
Connect to a locally running TallyPrime instance via its XML-over-HTTP interface. All requests are HTTP POST to $TALLY_URL (commonly http://localhost:9000) with an XML body.\r
\r
- No cloud API: TallyPrime must be open/running on the user’s machine.\r
- Multi-company: Always use the correct
SVCURRENTCOMPANY(exact spelling).\r \r
Hero Use Case: WhatsApp invoice → Tally entry\r
\r Goal: zero manual entry for CAs handling many clients.\r \r
- Read bill/invoice (PDF/image) and extract: company, party, GSTIN, date, invoice no, taxable, tax, total, ledger mapping.\r
- Ensure masters exist: party ledger, purchase/sales ledger, GST ledger(s), bank/cash ledger (if needed).\r
- Post voucher with a unique GUID.\r
- Confirm a summary back to the user.\r \r
When to use this skill\r
\r Use when the user asks to:\r \r
- Post entries: purchase, sales, receipt, payment, journal, contra, credit note, debit note\r
- Check reports: day book, trial balance, balance sheet, profit & loss, ledger statement, outstandings, GST\r
- Manage masters: create/alter ledgers, groups, stock items/UOM (inventory clients)\r
- Fix data: alter or cancel a voucher\r \r
Critical rules (must follow)\r
\r
- Never assume company: if not explicit, ask which company to use before posting.\r
- Never guess ledgers: verify ledgers exist before voucher import; create missing masters first.\r
- Dates are
YYYYMMDD(no separators).\r - Idempotency: always set a stable unique
GUIDper voucher to prevent duplicates on retries.\r - Balance vouchers: total debits must equal total credits (Tally error: “Voucher totals do not match!”).\r
- Escape XML: narration/party names may contain
&→ use&in XML.\r - Posting is write operation: confirm intent (and company) before any create/alter/cancel.\r
- Prefer bill-wise allocations for party ledgers to keep outstandings correct (see
reference/vouchers.md).\r - Accounting-only vouchers (no inventory items): set
\x3CISINVOICE>No\x3C/ISINVOICE>and place the party ledger entry first in theALLLEDGERENTRIES.LISTsequence. This makes the Day Book "Particulars" column show the party name (not the expense/purchase ledger) and defaults the voucher to the clean "As Voucher" view. Only useISINVOICE=Yesfor item invoices that go throughreference/inventory.md.\r - Accounting Invoice Mode — always use
LEDGERENTRIES.LIST: whenOBJVIEW="Invoice Voucher View"is set (Modes 1 and 2 inreference/vouchers.md), every ledger block must use\x3CLEDGERENTRIES.LIST>, not\x3CALLLEDGERENTRIES.LIST>. Tally silently ignoresALLLEDGERENTRIESin this view, causing the voucher to be saved with no entries and the error "No accounting or inventory entries are available."\r - Voucher class decision — confirm before posting: before posting any Purchase or Sales voucher, check whether the company's voucher type uses a class for GST splitting. Run the preflight checklist in the "Preflight checklist before posting" section below. If class mode is confirmed, set
\x3CCLASSNAME>EXACT_CLASS_NAME\x3C/CLASSNAME>in the voucher header and include all four GST header fields (CMPGSTIN,PARTYGSTIN,GSTREGISTRATIONTYPE,PLACEOFSUPPLY). If class existence is unconfirmed, stop and ask — do not post without it. Full decision rules and templates are in the "Voucher class — decision rules" section ofreference/vouchers.md.\r \r
Preflight checklist before posting\r
\r
Run through every item before sending any Create/Alter/Delete request. Stop at the first unresolved item and ask the user.\r
\r
| # | Check | How to verify | Block if… |\r
|---|---|---|---|\r
| 1 | Company confirmed | User stated it explicitly | Name not given — ask |\r
| 2 | Server reachable | curl -s --max-time 5 "$TALLY_URL" | No response / wrong port |\r
| 3 | Voucher type uses a class? | Export voucher type masters or ask user | Unknown — ask before posting |\r
| 4 | Class name confirmed (if class mode) | List voucher type via masters export; match exact class name in Tally | Class not found — ask, never guess |\r
| 5 | Party ledger exists | Ledger existence check (reference/masters.md) | Missing — create first |\r
| 6 | Purchase/Sales/GST ledgers exist | Same as above | Missing — create first |\r
| 7 | GST header fields available (if class mode) | CMPGSTIN, PARTYGSTIN, GSTREGISTRATIONTYPE, PLACEOFSUPPLY | Any missing — ask user |\r
| 8 | Voucher totals balance | Sum all AMOUNT values = 0 | Mismatch — fix before posting |\r
\r
Step 0: Check TallyPrime server\r
\r
curl -s --max-time 5 "$TALLY_URL"\r
```\r
\r
Expected (example):\r
\r
```xml\r
\x3CRESPONSE>TallyPrime Server is Running\x3C/RESPONSE>\r
```\r
\r
If not running, stop and ask user to open TallyPrime and enable integrations for the port.\r
\r
## Step 1: Company context\r
\r
If the user did not specify company, ask. If they did, use **exact** name in `SVCURRENTCOMPANY`.\r
\r
To list companies, use the template in `reference/reports.md` (“Company list”).\r
\r
## Step 2: Verify/create required ledgers (masters)\r
\r
Ledger existence checks and master creation templates are in `reference/masters.md` (includes ledgers, groups, GST/address fields, and party ledger creation with required field prompts).\r
\r
**New company?** Run the "New Company Setup — Standard GST Ledgers" block in `reference/masters.md` first. It creates the seven minimum ledgers every GST-registered company needs:\r
\r
| # | Ledger | Type |\r
|---|---|---|\r
| 1 | `Input Sgst @ 9 %` | Input GST |\r
| 2 | `Input Cgst @ 9 %` | Input GST |\r
| 3 | `Input IGST @ 18 %` | Input GST |\r
| 4 | `Purchase @ 18 %` | Purchase ledger |\r
| 5 | `Round Off` | Rounding |\r
| 6 | `Output Sgst @ 9 %` | Output GST |\r
| 7 | `Output Cgst @ 9 %` | Output GST |\r
\r
Quick group defaults (common CA mapping):\r
\r
| Ledger type | Parent group |\r
|---|---|\r
| Customer | `Sundry Debtors` |\r
| Vendor | `Sundry Creditors` |\r
| Sales | `Sales Accounts` |\r
| Purchases/Expenses | `Purchase Accounts` / `Direct Expenses` / `Indirect Expenses` |\r
| Bank | `Bank Accounts` |\r
| Cash | `Cash-in-Hand` |\r
| GST | `Duties & Taxes` |\r
\r
## Step 3: Post vouchers (core)\r
\r
Use `REPORTNAME=Vouchers` and always include `GUID`, `DATE`, and `VOUCHERTYPENAME`. Full templates (including bill-wise allocations, returns, contra) are in `reference/vouchers.md`.\r
\r
Supported voucher types in this skill:\r
\r
- Purchase, Sales, Payment, Receipt, Journal\r
- Credit Note, Debit Note\r
- Contra\r
- Voucher Alteration + Cancellation\r
\r
## Read reports (core)\r
\r
Use `TALLYREQUEST=Export` / `REPORTNAME=...` with `SVEXPORTFORMAT=$$SysName:XML`. Full templates are in `reference/reports.md`.\r
\r
Common CA reports:\r
\r
- Day Book (period)\r
- Trial Balance (period)\r
- Balance Sheet\r
- Profit and Loss\r
- Ledger Vouchers (ledger statement)\r
- Bills Receivable / Bills Payable (outstandings)\r
- Ledger Outstandings / Group Outstandings\r
- GST: GSTR-1 and related summaries (plus GSTR-3B where available)\r
- Stock Summary (inventory clients)\r
\r
## Suggested GUID pattern\r
\r
Use a deterministic pattern when invoice number exists:\r
\r
```\r
{companyShort}-{voucherType}-{voucherNumber}-{date}\r
```\r
\r
Examples:\r
\r
- `abc-purchase-ril2026-00123-20260115`\r
- `abc-creditnote-cn09-20260302`\r
\r
## Multi-company CA workflow (recommended)\r
\r
1. Capture company name early (and confirm spelling).\r
2. Validate connectivity.\r
3. Fetch required ledgers/masters or create them.\r
4. Only then post the voucher.\r
5. Reply with: company, voucher type, voucher number, date, amount breakdown, and whether any masters were created.\r
\r
## Advanced reference\r
\r
- Reports and data export: `reference/reports.md`\r
- Voucher templates (including Debit/Credit Note, Contra, bill-wise allocations, alter/cancel): `reference/vouchers.md`\r
- Masters (ledgers/groups + GST/address, alteration): `reference/masters.md`\r
- Inventory (stock groups/items/UOM, item invoices): `reference/inventory.md`\r
- Error handling and troubleshooting: `reference/errors.md`\r
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install ca-skill - After installation, invoke the skill by name or use
/ca-skill - Provide required inputs per the skill's parameter spec and get structured output
What is Ca Skill?
Full-service CA skill for TallyPrime running locally. Read accounting reports (day book, trial balance, P&L, balance sheet, outstandings, GST) and post or up... It is an AI Agent Skill for Claude Code / OpenClaw, with 231 downloads so far.
How do I install Ca Skill?
Run "/install ca-skill" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Ca Skill free?
Yes, Ca Skill is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Ca Skill support?
Ca Skill is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Ca Skill?
It is built and maintained by purvik6062 (@purvik6062); the current version is v1.0.6.