SKALE INTEGRATION
Tax compliance for gasless x402 on SKALE
SKALE is gasless. Sub-cent x402 payments are finally profitable — which means a merchant can do 100K+ transactions a day for real money. At that volume, per-state sales tax isn't optional, and no existing tax API can afford to serve it. AgentTax is the one that can.
Drops in alongside @x402/hono with a post-settlement recording call. 51 US state-level jurisdictions plus 100+ zip-level local rates, with statute citations and confidence scores on every record.
Why this matters on SKALE specifically
Micropayments become economically viable
Base settlement: ~$0.01–$0.05 in gas per x402 transaction. SKALE: $0. A merchant selling $0.0001 API calls can't operate on Base. On SKALE they can — and at 10K transactions/day, tax compliance becomes a real obligation, not a rounding error.
Avalara and Stripe Tax don't work at this scale
Per-transaction APIs priced at $0.50+/call kill the unit economics. AgentTax's free tier handles 100/mo; paid tiers scale to 1M/mo at $0.0002/call. Built for sub-cent commerce.
Per-jurisdiction records, no reconstruction from chain data
Every settled transaction logs with buyer state, classification (digital_service, compute, etc.), confidence score, and source citations. At filing time, you export — no spreadsheet archaeology on a million on-chain txs.
3-step integration
01
Get your API key
Sign up at agenttax.io — free tier, no credit card. 100 calls/month, API key in under 60 seconds.
02
Record every settled SKALE transaction
In your @x402/hono route handler (runs after SKALE settlement succeeds), POST to AgentTax with the amount and buyer state. Returns a transaction_id and tax breakdown by jurisdiction — instant 1099-DA-ready record.
03
Remit tax from gross at filing
You collected full payment — gasless. AgentTax has the obligation logged per state and zip-level local. At filing time, the data is structured for your accountant or the state DOR.
The handler
SKALE's x402 cookbook uses @x402/hono with the DirtRoad facilitator. Add the AgentTax fetch inside your route handler — that's it.
// SKALE x402 merchant — record each gasless settlement to AgentTax.
// SKALE is gasless: $0.0001 transactions are profitable, which means
// compliance becomes necessary at transaction counts Avalara can't handle.
import { Hono } from "hono";
import { paymentMiddleware, x402ResourceServer } from "@x402/hono";
import { ExactEvmScheme } from "@x402/evm/exact/server";
import { HTTPFacilitatorClient } from "@x402/core/server";
const app = new Hono();
const facilitator = { url: "https://facilitator.dirtroad.dev" };
const facilitatorClient = new HTTPFacilitatorClient(facilitator);
// Flip SKALE_CHAIN_ID between 324705682 (Sepolia testnet)
// and 1187947933 (SKALE Base Mainnet) without code changes.
const NETWORK = `eip155:${process.env.SKALE_CHAIN_ID || "324705682"}`;
app.use("*", paymentMiddleware(
{
"GET /paid": {
accepts: [{
scheme: "exact",
network: NETWORK,
payTo: process.env.RECEIVING_ADDRESS,
price: {
amount: "10000", // 0.01 USDC, atomic units (6 decimals)
asset: process.env.PAYMENT_TOKEN_ADDRESS,
},
}],
},
},
new x402ResourceServer(facilitatorClient).register(NETWORK, new ExactEvmScheme()),
));
async function recordTax({ amount, buyerState, counterpartyId }) {
const res = await fetch("https://agenttax.io/api/v1/calculate", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${process.env.AGENTTAX_API_KEY}`,
},
body: JSON.stringify({
role: "seller",
amount,
buyer_state: buyerState,
transaction_type: "compute",
counterparty_id: counterpartyId,
}),
});
if (!res.ok) throw new Error(`AgentTax ${res.status}`);
return res.json();
}
app.get("/paid", async (c) => {
const buyerState = c.req.query("buyer_state") || process.env.AGENTTAX_DEFAULT_STATE;
try {
const tax = await recordTax({
amount: 0.01,
buyerState,
counterpartyId: c.req.header("x-payer-address") || "anonymous",
});
return c.json({
data: "your paid resource",
agenttax: {
transaction_id: tax.transaction_id,
tax_amount: tax.sales_tax?.amount,
tax_rate: tax.sales_tax?.combined_rate,
jurisdiction: tax.sales_tax?.buyer_state,
},
});
} catch {
return c.json({ data: "your paid resource", agenttax: { error: "record_failed" } });
}
});Response shape
{
"success": true,
"sales_tax": {
"taxable": true,
"amount": 0.00063,
"state_tax": 0.00063,
"local_tax": 0,
"combined_rate": 0.0625,
"buyer_state": "TX",
"classification_basis": "digital_service",
"advisories": [
"TX §151.351: 80% of digital services taxable (20% statutory exemption)"
]
},
"confidence": { "score": 95, "level": "high" },
"transaction_id": "txn_skale_abc123"
}SKALE Base chains
SKALE Base Sepolia Testnet
eip155:324705682
Default — safe for dev and demos
SKALE Base Mainnet
eip155:1187947933
Production target — flip via SKALE_CHAIN_ID env
Facilitator:
https://facilitator.dirtroad.dev (run by DirtRoad). Sepolia bridged USDC: 0x2e08028E…030bD. Mainnet token addresses are not yet in SKALE's public docs — ask in the SKALE Builders Chat for the current list.New to x402 in general? See the generic x402 integration guide.
Ship tax-compliant SKALE merchants today
Clone the starter, drop in your AgentTax key, run it. 100 calls/mo free, no credit card.