Wallet records for accounting

Planned

Stablecoin
Statements

A bank-style statement for your USDC and USDT wallets — every payment with its evidence, reconciled against the chain.

Für Treuhänder und KMU: auf Deutsch lesen

January 2026 / Ethereum / USDC

A period.
A balance.
A trail to inspect.

Opening
1,000.00 USDC
In − out
+5,400.00 USDC
Closing
6,400.00 USDC
Sample – synthetic data

01 / The problem

A wallet shows activity.
Your books need context.

No monthly statement

An explorer timeline is not a period-based record. Start with dates, an opening balance and a clearly bounded set of movements.

Real name. Different token.

Anyone can reuse a token symbol. Keep the contract identity and explain which same-name assets were excluded.

Gas is another asset

Paying USDC can cost ETH or BNB. Keep that network fee in its own asset ledger, with its own valuation.

02 / What is in a statement

Nine parts.
One reviewable record.

  1. 01

    Statement header

    Wallet, network, exact token contract, period and timezone.

  2. 02

    Opening balance

    The asset quantity at the block immediately before the period starts.

  3. 03

    Movements

    Incoming and outgoing amounts, counterparties and source references.

  4. 04

    Native gas

    Wallet-paid network fees in ETH or BNB, separate from the stablecoin.

  5. 05

    Closing balance

    Calculated quantity alongside a separately observed state balance.

  6. 06

    Reconciliation

    An explicit result, residual and explanation; never a hidden balancing entry.

  7. 07

    Coverage

    Checked blocks, missing intervals and the limits of the supported record set.

  8. 08

    Not included

    Unverified or excluded same-name tokens with a visible reason.

  9. 09

    Content fingerprint

    A statement ID and reproducible hash to identify the reviewed content.

Interactive sample · Sample – synthetic data

One month. Every movement in context.

Entirely invented example. No wallet was queried. Amounts, evidence, prices and block numbers are synthetic.

Without JavaScript, all three views are available below.

Indexbase / Statement

Ethereum · USDC

0x1111…1111 · synthetic identifier

Sample – synthetic data
Period
January 2026 · Europe/Zurich
Statement ID
SAMPLE-ETH-USDC-2026-01-reconciled
UTC
2025-12-31 23:00 ≤ t < 2026-01-31 23:00
Asset contract
0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 {{TODO: verify}}
Opening balance1,000.000000USDC
Incoming7,700.000000USDC
Outgoing2,300.000000USDC
Calculated closing6,400.000000USDC
10 sample movements; exact amounts with 6 decimals
Timestamp UTCEvidenceDirectionAmount USDCBalance USDCValue CHF
2026-01-0212:00 UTCSYNTHETIC-TX-01in+2400.0000003400.0000002160.00
2026-01-0512:00 UTCSYNTHETIC-TX-02out−350.0000003050.000000318.50
2026-01-0812:00 UTCSYNTHETIC-TX-03in+1250.0000004300.0000001150.00
2026-01-1112:00 UTCSYNTHETIC-TX-04out−800.0000003500.000000720.00
2026-01-1412:00 UTCSYNTHETIC-TX-05in+600.0000004100.000000546.00
2026-01-1712:00 UTCSYNTHETIC-TX-06out−120.0000003980.000000110.40
2026-01-2012:00 UTCSYNTHETIC-TX-07in+3000.0000006980.000000null · unknown
2026-01-2312:00 UTCSYNTHETIC-TX-08out−950.0000006030.000000864.50
2026-01-2612:00 UTCSYNTHETIC-TX-09in+450.0000006480.000000414.00
2026-01-2912:00 UTCSYNTHETIC-TX-10out−80.0000006400.00000072.00

CHF prices are invented (SYNTHETIC-FX-01), timestamped at each movement. One price is missing; no complete CHF total.

Reconciled

Observed closing
6400.000000 USDC
Difference (observed − calculated)
0.000000 USDC

Calculated and observed balances agree within this sample scope.

Gas fee, separately

0.001050000000000000 ETH · CHF 2.63

SYNTHETIC-TX-02 · invented price CHF 2,500/ETH · 2026-01-05T12:00:00Z.

