The manual, in the order a judge reads it: what this is in five lines, then why it was designed this way — the problem behind three of its features — then one dollar followed through the whole product — approved, held, and given back — using a real record from this sandbox. Then what is real, what is simulated, what was designed and deliberately not built, how to run it, and what every word on the screen means.
This product was not designed from a feature list. It was designed from a place: Venezuela, where I live — a bimonetary economy where money has two jobs no single balance can do at once: dollars to hold value, bolívares to spend it. The three features below are the schedule an agent keeps whether or not you remember it, the balance that would otherwise lose value while it waits, and the exchange the country runs every day without PayPal.
Services your agent keeps paid on schedule — Spotify, Netflix, Prime Video. You add one once; it runs on its own until you take it off.
Why it exists · The one payment where forgetting costs money — and where asking again every month is exactly the rubber stamp this product exists to replace. The date is stored as the order's own condition, so the schedule sits under the same envelope and the same server judge as everything else: drafted first, approved once, settled on the day it is due and refused before it.
Converts a balance that would otherwise lose value in a devaluing currency into PYUSD the moment it arrives — and converts it back at the moment you actually spend.
Why it exists · Designed for Venezuela, where I live: holding bolívares is a decision to lose value slowly, and nobody should have to watch a rate to keep what they earned. It is a switch rather than a default — not every user lives in an inflationary economy — and every rate it quotes is read from the published BCV feed at the moment of the conversion, never remembered. The deposit is a labelled test input and the rail that spends it back is a preview, as the honesty list below says; the rate and the arithmetic are real.
USD → VES and back, with PayPal holding one side — how I intend to use PayPal agent for the exchange this country runs every day.
Why it exists · Venezuela is bimonetary in practice — dollars to hold value, bolívares to spend it — and the exchange between them runs every day in both directions, to an equivalent I estimate in the billions of dollars a month — an estimate, not a measurement. Almost all of it moves through channels PayPal does not participate in today: Zelle, and direct deals between people. This build adapts that local problem to what PayPal can already do: the dollar leg is a real PayPal order held by PayPal, the bolívar leg happens between the two people bank to bank, and neither side goes first — the dollars are captured only when a person confirms the bolívares arrived, and released when the window closes. A market of this size that PayPal does not serve is a market PayPal gives away.
How this answers the brief.
The joint project. PayPal AI Agent is how I imagine PayPal's next evolution: the button that approves every transaction becomes the envelope that approves once — and a market that today settles on trust gets the judgement, the hold and the record that every other payment in this product already has.
Every screen in this product is a view of the same four states. An order is drafted and judged; if it is approved, PayPal holds the money — the balance does not drop, the money is simply marked as spoken for — and from there there are exactly two endings.
A real one, from this sandbox — read this and you have read the product.
On 9 October 2026, a $50 pledge was made to Supermercado Express — new butchery aisle (a campaign asking for $50,000; $42,500 raised at the time).
3LL9669283585604Y and authorization 1WU26270J4621264S, and the $50 became Reserved: still in the balance, marked do-not-spend.On the dashboard today it reads Returned · $50, it earns nothing (a refund is not performance), and the $50 is spendable again. The money never left the account, and every screen said so at every step.
The campaign names and the ids above are real records of this sandbox account. The money is sandbox money: real in every mechanism, worthless in every currency.
How much can you actually spend? — the first card on Overview — is the same story told as a position. It shows two ledgers and a promise, and the reason they are separate is the whole discipline of this product:
In PayPal
What PayPal holds, split into what is free and what your own orders have set aside.
Why it is separate · A hold moves nothing, so committed money is still inside the balance. Adding the two would count the same dollar twice.
Invested · PayPal AI Crowdfunding
Pledges, in their three states: paid (the business has it), reserved (set aside, still inside the balance above), returned (released back).
Why it is separate · A business that has not received the money must not appear to have. This ledger is never added to the first, and it carries its accruing return as a promise, not as cash.
Standing commitments
Allowances that run on their own — a subscription, a scheduled transfer — listed per currency.
Why it is separate · They hold nothing today, so they belong to neither ledger. Hiding them would be the opposite lie: this is money that will leave without anybody approving it again.
Awaiting your approval
Orders drafted and judged, waiting for a human.
Why it is separate · Counted, never counted as money: nothing is held until you approve, and what you approve settles only when its condition holds.
Every figure on that card is read from PayPal on each page load, and re-read after anything moves money — and currencies are never added together: $20 and 15 units of another currency are not a sum of anything.
Three lists, kept apart — because the difference between them is the whole argument of the product. Nothing is presented as finished that is not.
The repository is written so that a judge who clones it gets a working app: the Enterprise features fall back to Community when there is no licence key, and the pages that need credentials say so rather than rendering an error.
git clone https://github.com/xenwithcode/paypal-ai-agent-gateway.git cd paypal-ai-agent-gateway npm install cp env.example .env.local # PayPal sandbox keys + Gemini key npm run dev # http://localhost:3000
Without credentials the app still opens: it says which figures are demo figures, and it refuses to invent the ones it cannot read. Tests run with npm test and need no keys at all.
This product invented no words — but it uses a few precisely, and a screen that assumes the reader already knows them is a screen that loses them. Hovering any of them in the app gives the same sentence.
The full policy — what the agent may do, what is built, and what is only designed — is in SECURITY.md at the repository root.
The line this product opens with, and the one it closes on: the agent requests, the server judges, the human approves. Everything above is an attempt to make that true in code rather than in a diagram — and to say out loud, on the same screen, where it is not true yet.
Written by Xavier Nuñez (xensite) · github.com/xenwithcode/paypal-ai-agent-gateway · PayPal AI Hackathon 2026. Every figure on this page is either stable, dated, or labelled with where it came from.