# Run alongside how you pay today

> Shadow mode: keep paying your bills as you do; the agent decides on the same bills, you agree or disagree with each decision, and each payment you agree to is made in USDC on Arc testnet.

Shadow mode lets a business try the agent on its real bills without moving its money. You keep paying your bills as you do today, in your own currency. The agent reads the same bills and decides on each one, as it would in any workspace, and you agree or disagree with every decision. A payment you agree to is sent in USDC on Arc testnet, at the bill's amount in USDC. Over time the console shows how often you agreed with the agent.

[Try shadow mode on your bills](https://www.vestiarion.xyz/onboarding?shadow=1)

## Before you start

- **A workspace on Arc testnet.** A sandbox is enough to start: with no wallet, it decides on your real bills, and a payment you agree to there is simulated. To pay what you agree to in USDC on Arc testnet, take it live with USDC in its operating wallet: see [Go live](https://www.vestiarion.xyz/docs/guides/go-live). Each payment you agree to is then paid from that wallet, so keep it funded: with test USDC from Vestiarion's float, for what your open bills need (see [Fund it for your real amounts](#fund-it-for-your-real-amounts)), or from Circle's faucet, 20 USDC every two hours.
- **The owner of the workspace.** Only an owner turns shadow mode on or off. Anyone who can approve payments (an owner, admin or approver) gives verdicts.

Shadow mode is for Arc testnet only. On Arc mainnet the panel says "Shadow mode runs on Arc testnet. On Arc mainnet the agent pays your real bills." Once you trust the agent, a small share of your bills can move to a workspace on Arc mainnet, which pays them in real USDC.

## 1. Turn it on

When you create a workspace, tick **Run alongside how you pay today (shadow mode)**. It is ticked already when you come from **Try it on your bills** on the home page. The workspace then starts in shadow mode, for bills in USDC, and the ledger records that you turned it on, as it does from Settings. If it cannot be turned on, the workspace is still created, and the console says "Your workspace is ready, but shadow mode did not turn on." with a link to Settings.

In a workspace you have already, or for bills in your own currency, open **Settings**. Under **Workspace**, the **Shadow mode** section says it is off. Choose **Your currency**: USDC, chosen at first, where you enter each bill's amount in USDC, or the currency your bills are written in, such as EUR. Then choose **Turn on shadow mode**. From then on the section says since when it is on, and for which currency, and that the agent pays nothing until a person agrees.

The console's **Get started in shadow mode** checklist then walks you through the rest and ticks each step as you take it: your suppliers, your real bills, your first verdict and **Set or confirm the limits**, and a wallet, funded and live. A live workspace, or one with a wallet, lists the wallet first. A sandbox with no wallet lists it last, under **To pay on Arc**, so your first verdict needs no wallet. The checklist hides once every step is done.

## 2. Add your bills as you do today

Add each bill as a payable in Bills & receivables. In USDC, enter its **Amount** in USDC, as on any invoice. In another currency, the invoice form's **Currency** starts at it: type the **Amount** as it is written on the bill, such as 1,250.00 for a bill in EUR. That bill is paid in USDC at the day's rate, which comes from ExchangeRate-API (**Rates By Exchange Rate API**), and a US dollar is one USDC by USDC's 1:1 redemption peg, never a market rate. Its card shows it as written, with the rate and the day of the rate, beside the USDC it is paid in. Once it is paid, its card shows its **FX variance**: what the payment carried beyond, or short of, what the bill was worth on the payment day (see [Work in your own currency](https://www.vestiarion.xyz/docs/guides/currencies)). Outside shadow mode, the form takes only USDC and EURC.

A list of bills you import from a spreadsheet takes bills in your currency too, each at the day's rate: see [Import your bill list](https://www.vestiarion.xyz/docs/guides/import-bills). A bill read from a document, an email or a chat, or sent through the API, is added in USDC or EURC: for a bill in another currency, type its amount into the form instead.

The agent decides on each bill in its next cycle, as in any workspace. It may pay it now, schedule it for a later day, hold it, flag it, or ask for what is missing. When you add a supplier, **Add counterparty** asks **Does this supplier send you purchase orders?** **No** adds it paid without purchase orders, so its bills are not held for one; **Yes** keeps them needed. For a supplier added before, change it on its row in Counterparties.

## Fund it for your real amounts

Your bills are paid at their real amounts, and Circle's faucet gives 20 USDC every two hours, so a month of bills can need more USDC than the faucet gives. Vestiarion keeps a float of test USDC on Arc testnet for this.

When the console's **Safe to spend today** is below zero, its **Shadow mode** section says "Your open bills need N USDC more than the operating wallet holds." An owner or admin then chooses **Add N test USDC**, "From Vestiarion's test USDC float, on Arc testnet." Vestiarion sends that much test USDC from its float to the operating wallet. It works the amount out again when you press it, from the operating wallet's USDC on Arc testnet and the open bills, milestones and cushion that **Safe to spend today** counts: at least 1 USDC, and at most 5,000 USDC in any 7 days for each workspace.

A notice says **Added N test USDC to the operating wallet.** with **View transaction**, or "Arc testnet is still confirming it." while it settles. The section then says "Last added: N test USDC on" the day, with **View transaction**. Within seconds the agent decides again on any payment it held for want of cash.

Vestiarion fills the float with testnet USDC bought in bulk from TestMint. Once your workspace has taken its 5,000 USDC for the week, the section says so, with the operating wallet's address: buy testnet USDC from [TestMint](https://testmint.myproceeds.xyz) yourself, with destination Arc Testnet and that address as recipient, or use Circle's faucet.

## 3. Give a supplier with no Arc address a mirror address

Most of the people you pay have no wallet on Arc. In a sandbox with no wallet that does not matter: the payment you agree to is simulated, the address included. Once the workspace pays on Arc testnet, a payment you agree to needs an address to go to, so in shadow mode a supplier with no address can be given a mirror address: a wallet Vestiarion makes for it on Arc testnet, in this workspace's Circle wallets.

In **Counterparties**, open the supplier's row and choose **Give it a mirror address**. The row then shows the address, and says: "Mirror address: a wallet Vestiarion made for this payee on Arc testnet, in shadow mode." No person typed it, so its first payment does not wait for a second person to confirm the address. The USDC you agree to pay a supplier stays in its mirror wallet, on Arc testnet.

If the supplier later gives you an Arc address of its own, enter it as you would any change: it replaces the mirror address, the row no longer calls it one, and the next payment waits for a person to confirm it.

## 4. Agree or disagree with each decision

When the agent decides to pay a bill now, nothing is sent: the payment is held for your verdict, and its card reads **Waiting for your verdict**. In Approvals, the console and Bills & receivables, its card asks **Do you agree with the agent?**, and says what agreeing pays: the amount in USDC, the payee and the payee's address. Its row in Bills & receivables says why it waits: "Shadow mode: it waits for a person to agree."

The same holds when a check in code stopped the payment the agent decided, such as a first payment to an address only you stand behind, or one above the payee's limit. The card says why, and still asks for your verdict: **Agree and pay** pays it through the same checks as **Approve and pay**, and nothing else settles it until a verdict is given. So every payment made in shadow mode has a verdict behind it.

- **Agree and pay** asks you to confirm that you agree with the agent and that it is paid in USDC on Arc testnet now, with that payment. In a sandbox with no wallet it says "You agree with the agent, and it is paid now, simulated: nothing is sent on chain". The payment then goes through the same checks as **Approve and pay**, to the address the card showed: if the payee's address changed since, nothing is paid. Your agreement is recorded once the payment goes, or its transfer was tried. A notice says **Payment approved** while it is sent, then **Payment confirmed** with the amount, the payee, "Agent decision approved by you", "Confirmed by Circle on Arc testnet" and **View transaction**, or **Payment processing** while Circle has not confirmed it yet. If the payment is refused, nothing is recorded: agree and pay again once it can be paid.
- **Agree** alone is offered while nothing can be paid, for example while payments are switched off, and the card says why: "Agree records your verdict; it can be paid in Approvals later."
- **Disagree** asks **Why do you disagree?** in the same step, in at most 280 characters. The reason is optional: give one line if you can, since it is kept with your verdict in the ledger and Vestiarion's team reads it to improve the agent (see [Privacy](https://www.vestiarion.xyz/privacy#decision-reasons)), or leave it empty and disagree anyway. Then choose what happens to the bill: **Decide it again later** returns it to the agent for its next cycle, and **Do not pay it** rejects it.

If you may not pay it yourself, for example because you entered the bill and another person can approve payments, the card offers **Agree** alone and says why. Your agreement is recorded, and another person pays it in Approvals.

In Slack and Telegram, the agent's message about a payment held for your verdict, and the list of what waits for a person, say it waits for your verdict, and **Give your verdict** opens it here. Slack offers no buttons on it: until someone gives a verdict, nothing else settles it, and **Approve and pay** refuses a payment someone disagreed with, unless its transfer had already left: that is recorded.

If an **Agree and pay** stops before it finishes, the card says **Unfinished decision**. After ten minutes it offers **Agree and pay** and **Disagree** again, and nothing else settles the payment until a verdict is given.

Every other decision, such as a payment scheduled for a later day, or a bill the agent itself held, flagged or asked about, offers **Agree** and **Disagree** on its card in Bills & receivables. Its own actions stay where they are. When a scheduled payment's day comes, the agent decides again, and that payment is held for your verdict.

Each decision takes one verdict, and the card shows it once given. A second verdict on the same decision changes nothing.

## 5. See how often you agreed

The console shows a **Shadow mode** section while shadow mode is on. Three figures lead it: **Agreement**, the share of the agent's decisions you agreed with, out of the verdicts given; **Verdicts given**; and **Waiting for you**, the decisions that still wait for your verdict. Under them, **See them in Bills & receivables** takes you to give them.

For a traction update, `npm run traction-digest -- <workspace> --since <day>` lists each decision with its verdict and the transaction that paid it. A payment a person made on a decision the agent did not make to pay, such as a bill it held, reads "Paid later by a person", so an agreed hold is never read as the agent's payment.

Vestiarion's public numbers at [/open](https://www.vestiarion.xyz/open) count how often customers agreed with the agent in shadow mode, across every workspace, as a share. They never show a workspace's name, a bill or a verdict's reason.

## Compare with what your business really paid

A verdict says whether you agreed with a decision. To see what your business then did, record how it paid each bill from its bank. Open **Report**: **Agent vs what really happened** lists each bill the agent decided on, with **Record what you paid** for an owner or admin. Record the day it was paid, the amount and currency as paid, how it was paid and the reference, or that it was **Not paid** and why. A CSV of many payments can be imported there too, previewed before anything is saved; **Download the bills not recorded yet** gives you one to fill in. Or choose your bank's own CSV export under **Import a bank statement**: each line of money out is matched to the bill it could have paid, with why, and you tick the ones to save.

Bill by bill, the report then shows the agent's decision beside what your business did and how many days apart they were, and marks what is worth a look: a bill the agent held that your business paid, a bill paid on Arc that your business did not pay, and an amount that differs. A bill nobody has recorded says **Not recorded**: nothing is guessed. Once something is recorded, `npm run traction-digest` adds a line saying how often the agent and the business did the same. See [Read your workspace report](https://www.vestiarion.xyz/docs/guides/report#agent-vs-what-really-happened).

To show your partner, your accountant or an outside reviewer what the agent did with your real bills, without giving them a login, an owner or admin chooses **Share this report** on the report. The link opens a live copy, with suppliers as labels or by name and amounts shown or hidden, as you choose, and stops working when you stop sharing it. See [Share this report](https://www.vestiarion.xyz/docs/guides/report#share-this-report).

## 6. Turn it off

In **Settings**, choose **Turn off shadow mode** and confirm. The agent pays on its own again, within its limits. A payment waiting for a person to agree stays held until a person decides it. Decide it in Approvals with **Approve and pay**, **Reject** or **Return**, as any held payment: no verdict can be given on it once shadow mode is off.

## Before a live slice

When you trust the agent, a small share of your bills can move to a workspace on Arc mainnet, which pays them in real USDC: one supplier, or the bills under a figure you choose. The workspace's **Report** lists what we suggest first, ticked from your own records: verdicts on at least five decisions, no decision waiting for your verdict, and each supplier's own Arc address, since a mirror address works only here. Then open a workspace on Arc mainnet and take it live: see [Go live](https://www.vestiarion.xyz/docs/guides/go-live). Your shadow workspace keeps running alongside it. See [Read your workspace report](https://www.vestiarion.xyz/docs/guides/report).

## What the ledger records

Each step is a signed entry in the workspace's ledger, and reaches webhook endpoints as `ledger.appended`:

- `shadow_mode_started` and `shadow_mode_ended`, with who turned it on or off and the currency.
- `ap_pay` for a payment held in shadow mode, with `execution.heldBecause: "shadow_verdict"`. It is not a refusal by code: the decision passed every check.
- `counterparty_address_changed` with `via: "mirror"` when a supplier is given a mirror address: who asked, the address and its Circle wallet id.
- `test_usdc_added` when test USDC came in from Vestiarion's float: who asked, the amount, the float's address and the operating wallet's, Circle's transfer id, the transaction hash once Arc testnet confirmed it, its status, the shortfall and the weekly limit. A transfer from the float that no entry recorded, because its request stopped before the ledger was written, is recorded the next time someone adds test USDC, with `recovered: true`. Money from the float is never matched to a receivable.
- `decision_verdict` for each verdict: who gave it, the decision it is about (`entrySeq`), the payable (`subjectId`), the agent's action, `agree` or `disagree`, and the reason.
- `actual_payment_recorded` when someone records what your business paid, and `actual_payment_corrected` for a correction, which names the record it replaces (`replaces`): who recorded it, the record (`actualId`), the payable (`subjectId`), `paid` or `not_paid`, the day, amount, currency, method, reference and note, or the reason it was not paid, and `via: "csv"` for a row from a CSV, or `via: "statement"` and the line it came from (`statementLine`) for a line of a bank statement.

## If something goes wrong

| Message | What to do |
| --- | --- |
| Choose USDC, or the currency your bills are written in as a three-letter code, such as EUR. | Choose your currency from the list. |
| Shadow mode is already on. | Someone turned it on a moment before. Reload the page. |
| Shadow mode is already off. | Someone turned it off a moment before. Reload the page. |
| A cycle is running. Try again in a minute, once it has finished. | The agent read the workspace's settings when its cycle began. Try again once it ends. |
| Verdicts are given in shadow mode. An owner turns it on in Settings. | Shadow mode is off. An owner turns it on in **Settings**. |
| That decision came before shadow mode started. | Verdicts are given on decisions made in shadow mode only. |
| Keep the reason to 280 characters. | Shorten your reason. |
| It no longer waits for your verdict, so nothing was paid. | The bill was paid, returned or decided again since. Your agreement is recorded; the card shows where it stands. |
| A verdict was given on this decision already | Someone gave a verdict on it a moment before. The card shows which. |
| This payee has an address already. A mirror address is for a payee with none. | The supplier has an address: payments go there. |
| Go live on Arc testnet first: a mirror address is a wallet in this workspace's Circle wallets. | Take the workspace live on Arc testnet in **Settings**, under **Go live**, then give the mirror address. |
| A mirror address is for shadow mode. An owner turns it on in Settings. | Shadow mode was turned off after the page loaded. Reload the page. |
| This workspace's Circle credentials are stored but could not be read. | Vestiarion cannot use this workspace's Circle wallets just now. Try again later; nothing was given. |
| Test USDC is for shadow mode. An owner turns it on in Settings. | Shadow mode was turned off after the page loaded. Reload the page. |
| Go live on Arc testnet first: test USDC goes to the operating wallet. | Take the workspace live on Arc testnet in **Settings**, under **Go live**, then add the test USDC. |
| Vestiarion's test USDC float is not set up on this deployment. | Fund the operating wallet from Circle's faucet. |
| Arc testnet is still confirming the last test USDC. Try again in a minute. | The float's last transfer to this workspace is still settling. Try again once it is confirmed. |
| Circle could not send the test USDC. Try again in a moment. | Circle reported the transfer failed, so nothing arrived. Choose **Add N test USDC** again. |
| Nothing to add: the operating wallet covers your open bills. | **Safe to spend today** is no longer below zero, so nothing was sent. Reload the page. |
| This workspace took its 5,000 test USDC for this week. | Buy testnet USDC from [TestMint](https://testmint.myproceeds.xyz) and send it to the operating wallet, or use Circle's faucet. |
| Vestiarion's test USDC float is empty just now. Use Circle's faucet, or buy testnet USDC from TestMint and send it to the operating wallet. | Vestiarion refills the float from TestMint. Until then, fund the operating wallet from Circle's faucet, or buy testnet USDC from [TestMint](https://testmint.myproceeds.xyz) yourself. |
| This decision waits for a verdict in shadow mode. Agree or disagree with it in Approvals first. | Give your verdict on its card in **Approvals**: **Agree and pay**, or **Disagree**. |
| Someone disagreed with this decision in shadow mode, so it is not paid. Return it to the agent or reject it. | A payment someone disagreed with is not made. Return it to the agent, or reject it, in **Approvals**. |