One sample wallet-initiated transaction; other outflows initiated by third parties. ETH gas does not reduce USDC.

Not included

999,000 “USDC” · 0x9999…9999

Synthetic counterfeit token, different contract. Excluded from balances. Real unverified tokens require review; they are not automatically counterfeit.

Coverage

24000001–24000099 · opening block 24000000

Complete in sample scope; no missing intervals.

Invented block numbers; selected USDC interval only, not lifetime wallet history. Freeze status not checked.

How can the evidence be inspected?

SYNTHETIC-TX identifiers are invented evidence references, not explorer links. JSON retains counterparties, block numbers, log indices, time boundaries and price metadata.

Content hash · SHA-256dff36902419c1b2ba9b5a48b5f8b41ad34ba7814cd2b04c0bbdbcd0d935b4ddb

Fingerprint of canonical sample content without its hash field. Not a signature, audit opinion or guarantee of data accuracy.

CSV

"Timestamp UTC","Reference","Direction","Amount USDC","Running USDC","Value CHF","Price CHF","Price source","Price timestamp","Gas ETH","Gas CHF","Statement ID","Calculated closing","Observed closing","Difference USDC","Reconciliation","Coverage complete","Content hash"
"2026-01-02T12:00:00Z","SYNTHETIC-TX-01","in","2400.000000","3400.000000","2160.00","0.90","SYNTHETIC-FX-01","2026-01-02T12:00:00Z","","","SAMPLE-ETH-USDC-2026-01-reconciled","6400.000000","6400.000000","0.000000","Reconciled","true","dff36902419c1b2ba9b5a48b5f8b41ad34ba7814cd2b04c0bbdbcd0d935b4ddb"
"2026-01-05T12:00:00Z","SYNTHETIC-TX-02","out","350.000000","3050.000000","318.50","0.91","SYNTHETIC-FX-01","2026-01-05T12:00:00Z","0.001050000000000000","2.63","SAMPLE-ETH-USDC-2026-01-reconciled","6400.000000","6400.000000","0.000000","Reconciled","true","dff36902419c1b2ba9b5a48b5f8b41ad34ba7814cd2b04c0bbdbcd0d935b4ddb"
"2026-01-08T12:00:00Z","SYNTHETIC-TX-03","in","1250.000000","4300.000000","1150.00","0.92","SYNTHETIC-FX-01","2026-01-08T12:00:00Z","","","SAMPLE-ETH-USDC-2026-01-reconciled","6400.000000","6400.000000","0.000000","Reconciled","true","dff36902419c1b2ba9b5a48b5f8b41ad34ba7814cd2b04c0bbdbcd0d935b4ddb"
"2026-01-11T12:00:00Z","SYNTHETIC-TX-04","out","800.000000","3500.000000","720.00","0.90","SYNTHETIC-FX-01","2026-01-11T12:00:00Z","","","SAMPLE-ETH-USDC-2026-01-reconciled","6400.000000","6400.000000","0.000000","Reconciled","true","dff36902419c1b2ba9b5a48b5f8b41ad34ba7814cd2b04c0bbdbcd0d935b4ddb"
"2026-01-14T12:00:00Z","SYNTHETIC-TX-05","in","600.000000","4100.000000","546.00","0.91","SYNTHETIC-FX-01","2026-01-14T12:00:00Z","","","SAMPLE-ETH-USDC-2026-01-reconciled","6400.000000","6400.000000","0.000000","Reconciled","true","dff36902419c1b2ba9b5a48b5f8b41ad34ba7814cd2b04c0bbdbcd0d935b4ddb"
"2026-01-17T12:00:00Z","SYNTHETIC-TX-06","out","120.000000","3980.000000","110.40","0.92","SYNTHETIC-FX-01","2026-01-17T12:00:00Z","","","SAMPLE-ETH-USDC-2026-01-reconciled","6400.000000","6400.000000","0.000000","Reconciled","true","dff36902419c1b2ba9b5a48b5f8b41ad34ba7814cd2b04c0bbdbcd0d935b4ddb"
"2026-01-20T12:00:00Z","SYNTHETIC-TX-07","in","3000.000000","6980.000000","","","","","","","SAMPLE-ETH-USDC-2026-01-reconciled","6400.000000","6400.000000","0.000000","Reconciled","true","dff36902419c1b2ba9b5a48b5f8b41ad34ba7814cd2b04c0bbdbcd0d935b4ddb"
"2026-01-23T12:00:00Z","SYNTHETIC-TX-08","out","950.000000","6030.000000","864.50","0.91","SYNTHETIC-FX-01","2026-01-23T12:00:00Z","","","SAMPLE-ETH-USDC-2026-01-reconciled","6400.000000","6400.000000","0.000000","Reconciled","true","dff36902419c1b2ba9b5a48b5f8b41ad34ba7814cd2b04c0bbdbcd0d935b4ddb"
"2026-01-26T12:00:00Z","SYNTHETIC-TX-09","in","450.000000","6480.000000","414.00","0.92","SYNTHETIC-FX-01","2026-01-26T12:00:00Z","","","SAMPLE-ETH-USDC-2026-01-reconciled","6400.000000","6400.000000","0.000000","Reconciled","true","dff36902419c1b2ba9b5a48b5f8b41ad34ba7814cd2b04c0bbdbcd0d935b4ddb"
"2026-01-29T12:00:00Z","SYNTHETIC-TX-10","out","80.000000","6400.000000","72.00","0.90","SYNTHETIC-FX-01","2026-01-29T12:00:00Z","","","SAMPLE-ETH-USDC-2026-01-reconciled","6400.000000","6400.000000","0.000000","Reconciled","true","dff36902419c1b2ba9b5a48b5f8b41ad34ba7814cd2b04c0bbdbcd0d935b4ddb"

