Verify before you buy
Read the money engine. Now, free, no signup.
Below is the complete, verbatim source of Kovarra's payment engine — the code that derives receiving addresses, pegs exchange rates, matches on-chain payments to invoices, and decides when an invoice is paid. This is the part of the product where custody would live if it existed. It doesn't: you will find no private keys, no seed phrases, and no transaction-signing code — only public-key address derivation and integer arithmetic.
Also published: the entire 82-test suite that guards it, and the CI tripwire script that fails any build containing signing capability.
What this does and doesn't prove. It proves the engine's quality, the integer-only money math, and the receive-only design — before you spend anything. The full product (API server, checkout & dashboard UI, blockchain watchers, installer, WooCommerce plugin) ships on purchase, and you can verify the complete codebase then — or request a full evaluation copy first via Telegram. Bring your own developer or auditor; we encourage it.
Engine source (packages/core/src)
| File | Lines | What it does |
|---|---|---|
| statemachine.ts | 280 | The invoice state machine — every payment decision: detected, confirming, paid, expired, underpaid, overpaid, reorg rollback, late funds |
| derivation.ts | 83 | Address derivation from extended public keys (Base + Tron); refuses private keys outright |
| chains.ts | 68 | Chain/network parameters, testnet switching, explorer links |
| rates.ts | 66 | Exchange-rate fetching with caching; float-free conversion at the boundary |
| option.ts | 64 | Builds a payment option: pegged amount + fresh address per invoice |
| license.ts | 48 | Offline Ed25519 license verification (the license never phones home) |
| amounts.ts | 43 | Integer base-unit money math — parsing, formatting, tolerance floors; no floating point |
| dust.ts | 27 | "Cent-dust" amount uniqueness for shared-address mode |
| webhooks.ts | 17 | HMAC-SHA256 webhook signing + constant-time verification |
| peg.ts | 16 | Fiat → crypto conversion, rounded in the merchant's favor |
| types.ts | 8 | Chain/asset types |
| index.ts | 11 | Module exports |
The test suite (packages/core/test)
| File | Lines | Covers |
|---|---|---|
| statemachine.test.ts | 538 | 41 tests: every transition, tolerance edges (exactly at floor, one unit below), expiry races, double-tx accumulation, reorg rollback, multi-asset first-wins semantics, late funds never dropped |
| derivation.test.ts | 71 | Address derivation cross-checked against an independent implementation; private-key rejection |
| option.test.ts | 63 | Option building, per-selection rate pegging, dust application |
| amounts.test.ts | 52 | Money parsing/formatting, ceiling division, tolerance-floor rounding |
| rates.test.ts | 50 | Rate caching, provider failure handling |
| license.test.ts | 50 | License signature verification, tamper rejection |
| peg.test.ts | 41 | Fiat→crypto pegging, merchant-favorable rounding |
| dust.test.ts | 34 | Dust uniqueness and collision fallback |
| webhooks.test.ts | 19 | Signing determinism, constant-time verification |
The non-custody tripwire
| File | Lines | What it does |
|---|---|---|
| check-no-custody.sh | 19 | Fails any build whose source contains private keys, mnemonics, or transaction-signing code. Runs in CI on every change. |
Questions about anything you read here — or want the full evaluation copy? Message @Kovarra_xyz on Telegram.