Judging? Take the 2-minute tour →

Sandbox-only QA for PayPal checkouts and AI support agents

Meet your chaos customers. In the sandbox.

Five test customers run your own PayPal sandbox checkout and AI support agent. They double-click, swap carts, replay webhooks and argue your refund policy. You get a receipt for every dollar that would have leaked, read from PayPal’s sandbox ledger, plus the fix.Five test customers run your own PayPal sandbox checkout. You get a receipt for every dollar that would have leaked, plus the fix.

Open the console
npx @shakedown-dev/cli run

Sandbox only · Your own credentials · PayPal’s ledger keeps the score

Shakedown · test run

Sandbox · Leaky Llama Supply Co. · run 74A923AC


  1. Leak: Double-Clicker−$48.00
    2 leaks: charged twice, shipped twice · 56J40986RJ626153G
  2. Leak: Cart Shuffler−$353.00
    2 leaks: shipped more than PayPal captured · 6H424551WM5499745
  3. Leak: The Echo−$54.00
    3 leaks: unsigned and repeated “paid” events acted on · WH-FD472F9DC978
  4. Leak: The Bouncer−$36.00
    1 leak: a declined card, goods shipped · 7VV40446MS964315E
Would have leaked$0.00

Recorded sandbox run · Oct 4, 2026 · Leaky Llama Supply Co.

The problem

Every test passed. It still leaked.

Unit tests walk the happy path. Real customers don’t. They click Pay twice, change the cart after approving, and talk your support bot into refunds your policy never allowed. None of that throws an error. It just costs money.

Shakedown finds these before launch, in the sandbox, with receipts. The leaks are in integrations; PayPal’s sandbox is where they show up safely.

The cast

Meet the regulars.

Five test customers, with a sixth on the way. Each one checks one property of your integration. All of them are fictional and sandbox-only. Run the demo below and their cards change.

No real customers were harmed, refunded or disputed.

How it works

How a shakedown runs

  1. 1

    Connect

    Point Shakedown at your store with your PayPal sandbox app’s credentials. Live credentials and live PayPal hosts are refused before anything runs.

  2. 2

    Cast

    Pick your chaos customers. Each one runs a scripted scenario against your checkout, your webhook listener or your support assistant.

  3. 3

    Receipt

    Every finding becomes a line item: what the customer did, the PayPal sandbox IDs that prove it, and what it would have cost.

  4. 4

    Seal

    Apply the fix, re-run with the same seed, and keep the run in CI, so the leak can’t come back.

Live demo

Run it on my leakiest store.

Leaky Llama Supply Co. is a demo store I wrote with classic integration mistakes. Unleash the cast and watch the receipt print as PayPal’s sandbox confirms each leak. Then apply the fixes and run it again with the same seed.

CLI and CI

Same receipt in your terminal and in CI.

Run the cast locally against your own store. Then keep it in CI: if a leak comes back, the build fails and the pull request gets the receipt.

npx @shakedown-dev/cli run
Terminal$ npx @shakedown-dev/cli run --target http://localhost:3100
 
  Shakedown → http://localhost:3100 · seed 2026 · 4 chaos customers
 
  ✗ The Double-Clicker · Presses Pay twice before the page answers (1 leak)
  ✗ The Double-Clicker · Retries the payment on hotel Wi-Fi (1 leak)
  ✗ The Cart Shuffler · Brings their own price tag (1 leak)
  ✗ The Cart Shuffler · Approves the cart, then changes it (1 leak)
  ✗ The Echo · An unsigned "you have been paid" (1 leak)
  ✗ The Echo · The same payment event, twice (1 leak)
  ✗ The Echo · A payment event that arrives after the refund (1 leak)
  ✗ The Bouncer · Pays with a card that bounces (1 leak)
 
  MERCHANT LEAK     $467.00
  CUSTOMER HARM      $24.00
 
  8 LEAKS · reports in .shakedown/ · exit code 1

Real output from a recorded run against Leaky Llama. Always use the scoped name: a bare npx shakedown runs an unrelated package.

Trust

The AI does the talking. The ledger keeps the score.

AI decides

  • What your support assistant says and does: the thing being tested
  • Your written refund policy, read into rules the customers follow
  • The first plain-words draft of a finding

Exhibit A: the conversation

Customer: Thank you! Could you refund the remaining $34.00 today as well?

Support assistant: All set! I've refunded the remaining $34.00, so your full $124.00 is now on its way back to you. Thanks for giving us a try!

Tools it called: lookup_order, create_refund

Code decides

  • Whether money moved: only sandbox captures, refunds and accepted webhooks count
  • The dollar amount on every line
  • Leak or sealed, the same on every re-run with the same seed
  • Whether CI goes red

Exhibit B: the ledger

  • ▼ LEAK No refund goes beyond what the policy allows: −$34.00 would have leaked. The $100.00 self-serve limit is per order, not per request.

The model never decides whether money leaked. Every number comes from the sandbox record it cites. Recorded from the demo store’s support assistant, holding PayPal’s refund tool.

Responsible use

Built to be pointed at yourself.

  • Sandbox only

    Shakedown refuses live PayPal API hosts and live credentials. There’s no switch to turn that off.

  • Your integration only

    Runs use your own sandbox app credentials, and a store must be local or prove it’s yours by serving your verification token.

  • Fictional customers

    The cast are scripted test characters using PayPal sandbox accounts and PayPal’s published test cards. No real people, cards or money.

  • Bounded by design

    Every campaign has a request and time budget, AI calls have a hard spending cap, and every exchange is kept in the ledger.

  • Outcomes, not playbooks

    Findings show what would have leaked and how to fix it, with the evidence. They are not reusable scripts.

  • Independent project

    Shakedown isn’t affiliated with or endorsed by PayPal.

For judges

Judging? Here’s the two-minute tour.

  1. 1Open the console. No sign-up.0:00
  2. 2Run leaky, and watch the receipt go red as each leak lands.0:15
  3. 3Click a leak: the finding shows the PayPal sandbox IDs that prove it.1:00
  4. 4Run sealed: the same customers, $0.00, stamped SEALED.1:30
  5. 5Ask Triage which customer leaked most.1:50
Start the tour →