JSON

{
  "schema": "indexbase.website-sample/1",
  "synthetic": true,
  "statementId": "SAMPLE-ETH-USDC-2026-01-reconciled",
  "createdAt": "2026-02-01T12:00:00Z",
  "wallet": "0x1111…1111",
  "walletNote": "Abbreviated synthetic identifier; not a usable wallet address",
  "chain": {
    "name": "Ethereum",
    "chainId": 1
  },
  "asset": {
    "symbol": "USDC",
    "decimals": 6,
    "contract": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    "verification": "{{TODO: verify}}; public issuer contract reference only; no live lookup"
  },
  "period": {
    "label": "January 2026",
    "timeZone": "Europe/Zurich",
    "fromInclusive": "2025-12-31T23:00:00Z",
    "toExclusive": "2026-01-31T23:00:00Z",
    "openingBlock": 24000000,
    "fromBlock": 24000001,
    "toBlock": 24000099,
    "blockNote": "Synthetic block numbers; not actual historical block mappings"
  },
  "openingAtomic": "1000000000",
  "movements": [
    {
      "id": "SYNTHETIC-TX-01",
      "timestamp": "2026-01-02T12:00:00Z",
      "block": 24000002,
      "logIndex": 0,
      "direction": "in",
      "amountAtomic": "2400000000",
      "runningBalanceAtomic": "3400000000",
      "counterparty": "0x22…22",
      "reference": "SAMPLE-REF-1",
      "initiatedByWallet": false,
      "feePayer": "Sample third party",
      "priceCHF": "0.90",
      "valueCHF": "2160.00",
      "priceSource": "SYNTHETIC-FX-01",
      "priceTimestamp": "2026-01-02T12:00:00Z"
    },
    {
      "id": "SYNTHETIC-TX-02",
      "timestamp": "2026-01-05T12:00:00Z",
      "block": 24000005,
      "logIndex": 0,
      "direction": "out",
      "amountAtomic": "350000000",
      "runningBalanceAtomic": "3050000000",
      "counterparty": "0x33…33",
      "reference": "SAMPLE-REF-2",
      "initiatedByWallet": true,
      "feePayer": "Sample wallet",
      "priceCHF": "0.91",
      "valueCHF": "318.50",
      "priceSource": "SYNTHETIC-FX-01",
      "priceTimestamp": "2026-01-05T12:00:00Z"
    },
    {
      "id": "SYNTHETIC-TX-03",
      "timestamp": "2026-01-08T12:00:00Z",
      "block": 24000008,
      "logIndex": 0,
      "direction": "in",
      "amountAtomic": "1250000000",
      "runningBalanceAtomic": "4300000000",
      "counterparty": "0x44…44",
      "reference": "SAMPLE-REF-3",
      "initiatedByWallet": false,
      "feePayer": "Sample third party",
      "priceCHF": "0.92",
      "valueCHF": "1150.00",
      "priceSource": "SYNTHETIC-FX-01",
      "priceTimestamp": "2026-01-08T12:00:00Z"
    },
    {
      "id": "SYNTHETIC-TX-04",
      "timestamp": "2026-01-11T12:00:00Z",
      "block": 24000011,
      "logIndex": 0,
      "direction": "out",
      "amountAtomic": "800000000",
      "runningBalanceAtomic": "3500000000",
      "counterparty": "0x55…55",
      "reference": "SAMPLE-REF-4",
      "initiatedByWallet": false,
      "feePayer": "Sample third party",
      "priceCHF": "0.90",
      "valueCHF": "720.00",
      "priceSource": "SYNTHETIC-FX-01",
      "priceTimestamp": "2026-01-11T12:00:00Z"
    },
    {
      "id": "SYNTHETIC-TX-05",
      "timestamp": "2026-01-14T12:00:00Z",
      "block": 24000014,
      "logIndex": 0,
      "direction": "in",
      "amountAtomic": "600000000",
      "runningBalanceAtomic": "4100000000",
      "counterparty": "0x66…66",
      "reference": "SAMPLE-REF-5",
      "initiatedByWallet": false,
      "feePayer": "Sample third party",
      "priceCHF": "0.91",
      "valueCHF": "546.00",
      "priceSource": "SYNTHETIC-FX-01",
      "priceTimestamp": "2026-01-14T12:00:00Z"
    },
    {
      "id": "SYNTHETIC-TX-06",
      "timestamp": "2026-01-17T12:00:00Z",
      "block": 24000017,
      "logIndex": 0,
      "direction": "out",
      "amountAtomic": "120000000",
      "runningBalanceAtomic": "3980000000",
      "counterparty": "0x77…77",
      "reference": "SAMPLE-REF-6",
      "initiatedByWallet": false,
      "feePayer": "Sample third party",
      "priceCHF": "0.92",
      "valueCHF": "110.40",
      "priceSource": "SYNTHETIC-FX-01",
      "priceTimestamp": "2026-01-17T12:00:00Z"
    },
    {
      "id": "SYNTHETIC-TX-07",
      "timestamp": "2026-01-20T12:00:00Z",
      "block": 24000020,
      "logIndex": 0,
      "direction": "in",
      "amountAtomic": "3000000000",
      "runningBalanceAtomic": "6980000000",
      "counterparty": "0x88…88",
      "reference": "SAMPLE-REF-7",
      "initiatedByWallet": false,
      "feePayer": "Sample third party",
      "priceCHF": null,
      "valueCHF": null,
      "priceSource": null,
      "priceTimestamp": null
    },
    {
      "id": "SYNTHETIC-TX-08",
      "timestamp": "2026-01-23T12:00:00Z",
      "block": 24000023,
      "logIndex": 0,
      "direction": "out",
      "amountAtomic": "950000000",
      "runningBalanceAtomic": "6030000000",
      "counterparty": "0x99…99",
      "reference": "SAMPLE-REF-8",
      "initiatedByWallet": false,
      "feePayer": "Sample third party",
      "priceCHF": "0.91",
      "valueCHF": "864.50",
      "priceSource": "SYNTHETIC-FX-01",
      "priceTimestamp": "2026-01-23T12:00:00Z"
    },
    {
      "id": "SYNTHETIC-TX-09",
      "timestamp": "2026-01-26T12:00:00Z",
      "block": 24000026,
      "logIndex": 0,
      "direction": "in",
      "amountAtomic": "450000000",
      "runningBalanceAtomic": "6480000000",
      "counterparty": "0x1010…1010",
      "reference": "SAMPLE-REF-9",
      "initiatedByWallet": false,
      "feePayer": "Sample third party",
      "priceCHF": "0.92",
      "valueCHF": "414.00",
      "priceSource": "SYNTHETIC-FX-01",
      "priceTimestamp": "2026-01-26T12:00:00Z"
    },
    {
      "id": "SYNTHETIC-TX-10",
      "timestamp": "2026-01-29T12:00:00Z",
      "block": 24000029,
      "logIndex": 0,
      "direction": "out",
      "amountAtomic": "80000000",
      "runningBalanceAtomic": "6400000000",
      "counterparty": "0x1111…1111",
      "reference": "SAMPLE-REF-10",
      "initiatedByWallet": false,
      "feePayer": "Sample third party",
      "priceCHF": "0.90",
      "valueCHF": "72.00",
      "priceSource": "SYNTHETIC-FX-01",
      "priceTimestamp": "2026-01-29T12:00:00Z"
    }
  ],
  "fees": [
    {
      "movementId": "SYNTHETIC-TX-02",
      "asset": "ETH",
      "amountAtomic": "1050000000000000",
      "decimals": 18,
      "valueCHF": "2.63",
      "priceCHF": "2500.00",
      "priceTimestamp": "2026-01-05T12:00:00Z",
      "priceSource": "SYNTHETIC-FX-01",
      "rounding": "CHF nearest 0.01, half up"
    }
  ],
  "feeScope": "One sample wallet-initiated transaction; the other sample outflows are third-party initiated. Gas is not deducted from USDC.",
  "excluded": [
    {
      "symbol": "USDC",
      "contract": "0x9999…9999",
      "amountAtomic": "999000000000",
      "decimals": 6,
      "classification": "Synthetic counterfeit example",
      "reason": "Different synthetic contract. Excluded from the approved-asset ledger. An unverified real token would require review, not an automatic fraud verdict."
    }
  ],
  "coverage": {
    "fromBlock": 24000001,
    "toBlock": 24000099,
    "missingRanges": [],
    "historyComplete": true,
    "scope": "Selected USDC Transfer events in this synthetic interval only; not lifetime wallet history"
  },
  "issuerFreezeStatus": null,
  "sources": [
    "SYNTHETIC-EVENTS-01",
    "SYNTHETIC-STATE-01",
    "SYNTHETIC-FX-01"
  ],
  "valuationNote": "Invented CHF prices, not market observations. One missing price remains null. No complete CHF total is asserted.",
  "reconciliation": {
    "incomingAtomic": "7700000000",
    "outgoingAtomic": "2300000000",
    "calculatedClosingAtomic": "6400000000",
    "observedClosingAtomic": "6400000000",
    "deltaAtomic": "0",
    "status": "Reconciled"
  },
  "contentHash": "dff36902419c1b2ba9b5a48b5f8b41ad34ba7814cd2b04c0bbdbcd0d935b4ddb"
}

