Skip to main content
Confiroll produces a payslip for every contractor in a pay cycle. Each payslip is end-to-end encrypted to its contractor, so only that contractor can read it, and the whole cycle is anchored on-chain with a single fingerprint, so every payslip is tamper-evident. The documents stay encrypted and off-chain. Only a hash goes to the network.

What you see

The Payslips screen lists your pay cycles, newest first, with an anchored badge on each cycle that has been committed to the chain. Selecting a cycle expands its recipient list, its anchor status, and a download control. A single Anchor cycle action commits the whole cycle at once.

Cycles list

How it works

1

Generate payslips for a run

After a payroll run settles, generate the cycle’s payslips. Each document is built for one contractor and encrypted to that contractor’s public viewing key, so only the holder of the matching key can open it. Your amounts, read from your private ledger, populate each payslip on your device.
2

Anchor the cycle on-chain

Confiroll commits the whole cycle as a single Merkle root to the on-chain payslip anchor. It stores only that hash. It never writes the payslip contents and never writes an amount. This step costs you 0 XLM, because the fee is sponsored.
3

Contractors download and verify

Each contractor downloads their payslip, decrypts it locally with their own viewing key, and verifies it against the on-chain anchor. If the document matches the anchored fingerprint, it is authentic and unaltered.

What is on-chain versus off-chain

On-chain

One Merkle root per cycle: a single fingerprint that commits to every payslip in the cycle at once. No contents. No names. No amounts. Just a hash anyone can check against.

Off-chain

The payslip documents themselves, each end-to-end encrypted to its contractor. They stay encrypted at rest and are readable only by the contractor who holds the matching viewing key.
Anchoring is tamper-evidence, not publication. The anchor lets anyone confirm that a payslip has not changed since it was issued. It does not put the payslip, the contractor, or the amount on-chain. The figure stays inside the encrypted document, which never leaves the off-chain store in readable form.

One anchor for the whole cycle

Because the entire cycle is committed as a single Merkle root, anchoring costs the same whether you pay 3 people or 300. You write one fingerprint per cycle, not one per payslip.
A Merkle root is a single hash that stands in for a whole set of documents. Each payslip sits in the tree, and the root at the top changes if any leaf changes. That is what makes one small on-chain write cover an entire headcount. See Soroban contracts on the Developers tab for the anchor’s design.

Tamper-evidence explained

1

The fingerprint is fixed at issue time

When you anchor a cycle, the Merkle root is written to the chain and cannot be changed. It is a permanent commitment to exactly the payslips that existed at that moment.
2

Verification recomputes and compares

When a contractor verifies a payslip, their device recomputes the fingerprint from the document they hold and checks it against the anchored root on-chain.
3

Any change breaks the match

Alter a single character in a payslip and its recomputed fingerprint no longer matches the anchor. The verification fails, and the alteration is caught. An unaltered payslip always verifies.

FAQ

No. Each payslip is end-to-end encrypted to a single contractor’s public viewing key. Only the contractor holding the matching key can decrypt and read it. Confiroll stores the encrypted document but cannot open it, and no other contractor or employer can either.
No. Anchoring writes only a Merkle root, a single hash for the whole cycle. It never writes the payslip contents, the contractor identities, or any amount. The figures stay inside the encrypted documents, off-chain. The anchor proves the documents have not been tampered with, nothing more.
Verification catches it. A contractor’s device recomputes the fingerprint from the document and compares it to the on-chain anchor. If even one character changed, the fingerprints no longer match and verification fails. An unaltered payslip verifies cleanly against the anchor.
Anchoring a cycle costs you 0 XLM, because the fee is sponsored. Headcount does not change that, and it does not change the on-chain work either: the whole cycle commits as one Merkle root, so anchoring is a single write whether you pay 3 people or 300.