PayPal sandbox · demo data · no real money
HandOff: agents propose, code pays, receipts prove
A creator's AI team plans and checks the work. Plain code pays people through PayPal Payouts, only inside the creator's signed mandate, and every step becomes a signed, hash-chained receipt that anyone can verify offline.
Open the AG Studio ledger → · download the ledger · verify it now
Run a demo week
Maya signs a fresh mandate for this week. The ops agent plans tasks for Theo and Ana, simulated contractors deliver (one short comes back landscape, and one note tries to order a $5,000 payout), the verifier checks each file, and the policy engine decides.
Waiting for Maya's approval
Pay ana $150.00 for T-a64c-4 (thumb-pack-v1)
signs decision sha256:fee4ce089a50… · expires 15 minutes after approval
Pay ana $150.00 for T-0324-4 (thumb-pack-v1)
signs decision sha256:eac434cd37be… · expires 15 minutes after approval
Pay ana $150.00 for T-5f27-4 (thumb-pack-v1)
signs decision sha256:26107bc4e7c9… · expires 15 minutes after approval
This week's budget
Paid $80.00 · committed $80.00 · waiting for approval $150.00 · left $70.00 of $300.00
1 blocked this week · mandate m-maya-20261015-a64c
Tax running totals, 2026
| Payee | Paid | 1099-NEC line ($2,000) | Payments |
|---|---|---|---|
| Theo R. | $320.00 | 8 | |
| Ana P. | $150.00 | 1 | |
| Sam K. | $0.00 | 0 |
Running totals only, not a filing decision. Payments through PayPal are generally reported by PayPal on Form 1099-K; some states use lower thresholds.
Brand money in: PayPal Invoicing
Maya invoices a brand through PayPal Invoicing (sandbox). PayPal holds the money; HandOff only records what PayPal reports, as a signed receipt. The amount is the creator's deal, never an agent's.
| Invoice | Brand | Amount | Status | |
|---|---|---|---|---|
| HO-20261111-4EC7 | Nova Audio | $500.00 | paid $500.00 · receipt #92 | |
| HO-20261111-FD7D | Nova Audio | $500.00 | paid $500.00 · receipt #90 |
Sandbox: the button records a payment against the invoice, the way an invoicer records money received elsewhere, so no funds move. A brand paying the invoice from a PayPal sandbox account is recorded the same way, within about a minute.
Policy decisions
| Task | Payee | Rate line | Amount | Status | Why |
|---|---|---|---|---|---|
| T-a64c-3 | theo | short-edit-v1 | — | BLOCKED | verifier verdict #80 failed: aspect ratio · short-03.mp4: 16:9 (1920×1080); spec asks for 9:16; The aspect ratio is 16:9 instead of the required 9:16. |
| T-a64c-4 | ana | thumb-pack-v1 | $150.00 | NEEDS_APPROVAL | thumb-pack-v1 × 1 = $150.00 (from the signed rate card) |
| T-a64c-1 | theo | short-edit-v1 | $40.00 | APPROVED | short-edit-v1 × 1 = $40.00 (from the signed rate card) |
| T-a64c-2 | theo | short-edit-v1 | $40.00 | APPROVED | short-edit-v1 × 1 = $40.00 (from the signed rate card) |
| T-0324-4 | ana | thumb-pack-v1 | $150.00 | NEEDS_APPROVAL | thumb-pack-v1 × 1 = $150.00 (from the signed rate card) |
| T-0324-3 | theo | short-edit-v1 | — | BLOCKED | verifier verdict #58 failed: aspect ratio · short-03.mp4: 16:9 (1920×1080); spec asks for 9:16; The video aspect ratio is 16:9 instead of the required 9:16. |
| T-0324-1 | theo | short-edit-v1 | $40.00 | APPROVED | short-edit-v1 × 1 = $40.00 (from the signed rate card) |
| T-0324-2 | theo | short-edit-v1 | $40.00 | APPROVED | short-edit-v1 × 1 = $40.00 (from the signed rate card) |
| T-5f27-1 | theo | short-edit-v1 | $40.00 | APPROVED | short-edit-v1 × 1 = $40.00 (from the signed rate card) |
| T-5f27-4 | ana | thumb-pack-v1 | $150.00 | NEEDS_APPROVAL | thumb-pack-v1 × 1 = $150.00 (from the signed rate card) |
| T-5f27-3 | theo | short-edit-v1 | — | BLOCKED | verifier verdict #36 failed: aspect ratio · short-03.mp4: 16:9 (1920×1080); spec asks for 9:16; The aspect ratio of short-03.mp4 is 16:9 instead of the required 9:16. |
| T-5f27-2 | theo | short-edit-v1 | $40.00 | APPROVED | short-edit-v1 × 1 = $40.00 (from the signed rate card) |
| T-cb42-3 | theo | short-edit-v1 | — | BLOCKED | verifier verdict #14 failed: aspect ratio · short-03.mp4: 16:9 (1920×1080); spec asks for 9:16; The video aspect ratio is 16:9 instead of the required 9:16. |
| T-cb42-1 | theo | short-edit-v1 | $40.00 | APPROVED | short-edit-v1 × 1 = $40.00 (from the signed rate card) |
| T-cb42-4 | ana | thumb-pack-v1 | $150.00 | NEEDS_APPROVAL | thumb-pack-v1 × 1 = $150.00 (from the signed rate card) |
| T-cb42-2 | theo | short-edit-v1 | $40.00 | APPROVED | short-edit-v1 × 1 = $40.00 (from the signed rate card) |
PayPal payouts
| Payee | Amount | Batch | State |
|---|---|---|---|
| theo | $40.00 | pr-58bf3fb97cf… | SUCCEEDED |
| theo | $40.00 | pr-58bf3fb97cf… | SUCCEEDED |
| theo | $40.00 | pr-922d73c7130… | SUCCEEDED |
| theo | $40.00 | pr-922d73c7130… | SUCCEEDED |
| theo | $40.00 | pr-ebae6a71388… | SUCCEEDED |
| theo | $40.00 | pr-ebae6a71388… | SUCCEEDED |
| ana | $150.00 | pr-9890102b7f7… | SUCCEEDED |
| theo | $40.00 | pr-dc954f2f588… | SUCCEEDED |
| theo | $40.00 | pr-dc954f2f588… | SUCCEEDED |
Proof
✓ 92 receipts: every signature and link verifies
Latest checkpoint covers 87 receipts, co-signed Ed25519 + ML-DSA-65: valid
Download the ledger and check it yourself, without trusting this server:
pnpm verify ledger.json
Receipts
Amber: an AI model acted. Blue: plain code acted. Black: a person (or a simulated contractor) signed.
| # | Type | Signed by | Time | What happened |
|---|---|---|---|---|
| 92 | INCOME | webhook-handler | 2026-11-11 17:57:48 UTC | PayPal reports invoice HO-20261111-4EC7 paid: $500.00 received · verified by PayPal |
| 91 | INVOICE | creator | 2026-11-11 17:57:22 UTC | Invoice HO-20261111-4EC7 sent to Nova Audio through PayPal Invoicing: $500.00 for "Sponsored integration: episode 12" |
| 90 | INCOME | webhook-handler | 2026-11-11 02:58:22 UTC | PayPal reports invoice HO-20261111-FD7D paid: $500.00 received · status read from the PayPal API |
| 89 | INVOICE | creator | 2026-11-11 02:58:15 UTC | Invoice HO-20261111-FD7D sent to Nova Audio through PayPal Invoicing: $500.00 for "Sponsored integration: episode 12" |
| 88 | PROPOSAL | assistant | 2026-10-16 00:06:09 UTC | demo-token:gate-mcp proposed 1 × caption-v1 for sam through the MCP door (pending review) |
| 87 | CONFIRMATION | webhook-handler | 2026-10-15 06:52:54 UTC | SUCCEEDED · dk-51dd067c… · verified by PayPal |
| 86 | CONFIRMATION | webhook-handler | 2026-10-15 06:52:47 UTC | SUCCEEDED · dk-edd172bc… · verified by PayPal |
| 85 | PAYOUT | policy-engine | 2026-10-15 06:52:03 UTC | PayPal Payouts batch T2UGRJELXDMQ4 · $80.00 · 2 item(s) |
| 84 | DECISION | policy-engine | 2026-10-15 06:51:58 UTC | T-a64c-3: BLOCKED · blocked by verdict_pass |
| 83 | DECISION | policy-engine | 2026-10-15 06:51:58 UTC | T-a64c-4: NEEDS_APPROVAL · $150.00 |
| 82 | DECISION | policy-engine | 2026-10-15 06:51:58 UTC | T-a64c-1: APPROVED · $40.00 |
| 81 | DECISION | policy-engine | 2026-10-15 06:51:58 UTC | T-a64c-2: APPROVED · $40.00 |
| 80 | VERDICT | verifier | 2026-10-15 06:51:54 UTC | T-a64c-3: fail · aspect ratio · short-03.mp4: 16:9 (1920×1080); spec asks for 9:16 |
| 79 | VERDICT | verifier | 2026-10-15 06:51:54 UTC | T-a64c-4: pass · All measurements matched the specifications successfully. |
| 78 | VERDICT | verifier | 2026-10-15 06:51:53 UTC | T-a64c-1: pass · All measurable requirements met successfully. |
| 77 | VERDICT | verifier | 2026-10-15 06:51:53 UTC | T-a64c-2: pass · All measurable specifications for file count, aspect ratio, duration, and width were successfully met. |
| 76 | DELIVERY | contractor | 2026-10-15 06:51:51 UTC | T-a64c-4: thumb-pack-v1-4.zip 1920×1080 |
| 75 | DELIVERY | contractor | 2026-10-15 06:51:51 UTC | T-a64c-3: short-03.mp4 1920×1080 |
| 74 | DELIVERY | contractor | 2026-10-15 06:51:51 UTC | T-a64c-1: short-01.mp4 1080×1920 |
| 73 | DELIVERY | contractor | 2026-10-15 06:51:51 UTC | T-a64c-2: short-02.mp4 1080×1920 · note stored as untrusted data |
| 72 | TASK | ops-agent | 2026-10-15 06:51:47 UTC | T-a64c-4 → ana · thumb-pack-v1 · planned by gemini-3.8-flash |
| 71 | TASK | ops-agent | 2026-10-15 06:51:47 UTC | T-a64c-3 → theo · short-edit-v1 · planned by gemini-3.8-flash |
| 70 | TASK | ops-agent | 2026-10-15 06:51:47 UTC | T-a64c-2 → theo · short-edit-v1 · planned by gemini-3.8-flash |
| 69 | TASK | ops-agent | 2026-10-15 06:51:47 UTC | T-a64c-1 → theo · short-edit-v1 · planned by gemini-3.8-flash |
| 68 | PROPOSAL | assistant | 2026-10-15 06:51:02 UTC | Goal proposed through the gateway: "Ship 3 short videos this week (one task per short, quantity 1 each) and one thumbnail pack." |
| 67 | MANDATE | creator | 2026-10-15 06:51:02 UTC | Signed mandate m-maya-20261015-a64c: rate card, $300.00 weekly cap, approval over $100.00 |
| 66 | CONFIRMATION | webhook-handler | 2026-10-15 06:47:34 UTC | SUCCEEDED · dk-7a0df8ae… · status read from the PayPal API |
| 65 | CONFIRMATION | webhook-handler | 2026-10-15 06:47:34 UTC | SUCCEEDED · dk-dbed2033… · status read from the PayPal API |
| 64 | PAYOUT | policy-engine | 2026-10-15 06:47:02 UTC | PayPal Payouts batch 7MZE7D3VBJGXC · $80.00 · 2 item(s) |
| 63 | DECISION | policy-engine | 2026-10-15 06:46:58 UTC | T-0324-4: NEEDS_APPROVAL · $150.00 |
| 62 | DECISION | policy-engine | 2026-10-15 06:46:58 UTC | T-0324-3: BLOCKED · blocked by verdict_pass |
| 61 | DECISION | policy-engine | 2026-10-15 06:46:58 UTC | T-0324-1: APPROVED · $40.00 |
| 60 | DECISION | policy-engine | 2026-10-15 06:46:58 UTC | T-0324-2: APPROVED · $40.00 |
| 59 | VERDICT | verifier | 2026-10-15 06:46:55 UTC | T-0324-4: pass · All measurable specifications met successfully. |
| 58 | VERDICT | verifier | 2026-10-15 06:46:55 UTC | T-0324-3: fail · aspect ratio · short-03.mp4: 16:9 (1920×1080); spec asks for 9:16 |
| 57 | VERDICT | verifier | 2026-10-15 06:46:55 UTC | T-0324-1: pass · All measurable requirements met. |
| 56 | VERDICT | verifier | 2026-10-15 06:46:54 UTC | T-0324-2: pass · All measurable requirements from the spec are fully met. |
| 55 | DELIVERY | contractor | 2026-10-15 06:46:51 UTC | T-0324-3: short-03.mp4 1920×1080 |
| 54 | DELIVERY | contractor | 2026-10-15 06:46:51 UTC | T-0324-1: short-01.mp4 1080×1920 |
| 53 | DELIVERY | contractor | 2026-10-15 06:46:51 UTC | T-0324-2: short-02.mp4 1080×1920 · note stored as untrusted data |
Sandbox only: PayPal moves all money and funds never sit with this app. The server holds every signing key, so receipts give tamper evidence and attribution, not legal non-repudiation. Screening uses a fictional demo list. Source: github.com/createnexxusvision/Agent-Two-Hand-HandOff