Home Pricing How It Works About Blog API Docs Login Get Started Free
Built for the Agentic Economy

Ledgersys is the
tax layer for
AI agents.

AI agents trade Bitcoin. Ledgersys handles the taxes. Automatically. Every transaction tracked, every obligation calculated, every report generated — programmatically.

Sandbox: Free & Unlimited
API Response < 500ms
Idempotency Keys Included
Pay with Bitcoin or Lightning
agent.py
# Your AI agent records a trade via API
tx = ledgersys.record({
"type": "buy",
"amount_btc": 0.01,
"value_usd": 850.00
})
# Get real-time tax liability via API
tax = ledgersys.get_tax()
print(f"Tax owed: ${tax['obligation']}")
> Tax owed: $127.50

AI Agents Can Trade.
They Can't File Taxes.

AI agents are executing Bitcoin transactions at scale via API. Every transaction has a tax implication. Every implication needs a jurisdiction-specific calculation. Every calculation needs to be audit-ready for a human owner.

What Agents Can't Do

  • Apply jurisdiction-specific tax rules (SARS, HMRC, IRS)
  • Track cost basis across thousands of transactions
  • Generate audit-ready reports for human owners
  • Reconcile transfers across multiple wallets
  • Produce legally defensible tax calculations

What Ledgersys Provides

  • SARS, HMRC, IRS, ATO rules — updated automatically
  • FIFO, LIFO, HIFO cost basis — calculated in milliseconds
  • Audit-ready PDF reports on demand via API
  • Multi-source reconciliation across all wallets
  • Legally defensible calculations, jurisdiction-specific

How Agents Use Ledgersys

Four API calls. Full Bitcoin tax compliance. Automatically.

01

Generate API Key

Agent generates an API key from the Ledgersys Agent dashboard. Sandbox key for testing. Production key when ready.

X-API-Key: sandbox_sk_...
02

Record Transactions

After every trade, agent calls POST /v1/transactions. Idempotency key prevents duplicates on retry.

POST /v1/transactions
03

Get Tax Liability

Agent calls GET /v1/tax to get real-time tax obligation. Jurisdiction-specific. Updated with every transaction.

GET /v1/tax
04

Generate Report

At year end or on demand, agent generates a tax report for the human owner. Audit-ready PDF in seconds.

GET /v1/reports/tax

Built for Programmatic Access

Every feature designed with agents in mind — reliability, speed, and idempotency at every layer.

Idempotency Keys

Include Idempotency-Key in every request. Retried requests return the original response — no duplicate transactions, no phantom tax events.

Learn more

Bulk Endpoints

Upload up to 10,000 transactions in a single API request. Async processing with webhook notification on completion. Built for high-volume agents.

Learn more

Real-Time Webhooks

Subscribe to transaction.imported, tax.calculated, and report.generated events. HMAC-SHA256 signed payloads. 3-retry policy.

Learn more

Free Sandbox

Test your agent integration with no API costs, no time limits, and no rate limit charges. Generate fake data. Reset with one API call.

Learn more

API Status Endpoint

Call GET /api/status before high-volume operations. Returns current health, rate limits, and any active incidents — in milliseconds.

Learn more

Stable Versioned API

All endpoints versioned at /v1/. Minimum 12-month deprecation notice. AI agents can rely on endpoint stability indefinitely.

Learn more

Test for Free.
No Time Limit.

The Ledgersys sandbox is a fully functional copy of the production API — with fake data, no real charges, and a rate limit of 10,000 calls per hour. There is no time limit. Stay as long as your integration needs.

Same endpoints as production
Generate realistic fake transaction data
Reset your account with one API call
No API costs. No charges. Ever.
Data resets daily at 00:00 UTC automatically
Get Your Sandbox Key
Sandbox Quick Start Python
import requests

# Use your sandbox key — free, no charges
API_KEY = "sandbox_sk_your_key_here"
BASE = "https://api.ledgersys.live/v1"
headers = {"X-API-Key": API_KEY}

# Generate sample transaction data
requests.get(
    "https://api.ledgersys.live/sandbox/generate_sample_transactions",
    headers=headers
)

# Get tax calculation on fake data
tax = requests.get(f"{BASE}/tax", headers=headers).json()
print(f"Test tax obligation: ${tax['tax_obligation']}")

# Reset when done testing
requests.post(
    "https://api.ledgersys.live/sandbox/reset",
    headers=headers
)

Agent Integration in Minutes

A complete working example. Copy, paste, run.

Complete Agent Integration Python
import requests
import uuid

API_KEY = "sandbox_sk_your_key_here"
BASE_URL = "https://api.ledgersys.live/v1"