04 / Reconciliation, explained

Compare the result.
Keep the difference.

Opening
1,000
+In
7,700
−Out
2,300
=Calculated
6,400 USDC

Then compare with state

A real implementation must independently read the same token contract at the cutoff block. The sample simulates a separate state source; it makes no network request.

Observed 6,400 − calculated 6,400 = 0 USDC. Agreement is limited to the stated asset, wallet and interval.

A residual stays visible

The difference variant observes 6,350 USDC and reports −50 USDC, with a missing block interval. It does not invent a transfer to make the totals agree.

Check gaps, event semantics and cutoff selection. An issuer freeze may affect transferability; it is not, by itself, an explanation for a broken balance equation.

05 / Who it is for

From wallet records
to a working file.

Fiduciaries & tax advisers

Prepare a consistent client evidence file, with quantities, valuation inputs and questions to resolve.

The accountant workflow ↗

SMEs accepting stablecoins

Separate a payment receipt from the invoice, fees and eventual conversion into fiat.

USDC payment records ↗

Auditors

Inspect references, cutoff definitions, omissions and content versions. A technical report is not an audit opinion.

Inspect the sample ↗

Individuals

Prepare a year-end holding record and keep it alongside the wider records your tax workflow needs.

Year-end balance ↗

For the wider personal-tax workflow, explore CoinTaxReporting. A stablecoin statement is one supporting record, not a full tax return.

