Net what you owe and are owed
Two ways to net out a loop of debt: USDC invoices on Arc, and obligations in any currency.
Invoices on Arc
From a signature to a receipt
USDC invoices, registered on Arc and cancelled in place, with no USDC moving except gas.
Sign
The debtor and creditor each sign the invoice with their own wallet. It's registered on Arc once both signatures are in.
Find a loop
See exactly which invoices form a closed loop and how much would cancel, before you commit to anything.
Cancel it
One transaction cancels the same amount off every invoice in the loop, with a link to it on the Arc explorer.
Get a receipt
See the block, the transaction and exactly what changed for every invoice involved.
Offchain obligations
Any currency, one certificate
Debts that stay in your own currency and off the chain, netted with a certificate everyone in the loop signs.
Record it in any currency
Record what you owe or are owed in the currency you actually invoice in, with a description that only you and your counterparty are shown.
Both sides sign
Send a short link. It's shown only to your counterparty, after they sign in with the wallet it names, and their browser checks your signature before they sign.
One certificate per loop
When obligations form a loop, everyone in it reviews their own obligations and signs one netting certificate.
Never netted twice
Applying the certificate records a blinded state for each obligation on Arc. The same debt can't be netted again from an old state.
Keep your certificate
Download your copy of the certificate. It holds your own obligations in full, and no one else's amounts.
Verify any certificate
Check a certificate against the ledger on Arc, in your browser, without uploading it.
Verify a certificate →Trust
How Contraflow is built
Fails safely
A missing signature, a broken loop or the wrong network means nothing goes through. Nothing half-completes.
Anyone can settle
Cancelling a valid loop isn't gated behind us. Anyone can trigger it once it's ready.
Real numbers only
Every figure the app shows, from the protocol stats to a receipt, comes from an actual transaction, never a sample or a mock.