On-chain escrow
The contract that holds your USDC while a purchase is alive: what it guarantees, the only two ways the money can leave, the public addresses and how to read them yourself on the explorer.
What escrow is and what it is not
When you pay for a template, your USDC never reaches a Bernuvia account. It goes from your wallet into a public contract on Polygon and stays there until the purchase closes. That contract is the escrow.
- Bernuvia never holds the money of your purchase.
- The contract has verified source code: you can read it, and read every transaction, on the explorer.
- The rules of the split are written in the contract, not on a server of ours.
- It is not a bank or a balance account: escrow only holds the amount of specific purchases.
Escrow only understands money. File delivery, reviews and the case file of a dispute live off-chain; on-chain, the only thing decided is where the amount goes.
The only two ways the money leaves
An amount in escrow has two possible destinations: the seller, minus the fee, or back to the buyer. The contract admits no third party.
- To the seller: when you confirm receipt, or when the automatic release falls due.
- To the buyer: if the seller refunds, or if a dispute closes in your favour.
- Split: a resolved dispute can divide the amount between the two, and the sum always matches the total.
- Neither the administration nor any operator can send that money to another address.
The money is not transferred on its own: it is first credited to its owner inside the contract and then each party withdraws when they choose. A blocked address cannot jam anyone else's payouts.
The public addresses
Everything runs on Polygon mainnet (chain id 137). These are the addresses in service:
| Contract | Address | What for |
|---|---|---|
| Escrow · MarketplaceEscrow v2 | 0x9d285aA8a5b24df5eB058D9350dbe33645cd23b5 | Holds the amount of every purchase |
| Membership · SubscriptionCollector v2 | 0xF9f95934fd272481fa205d3B030B5156Ce62A21c | Charges the membership within the signed cap |
| USDC · Circle | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 | The currency of every purchase |
| Administration and treasury · 2-of-3 multisig | 0x87b6E96a3f64e01a9523ea5C5FCef9008800bfAc | Governs the contracts and receives the fee |
The full list, with the Polygonscan link for each one and its verification status, is on Security and transparency.
Read it yourself on the explorer
You do not have to take our word for it. The escrow contract publishes read-only values that anyone can query from a browser, with no wallet and no gas.
- 1Open the escrow address on Polygonscan.
- 2Go to the Contract tab and then to Read Contract.
- 3Expand treasury, feeBps, paused and totalLiabilities, and hit Query on each one.
- 4Compare what you see with what this page says.
Example response, with the four values together
{
"treasury": "0x87b6E96a3f64e01a9523ea5C5FCef9008800bfAc",
"feeBps": 500,
"paused": false,
"totalLiabilities": "1234560000"
}- treasury: the address that receives the fee. Changing it is proposed and waits 48 hours.
- feeBps: the fee cap the contract applies, in hundredths of a percentage point. The 500 in the example is 500 basis points, that is 5%. Governance can change that cap, and the change waits 48 hours; the absolute maximum written in the code is 1000, that is 10%. The real fee on each purchase is 3.8% and never goes above that cap.
- paused: whether the purchase cycle is halted. Payouts stay alive even when it reads true.
- totalLiabilities: how much USDC the contract owes in total, in units of six decimals. The contract balance can never fall below that figure.
The numbers in the example are just that, an example: always read the real value on the explorer. And watch the tab you are on, because next to it there is a write tab that asks you to sign. To check what this page says you do not need to sign anything.
The fee and what it is calculated on
The fee comes out of the seller's side, it is never added on top of what the buyer pays. Today it is 3.8% and it travels written into the quote that gets signed.
- The fee of an order is the one its quote carried, not whatever is configured tomorrow.
- In a resolution with a split, the contract charges the smaller of two numbers: the fee on the amount, or what the seller keeps.
- If the refund is in full, the fee is zero.
- The contract governs a maximum and rejects any quote that goes above it.
The detail, with who pays what, is on Fees and pricing.
The pause, and what it does not allow
The administration can pause the contract. It is an emergency brake, not a key over your money.
- While paused, no new purchases can be created, no deliveries marked, no disputes opened or closed.
- Withdrawing still works with the contract paused: what was already credited to you is yours and it leaves.
- The pause freezes the clock of every live order, and on resuming each deadline gets back the seconds it stood still.
- The pause does not change where the money goes: the two exits stay the same.
That time credit has no cap, and that is on purpose: with a cap, a long pause would eat the buyer's dispute window or the committee's jurisdiction.
The previous version, being drained
Escrow v2 went into service on 10 September 2026. The previous version stays published and readable.
| Previous contract | Address |
|---|---|
| Escrow · MarketplaceEscrow v1 | 0x33C6eFD7523821c2AB51d874e440Ac8A0C97f409 |
| Membership · SubscriptionCollector v1 | 0x3860f37D6066AF02811b24FE66D0bd00F693AD21 |
- It takes no new purchases and has no live orders left.
- It stays on the explorer so anyone can review the purchases that went through it.
- Withdrawals are still open there: nobody loses a balance because of the version change.
- Signed mandates do not travel from one contract to another, so the membership is signed again on version 2.
Keep going
If you want the detail of the numbers or of the deadlines:
The documentation explains how this works; the help centre walks you through it. Go to the help centre.

