shopify-admin-tax-liability-summary
SkillCommerce & financeRead-only: aggregates tax collected by jurisdiction from order tax lines for filing prep.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the shopify-admin-tax-liability-summary skill
What this skill tells your AI
The instructions your AI receives, as published by 40rty-ai/shopify-admin-skills in skills/finance/shopify-admin-tax-liability-summary/SKILL.md and read by ahel’s review.
Purpose
Aggregates tax amounts collected across all orders in a period, broken down by tax jurisdiction (state/province, country) and tax rate. Produces a summary suitable for periodic tax filing prep. Read-only — no mutations.
Prerequisites
- Authenticated Shopify CLI session:
shopify store auth --store <domain> --scopes read_orders - API scopes:
read_orders
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain (e.g., mystore.myshopify.com) |
| days_back | integer | no | 90 | Lookback window (use 30/90 to match filing periods) |
| group_by | string | no | jurisdiction | Breakdown: jurisdiction or rate |
| exclude_refunded | bool | no | true | Exclude tax from fully refunded orders |
| format | string | no | human | Output format: human or json |
Safety
ℹ️ Read-only skill — no mutations are executed. Safe to run at any time. This report is for internal preparation purposes only — consult a tax professional for actual filing obligations.
Workflow Steps
-
OPERATION:
orders— query Inputs:query: "financial_status:paid created_at:>='<NOW - days_back days>'",first: 250, selecttaxLines { title, rate, priceSet },refunds { refundLineItems }, pagination cursor Expected output: All paid orders with tax lines; paginate untilhasNextPage: false -
If
exclude_refunded: subtract tax amounts from fully refunded orders -
Group by
group_by(jurisdiction title or rate); sumtaxLine.priceSet.shopMoney.amount
GraphQL Operations
# orders:query — validated against api_version 2025-01
query TaxLiabilityOrders($query: String!, $after: String) {
orders(first: 250, after: $after, query: $query) {
edges {
node {
id
name
createdAt
displayFinancialStatus
totalTaxSet {
shopMoney {
amount
currencyCode
}
}
taxLines {
title
rate
priceSet {
shopMoney {
amount
currencyCode
}
}
}
shippingAddress {
countryCode
provinceCode
}
refunds {
totalRefundedSet {
shopMoney {
amount
currencyCode
}
}
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
Session Tracking
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: Tax Liability Summary ║
║ Store: <store domain> ║
║ Started: <YYYY-MM-DD HH:MM UTC> ║
╚══════════════════════════════════════════════╝
After each step, emit:
[N/TOTAL] <QUERY|MUTATION> <OperationName>
→ Params: <brief summary of key inputs>
→ Result: <count or outcome>
On completion, emit:
For format: human (default):
══════════════════════════════════════════════
TAX LIABILITY SUMMARY (<days_back> days)
Orders analyzed: <n>
Total tax collected: $<amount>
By Jurisdiction:
CA - California $<amount> (<n> orders)
NY - New York $<amount> (<n> orders)
Output: tax_liability_<date>.csv
══════════════════════════════════════════════
For format: json, emit:
{
"skill": "tax-liability-summary",
"store": "<domain>",
"period_days": 90,
"orders_analyzed": 0,
"total_tax_collected": 0,
"currency": "USD",
"by_jurisdiction": [],
"output_file": "tax_liability_<date>.csv"
}
Output Format
CSV file tax_liability_<YYYY-MM-DD>.csv with columns:
jurisdiction, country_code, province_code, tax_rate, order_count, total_tax_collected, currency
Error Handling
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | API rate limit exceeded | Wait 2 seconds, retry up to 3 times |
| No tax lines on orders | Tax not configured or tax-exempt orders | Report $0 for those orders |
| Orders with partial refunds | Tax credit complex to calculate | Flag in output; exclude from totals if exclude_refunded: true |
Best Practices
- This report reflects tax collected from customers — it is not a substitute for Shopify Tax or a professional nexus analysis.
- Align
days_backwith your filing period (30 days for monthly filers, 90 for quarterly). - For multi-state US merchants, check that Shopify Tax is configured correctly for each nexus state before relying on this output.
- The
jurisdictionfield intaxLines.titleis set by Shopify Tax and typically includes state/province names — verify the format matches your filing system.
Signals
- GitHub stars
- 187
- Forks
- 18
- Last commit
- Aug 2026
ahel review
S4info
community integration — published by 40rty-ai, not shopify
Automated review, not a security audit. Ruleset v1.
Advanced
- Catalog kind
- skill
- Gateway key
shopify-admin-tax-liability-summary- Source
- github.com/40rty-ai/shopify-admin-skills