06 / Indexbase & CoinTaxReporting

A practical reporting direction.

CoinTaxReporting is our first integration partner. {{TODO: final wording}} — confirm the team relationship and final public description before publication.

07 / Planned scope

Identify the network.
Identify the exact asset.

Planned MVP target, subject to contract and representation verification
ChainUSDCUSDTNative gas
EthereumIssuer deployment · {{TODO: verify}}Issuer deployment · {{TODO: verify}}ETH
BNB Smart ChainRepresentation / custodian · {{TODO: verify}}Representation / custodian · {{TODO: verify}}BNB

Under consideration: Tron, Base, Solana. Chain names are a planning scope, not current coverage. A bridged representation remains distinct from a native issuer token.

Read the asset-specific guides: USDC statement and USDT statement.

08 / Planned features

A focused first version.
A considered next step.

MVP / planned

The statement and its evidence

  • USDC / USDT, Ethereum / BNB Smart Chain subject to asset verification
  • Opening, movements, state comparison and explicit coverage
  • Unverified token list and native fees
  • CHF observations with source and timestamp; missing prices remain null
  • PDF, CSV and JSON; reproducible content fingerprint

Next / investigation

The receiving workflow

  • camt.053 feasibility and software-specific import tests
  • Bexio / Abacus mappings, account and currency handling
  • Invoice matching and client portfolio workflow

