AgentTax for Sellers: Collecting Sales Tax on AI Services
If your AI agent sells services — compute, API access, SaaS, data, or agent labor — you're a seller for sales tax purposes. This guide walks you through the complete seller workflow: determining where you owe, registering, integrating tax calculation, and routing payments correctly.
Step 1: Determine Your Nexus
Before you can collect sales tax, you need to know where you're required to collect. You have a collection obligation in any state where you have "nexus" — either physical presence or economic nexus.
Physical nexus: You have an office, employee, or significant physical presence in the state.
Economic nexus: Your sales into the state exceed the state's threshold — typically $100,000 in annual revenue (TaxCloud, 2026). A few states set higher thresholds; some formerly used transaction counts, but the trend in 2025-2026 has been toward revenue-only thresholds.
Check your exposure:
import requests
# Get your sales breakdown by state
# (you'll need to pull this from your own transaction records)
sales_by_state = {
"TX": 185000,
"CA": 420000,
"NY": 95000,
"WA": 112000,
# ... other states
}
# States where you likely have nexus (over $100K)
nexus_states = {state: amount for state, amount in sales_by_state.items()
if amount >= 100000}
print(f"Probable nexus in: {list(nexus_states.keys())}")
Step 2: Register With the States
Once you've identified your nexus states, you must register for a sales tax permit in each one before you start collecting. Collecting sales tax without a permit is illegal in most states.
How to register:
- Most states offer online registration through their Department of Revenue website
- The Streamlined Sales Tax (SST) program lets you register in 24 member states through a single application at sstregister.org
- Registration typically takes 1-3 business days
After registering, tell AgentTax:
# Register your nexus states with AgentTax
requests.post(
"https://agenttax.io/api/v1/nexus",
json={
"nexus_states": {
"TX": {"hasNexus": True, "reason": "Economic nexus - $185K"},
"CA": {"hasNexus": True, "reason": "Physical presence + economic"},
"WA": {"hasNexus": True, "reason": "Economic nexus - $112K"}
}
},
headers={"X-API-Key": "atx_live_your_key"}
)
This tells the AgentTax engine which states you're registered in. When a transaction comes from a state where you have nexus, the engine calculates and returns the tax. When it comes from a state where you don't, it returns "No Collection Obligation."
Step 3: Classify Your Services
What you sell determines whether it's taxable in each state. AgentTax uses six transaction types that map to tax categories:
| What You Sell | Transaction Type | Tax Category |
|---|---|---|
| GPU time, processing | compute | Digital Service |
| ML inference, API endpoints | api_access | Digital Service |
| Datasets, embeddings | data_purchase | Digital Good |
| Cloud tools, subscriptions | saas | Digital Service |
| Agent performs work | ai_labor | Service |
| Data/model hosting | storage | Digital Service |
The tax category determines which states tax it. Digital services are taxable in roughly 25 states. Digital goods are taxable in more. General services have their own rules (TaxCloud, January 2026; TaxJar, December 2025).
You don't need to memorize this. Just pass the correct transaction_type and AgentTax applies the right state rules.
Step 4: Integrate Tax Calculation
Add the tax check to your agent's sale flow. Here's the pattern:
def sell_service(buyer_id, buyer_state, service_type, amount):
"""Sell a service with proper tax handling."""
# Calculate tax
tax = requests.post(
"https://agenttax.io/api/v1/calculate",
json={
"role": "seller",
"amount": amount,
"buyer_state": buyer_state,
"transaction_type": service_type,
"counterparty_id": buyer_id
},
headers={"X-API-Key": "atx_live_your_key"}
).json()
# Determine total charge
tax_amount = tax.get("total_tax", 0)
total = amount + tax_amount
# The response tells you exactly how to route
routing = tax.get("routing", [])
return {
"base_price": amount,
"tax": tax_amount,
"total_charge": total,
"routing": routing,
"transaction_id": tax.get("transaction_id")
}
Step 5: Route Payments Correctly
When tax is owed, you need to split the payment: operating revenue goes to your operating account, and tax collected goes to a tax reserve.
With Stripe:
import stripe
def process_sale_with_tax(amount, tax_amount, buyer_payment_method):
total_cents = int((amount + tax_amount) * 100)
intent = stripe.PaymentIntent.create(
amount=total_cents,
currency="usd",
payment_method=buyer_payment_method,
metadata={
"base_amount": str(amount),
"tax_amount": str(tax_amount),
"tax_destination": "tax_reserve"
}
)
# After settlement, transfer tax portion to reserve
if tax_amount > 0:
stripe.Transfer.create(
amount=int(tax_amount * 100),
currency="usd",
destination="acct_tax_reserve", # your reserve account
metadata={"type": "sales_tax_reserve"}
)
return intent
The key principle: charge the buyer the total (price + tax), then route the tax portion to a separate reserve account. When it's time to remit to the state, the money is already set aside.
Step 6: Handle Exemptions Gracefully
Not every sale results in tax. Your agent should handle three exemption scenarios:
No nexus: You're not registered in the buyer's state. No collection required.
Digital exempt: The buyer's state doesn't tax your type of service. California, for example, doesn't tax SaaS (Ordway Labs, 2026).
Buyer exemption: The buyer has a valid exemption certificate (resale, nonprofit, government).
AgentTax returns an exemption object when any of these apply:
{
"exemption": {
"type": "digital_exempt",
"state": "CA",
"reason": "California does not tax SaaS/digital services"
},
"total_tax": 0
}
When exemption applies, charge only the base price. No tax to collect, no tax to route.
Step 7: File and Remit
Your AgentTax dashboard accumulates all transaction data automatically. At filing time:
- Export by state — CSV or JSON with all transactions for a filing period
- Match to your filing schedule — monthly, quarterly, or annually per state
- Remit from your tax reserve — the money is already set aside
- File the return — most states offer online filing; SST states offer free filing through certified service providers
The dashboard shows exactly how much you owe to each state for each period. No reconciliation needed — the data has been building since your first API call.
Seller Checklist
- [ ] Identified nexus states (sales > $100K)
- [ ] Registered for permits in nexus states
- [ ] Configured nexus in AgentTax
- [ ] Added tax calculation to agent sale flow
- [ ] Payment routing splits tax to reserve
- [ ] Exemptions handled (no-nexus, digital-exempt, buyer-cert)
- [ ] Dashboard reviewed monthly
- [ ] Filing calendar set per state
Start collecting correctly today. Get your free API key →
Sources:
- TaxCloud, "Sales Tax Nexus by State Chart 2026," February 2026
- TaxCloud, "SaaS Sales Tax by State," January 2026
- TaxJar, "Software as a Service Sales Tax by State," December 2025
- Ordway Labs, "The Complete Guide to SaaS Sales Tax 2026," February 2026
- Tax Foundation, "State and Local Sales Tax Rates, 2026"