Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.taxmaxi.com/llms.txt

Use this file to discover all available pages before exploring further.

This guide walks you through the full TaxMaxi workflow from a fresh account to a tax summary. You will register, log in, create a source for a wallet address, start a sync, wait for it to complete, and then calculate tax. All examples use curl against the production API at https://api.taxmaxi.com. If you prefer to connect Coinbase instead of a wallet address, skip to step 3 for the CLI alternative.
1

Register an account

Send your email, password (minimum 8 characters), and an optional display name to POST /auth/register. TaxMaxi will send a verification code to your email address.
curl -X POST https://api.taxmaxi.com/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "password": "your-password",
    "displayName": "Your Name"
  }'
The response confirms the verification flow has started:
{
  "email": "[email protected]",
  "redirectTo": "/verify-email"
}
2

Verify your email

Check your inbox for the verification code, then submit it to POST /auth/verify-email:
curl -X POST https://api.taxmaxi.com/auth/verify-email \
  -H "Content-Type: application/json" \
  -d '{
    "code": "123456"
  }'
A successful response returns a redirect path indicating your account is now active:
{
  "redirectTo": "/home"
}
3

Log in and get a session token

Authenticate with your email and password using the local provider. The response includes a token you will use for all subsequent requests.
curl -X POST https://api.taxmaxi.com/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "local",
    "credentials": {
      "email": "[email protected]",
      "password": "your-password"
    }
  }'
{
  "token": "sess_abc123...",
  "user": {
    "id": "usr_...",
    "email": "[email protected]",
    "displayName": "Your Name"
  },
  "provider": "local",
  "expiresAt": "2026-06-14T00:00:00.000Z"
}
Save the token value — you will pass it as Authorization: Bearer <token> on every authenticated request.
If you prefer to connect Coinbase, use the CLI instead of steps 4–5: run tax coinbase after logging in. The CLI handles the OAuth flow, sync, and source creation automatically.
4

Create a source

A source represents a wallet or exchange account. Create an onchain source by providing a wallet address:
curl -X POST https://api.taxmaxi.com/v1/sources \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sess_abc123..." \
  -d '{
    "type": "onchain",
    "walletAddress": "your-wallet-address"
  }'
{
  "source": {
    "id": "src_...",
    "walletAddress": "your-wallet-address",
    "type": "onchain"
  },
  "created": true,
  "syncJob": null,
  "claim": null
}
Note the source.id — you will need it for the remaining steps.
5

Start a sync

Kick off transaction ingestion for your source. TaxMaxi fetches and normalizes your onchain activity in the background.
curl -X POST https://api.taxmaxi.com/v1/sources/src_.../sync \
  -H "Authorization: Bearer sess_abc123..."
{
  "sourceId": "src_...",
  "jobId": "job_...",
  "status": "queued",
  "message": null
}
Note the jobId to poll for completion.
6

Poll for completion

Check the job status until status is "completed" or "failed":
curl https://api.taxmaxi.com/v1/sources/src_.../jobs/job_... \
  -H "Authorization: Bearer sess_abc123..."
{
  "sourceId": "src_...",
  "jobId": "job_...",
  "status": "completed",
  "importedRecords": 142,
  "normalizedRecords": 138,
  "failedRecords": 0,
  "message": null
}
Poll every few seconds. Large wallets with many transactions can take longer to sync. A "failed" status with a non-null message explains what went wrong.
7

Calculate tax

Once the sync is complete, request a German tax summary for the year you want:
curl -X POST https://api.taxmaxi.com/v1/sources/src_.../tax \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sess_abc123..." \
  -d '{
    "year": 2024,
    "jurisdiction": "germany"
  }'
TaxMaxi returns a breakdown of your taxable activity for that year:
{
  "year": 2024,
  "currency": "EUR",
  "taxableGains": 3200.00,
  "taxableLosses": 450.00,
  "taxFreeGains": 800.00,
  "incomeTotal": 120.00
}
The calculation applies FIFO capital gains rules and income classification under German tax law. taxableGains and taxableLosses reflect disposals within the taxable holding period. taxFreeGains covers disposals held longer than one year. incomeTotal covers staking and similar income events.

Next steps

Authentication

Learn about session tokens, email verification, OAuth, and token refresh.

API reference

Browse all available endpoints in the OpenAPI specification.