BernuviaBernuvia
Contents

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.

The principal of a purchase can only end up with the seller, with the buyer or split between the two, with the fee credited to the treasury.
  • 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:

ContractAddressWhat for
Escrow · MarketplaceEscrow v20x9d285aA8a5b24df5eB058D9350dbe33645cd23b5Holds the amount of every purchase
Membership · SubscriptionCollector v20xF9f95934fd272481fa205d3B030B5156Ce62A21cCharges the membership within the signed cap
USDC · Circle0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359The currency of every purchase
Administration and treasury · 2-of-3 multisig0x87b6E96a3f64e01a9523ea5C5FCef9008800bfAcGoverns 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.

  1. 1Open the escrow address on Polygonscan.
  2. 2Go to the Contract tab and then to Read Contract.
  3. 3Expand treasury, feeBps, paused and totalLiabilities, and hit Query on each one.
  4. 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 contractAddress
Escrow · MarketplaceEscrow v10x33C6eFD7523821c2AB51d874e440Ac8A0C97f409
Membership · SubscriptionCollector v10x3860f37D6066AF02811b24FE66D0bd00F693AD21
  • 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.