class LedgersysAgent:
    def __init__(self, api_key: str):
        self.headers = {
            "X-API-Key": api_key,
            "Content-Type": "application/json"
        }

    def record_trade(self, trade_type: str, amount_btc: float, value_usd: float, date: str):
        """Record a Bitcoin transaction via API with idempotency key."""
        response = requests.post(
            f"{BASE_URL}/transactions",
            json={
                "date": date,
                "type": trade_type,
                "amount_btc": amount_btc,
                "value_usd": value_usd
            },
            headers={
                **self.headers,
                "Idempotency-Key": str(uuid.uuid4())
            }
        )
        return response.json()

    def get_tax_liability(self, jurisdiction: str = "ZA"):
        """Get current tax obligation in real time via API."""
        response = requests.get(
            f"{BASE_URL}/tax",
            params={"jurisdiction": jurisdiction, "method": "FIFO"},
            headers=self.headers
        )
        return response.json()

    def generate_report(self, tax_year: int):
        """Generate audit-ready tax report for human owner via API."""
        response = requests.get(
            f"{BASE_URL}/reports/tax",
            params={"tax_year": tax_year, "format": "pdf"},
            headers=self.headers
        )
        return response.content


# Usage
agent = LedgersysAgent(API_KEY)

# After your agent makes a Bitcoin trade:
agent.record_trade("buy", amount_btc=0.01, value_usd=850, date="2026-04-25")

# Check tax exposure:
tax = agent.get_tax_liability(jurisdiction="ZA")
print(f"Current tax obligation: ${tax['tax_obligation']}")

# End of tax year — generate report for human:
pdf = agent.generate_report(tax_year=2026)
with open("tax_report_2026.pdf", "wb") as f:
    f.write(pdf)

Framework Integrations

Ledgersys works with every major AI agent framework. Examples are being added as the agentic ecosystem evolves.

LangChain

Use Ledgersys as a LangChain tool — agents can record transactions, check tax liability, and generate reports as part of any chain.

Example coming soon

AutoGPT

Plug Ledgersys into AutoGPT as a custom plugin for autonomous Bitcoin tax management.

Example coming soon

n8n

Build no-code workflows with Ledgersys nodes. Trigger tax calculations on trade events, generate reports on schedule.

Example coming soon

Zapier

Connect Ledgersys to 5,000+ apps via Zapier. Record transactions from any exchange notification, trigger reports automatically.

Example coming soon

Pay Only for What You Use

No monthly subscription for basic usage. Pay per API call. Scale up as your agent grows. All payments in Bitcoin or Lightning — no banks, no cards.

Micro

$ 10 /month
  • 1,000 API calls / month
  • 5,000 transactions via API
  • Sandbox included
  • Webhook support
  • Idempotency keys
Get Started

Business

$ 200 /month
  • 50,000 API calls / month
  • 250,000 transactions via API
  • Sandbox included
  • All bulk endpoints
  • Dedicated support
Get Started

Enterprise

Custom
  • Unlimited API calls
  • Unlimited transactions via API
  • Custom SLAs
  • Dedicated infrastructure
  • Account manager
Contact Us
All payments in Bitcoin or Lightning via BTCPay Server. No banks. No cards. No intermediaries. Sandbox is always free — no time limit, no API costs, no credit card required.

Common Questions from Developers

No. The 30-day free trial is for human users. Agents and developers use the sandbox environment instead — completely free, no time limit, resets daily. Use the sandbox until your integration is production-ready, then subscribe to an Agent plan.

All API requests require an API key passed in the X-API-Key header. Generate your key from the Agent dashboard after registering. Sandbox keys are prefixed with sandbox_ and connect to the sandbox environment automatically.

Yes. Call GET /v1/reports/tax to generate a PDF tax report via API. Register a webhook for the report.generated event to get notified when the report is ready. The PDF is audit-ready and formatted for the jurisdiction specified in the API call.

Always include an Idempotency-Key header with a unique string per request. If your agent retries a failed request with the same key, Ledgersys returns the original response — no duplicate transactions, no phantom tax events. Keys expire after 30 days.

Yes. Available at sandbox.ledgersys.live/v1/ or by setting the X-Environment: sandbox header. No API costs, no rate limit charges, rate limit of 10,000 calls/hour. Data resets daily at 00:00 UTC. No time limit.

The Ledgersys API is versioned at /v1/. We maintain a minimum 12-month support window after any deprecation announcement. Breaking changes are never introduced within a version. AI agents can rely on endpoint stability indefinitely within v1.

All Ledgersys payments are in Bitcoin or Lightning via BTCPay Server. No banks. No cards. No intermediaries. From your Agent dashboard, select your plan and you will receive a BTCPay invoice. Pay with any Bitcoin or Lightning wallet.

Micro: 5,000 calls/hour. Starter: 20,000 calls/hour. Business: 100,000 calls/hour. Enterprise: unlimited. Sandbox always allows 10,000 calls/hour regardless of plan. Rate limit headers are returned on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Start building your agent
integration today.

Sandbox is free. No time limit. No credit card. No banks. Same API endpoints as production.