agentleFS
HainrixzHainrixz/agente-pagokit/skills/tax-advisor/SKILL.md

tax-advisor

Skill68 starsChanged 6 months agoMITView on GitHub

Explains what a merchant owes the tax authority once a payment succeeds, and whether a merchant of record removes that obligation. Covers the merchant-of-record trade-off, e-invoicing mandates (CFDI, NF-e, DTE, SUNAT, DIAN, SRI, SdI, KSeF, ZATCA), EU VAT OSS, US economic nexus with home-rule jurisdictions, and when a tax engine is genuinely required. Reads the obligation from the catalog rather than recalling it. Never gives legal advice — it names the obligation and points at who can discharge it.

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. 200iqlabs/shared-skills★ 4same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository7 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

9 rules. About 0 are common, 5 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read mor from the provider entry.

    line 29
  2. Very specific:

    Read regions[CODE].tax.einvoice from the catalog.

    line 49
  3. Very specific:

    Read the region's tax block.

    line 83
  4. Distinctive:

    If the checkout must collect a tax identifier, say so explicitly and say which field.

    line 85
  5. Distinctive:

    Do not give legal or tax advice.

    line 91
  6. Very specific:

    Do not say "the provider handles taxes" without checking mor.is_mor.

    line 93
  7. Distinctive:

    Do not conflate collecting tax with issuing an invoice.

    line 94
  8. Distinctive:

    Do not present a state-level US rate table as correct where home-rule jurisdictions apply.

    line 95
  9. Distinctive:

    Do not let a market with an e-invoicing mandate pass without mentioning it.

    line 96

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md
<!-- Copyright (c) 2026 Enrique Rocha (@soyenriquerocha) · tododeia.com · id er-fee52fa9 -->

tax-advisor

A successful payment is not a compliant sale. This skill covers the gap.

The distinction that matters most

Two entirely different questions get conflated:

  1. Who collects and remits the tax? — the merchant-of-record question.
  2. Who issues the fiscal document? — the e-invoicing question.

A provider can solve the first and leave the second entirely with the merchant. In Mexico and Brazil, the second one is a legal obligation attached to the sale, and it is the one that gets forgotten because the payment works fine without it.

Merchant of record: what you actually trade

Read mor from the provider entry. When is_mor is true, that provider sells to your customer. You sell to the provider.

You gainYou give up
Tax registration, collection, remittance and filing in every market it covers4-6% more per transaction than a direct processor
No VAT thresholds to monitor, no OSS filing, no nexus trackingTheir name on the customer's bank statement, not yours
Chargebacks and fraud are their problemCheckout branding, and often the customer relationship
Invoices issued for youPayout on their schedule — often 14-30 days
No entity needed in the markets they coverWhatever mor.disables_capabilities lists

The trade is worth it far more often than developers assume, and it is almost always worth it for a solo developer selling digital goods across borders. Registering for VAT in seven EU countries is not a thing one person does alongside building a product.

It is usually not worth it for a domestic business selling in its own market, where it already has an accountant and pays domestic interchange.

E-invoicing: the obligation nobody generates code for

Read regions[CODE].tax.einvoice from the catalog. Where a mandate exists, the merchant must issue a specific fiscal document for each sale, in a specific format, within a specific window.

The part that bites: the data must be collected at checkout. You cannot retro-fit an RFC, a CNPJ or a tax ID after the sale — the customer has gone. If the market mandates e-invoicing and the checkout does not collect the identifier, every sale is already non-compliant.

So the recommendation is always the same shape: either use a merchant of record and the obligation is theirs, or collect the identifier at checkout and integrate an invoicing provider. There is no third option where it works itself out later.

PagoKit does not issue fiscal documents. It emits PAGOKIT_TAX_TODO.md naming the mandate, the deadline and the fields the checkout must collect.

US sales tax

Two things that are commonly got wrong:

  • Economic nexus is per state, triggered by revenue or transaction thresholds that differ by state and change. It is not "do I have an office there".
  • Home-rule jurisdictions — Colorado, Louisiana, Alaska and others — let localities set and administer their own rates. A state-level rate table is therefore wrong, not approximate. Where regions.US.tax.home_rule_jurisdictions is set, call an engine rather than computing a rate. That is what engine_required means in the data.

EU VAT

Digital services to EU consumers are taxed where the customer is, not where you are. OSS lets you file one return instead of twenty-seven, but you still have to determine the customer's location with two pieces of non-contradictory evidence and keep them for ten years. A merchant of record absorbs all of it.

How to answer

  1. Read the region's tax block. Say what the obligation is by name.
  2. Say who can discharge it: the merchant of record, an invoicing provider, or the user.
  3. If the checkout must collect a tax identifier, say so explicitly and say which field.
  4. Give the cost comparison in real money on their actual transaction size — the MoR premium is a concrete number, not a vibe.

Anti-patterns

  • Do not give legal or tax advice. Name the obligation, name who can discharge it, and say the user should confirm with an accountant. That is the honest boundary.
  • Do not say "the provider handles taxes" without checking mor.is_mor. Most do not.
  • Do not conflate collecting tax with issuing an invoice.
  • Do not present a state-level US rate table as correct where home-rule jurisdictions apply.
  • Do not let a market with an e-invoicing mandate pass without mentioning it. A payment that works and cannot be invoiced is not a shippable integration.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.