These are directions to validate with fiduciaries, not integrations or delivery commitments.

What an accounting import needs ↗

09 / Proposed pricing

A statement first.
A workflow when you need it.

Proposed – final at launch

Single statement

CHF 9–19

One wallet, one selected period. Intended for an occasional report.

Fiduciary workspace

CHF 49–149 / month

A proposed recurring client-review workflow. Included wallets and limits: {{TODO: final package scope}}.

SME workspace

CHF 19–39 / month

A proposed monthly statement workflow for an operating business. Included wallets and limits: {{TODO: final package scope}}.

Currency: CHF. {{TODO: confirm VAT treatment, billing terms and exact package limits}}. No checkout, payment or subscription is active.

10 / Questions

Before the first statement.

What is a stablecoin statement?

A period-based record for an identified wallet and token: opening balance, movements, closing balance, native gas, evidence, exclusions and a balance comparison. It is a reporting document, not a bank account or a bank-issued statement.

Do you need access to my wallet?

The planned workflow needs a public wallet address, selected network and dates. No private key, seed phrase, wallet connection, token approval or spending permission is needed. Public addresses can still reveal sensitive activity; share them deliberately.

Which stablecoins and chains are planned?

The MVP target is USDC and USDT on Ethereum and BNB Smart Chain. Every deployment needs a verified contract and decimals. BNB-chain representations may be bridged or custodian-issued; native issuer status must not be assumed from a ticker.

How do you handle fake tokens?

Identify each asset by network and contract, not its name. A known synthetic counterfeit is excluded in the sample. A real unknown contract is shown as unverified for review, separately from the approved asset balance. A legitimate bridge representation is a distinct asset, not automatically a fake.

How are CHF values calculated?

The planned record stores a price, quote currency, source and timestamp for each movement. A missing price stays null. Sample rates are invented and are not market quotations. {{TODO: choose provider}} and document valuation times, rounding and year-end policy before real reports.

Can my accountant import it?

PDF is intended for review, CSV for spreadsheets and JSON for structured integration. A CSV is not automatically a ready-to-post accounting import. camt.053 and Bexio/Abacus workflows are next-stage investigations; importer, account mapping and currency handling still need validation.

Is this tax advice?

No. The statement organises technical records and supporting context. It does not establish wallet ownership, the business purpose of a transfer, a tax classification or a final accounting entry. Your fiduciary or adviser decides the applicable treatment.

What does “reconciled” mean?

Opening balance plus incoming minus outgoing equals the independently observed closing balance for the same contract, wallet and cutoff, with no known coverage gaps in that scope. Agreement does not establish a complete lifetime history, beneficial ownership or the correctness of a financial interpretation.

Join the private-beta waitlist

Tell us what you want to build. Your requirements will help shape the private beta.

Chains needed

Form setup in progress. Nothing entered here is sent or saved. {{TODO: endpoint}}

The form is a preview until its endpoint is configured. Use the email alternative on Contact to discuss a sample; do not send private keys or personal transaction records.