Final Notes

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.

Written 3 November 2026

1 · The thesis, in five lines

  1. 1An agent that spends money has no equivalent of a purchase order. It asks for approval per transaction, so a busy agent turns consent into a rubber stamp.
  2. 2This build converts **per-transaction consent into per-policy consent**: you approve a ceiling once, and the server holds every later attempt to that ceiling.
  3. 3The envelope is a document, not a dialog: what may be bought, up to how much, to whom, in what window, and under what condition.
  4. 4The agent never holds a credential. Money moves when a human approves it inside PayPal's own UI, and the server judges every attempt before PayPal sees anything.
  5. 5Two rails: any currency for anyone, and PayPal AI Crowdfunding — financing a real business in Venezuela from $20, paid in USD.

2 · Why it is designed this way — one problem, three features

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.

Recurring Payments

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.

FX Shield · Protect & grow

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.

Pay in bolívares

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.

  • Build something ambitious — an idea (a purchase order an agent cannot break) turned into a working project using PayPal and AI: real sandbox orders, a server that judges every attempt before PayPal sees it, a model in two voices, and grids that draw money they did not invent.
  • Explore what's next — new ways people, businesses and agents interact with money: consent given once per policy instead of once per transaction, an agent that keeps a schedule, a balance that defends itself, and an exchange where neither side has to go first.
  • Show what you can build — a live URL, a repository, and four appendices: every figure sourced or labelled, and every simulated rail saying so on the screen that simulates it.

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.

3 · How the money moves — one dollar, start to finish

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.

Awaiting approval
Reserved
Captured
Released
Awaiting approval
Drafted and judged. Nothing is held and nothing can spend.
Reserved
PayPal set the money aside against this order. It is still in the balance, marked do-not-spend.
Captured
The condition held and the money moved. Terminal.
Released
The hold was cancelled before it settled. The money came back. Terminal.

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).

  1. 1 · Drafted. The request named the campaign, so it was judged against the showcase the server holds: $50 is inside the $20–$1,000 band, and inside what the campaign was still missing.
  2. 2 · Approved in PayPal. The human pressed the button inside PayPal — no password, login or key ever reaches this app. PayPal issued order 3LL9669283585604Y and authorization 1WU26270J4621264S, and the $50 became Reserved: still in the balance, marked do-not-spend.
  3. 3 · Not settled. A pledge is captured only when its campaign reaches its goal — that is the promise the card prints above the button, enforced on the server. This campaign was $7,500 short.
  4. 4 · Given back. The hold was cancelled — Release is one click in the Protection column, and the agent does the same when a campaign closes short — and the $50 returned to the balance.

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.

4 · Your dashboard, read out loud

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.

5 · What is real, what is simulated, what was never built

Three lists, kept apart — because the difference between them is the whole argument of the product. Nothing is presented as finished that is not.

What is real

Money, in the sandbox
Orders are created, authorized and captured against a live PayPal sandbox account — real ids, real authorization expiry, real refusals.
Every judgement
Ceiling, window, recipient, mode, a campaign's band and its goal are decided on the server, before PayPal is asked for anything.
The ledger
Activity is PayPal's own transaction search; balances are re-read after anything moves money, so the cards cannot drift from the account.
The model, in two voices
Gemini for the typed intent, Gemini Live for speech; both call tools the browser executes through the same handlers the buttons use.
The exchange rate
Read from the official BCV feed. If it cannot be reached the app says so instead of converting at a plausible number.

What is simulated

The product catalogue
Labelled `demo-catalog` on the page. No free source of real prices exists; pretending one does is the kind of claim this project refuses.
The four funding campaigns
Labelled on every row: real structure and coordinates, no audit behind them. The pledge in section 3 is a real sandbox record against one of them.
The Pago Móvil rail
A preview, and it says so on screen: no bank is connected in this build, so no money moves. The rate it shows is real.
The sample rows
The dashboard seeds itself so a first-time reader has something to look at. They wear a SAMPLE chip in the row itself, and are replaced rather than merged with real ones.

What is not built yet

Standing consent (level 3)
Charging later without asking again, through PayPal's own Billing Agreement, inside ceilings and revocable in one action. Designed in SECURITY.md, deliberately not shown as built.
Real subscriptions
The recurring page lists real billing plans, but createSubscription is not wired: the standing commitments on Overview are allowances held in the local store.
Authentication
The store and the API are localhost-only. Required before this is exposed to the internet — the same roadmap item as public hosting.
The public release
Hosted on Google Cloud, with the architecture diagram refreshed and the repository made public.

6 · Run it in three commands

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.

7 · The vocabulary, in one sentence each

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.

Ceiling
The most this order may ever cost. Enforced by the server, not by an attribute on an input somebody can edit.
Condition
What must be true before money moves, written in words — price <= 60, by Friday. Empty means it may spend now.
Hold
The moment PayPal sets money aside. The balance does not drop; the money is simply marked as spoken for.
Reserved · Captured · Released
The three things that can happen to a hold: set aside, settled, or cancelled. Two of them are endings.
Standing commitment
An allowance that runs on its own — a subscription. It holds nothing today, so it is shown apart from the ledgers and never added to them.
Autonomous · Copilot · Manual
How much the agent may settle alone: everything it can prove, nothing without a human, or ask every time.
Sample
A demonstration row. Nothing was bought and nothing is held; it exists so the screen has something to show before you use it.

8 · Security posture, in four layers

  1. 1 · The model is told, never trusted. It receives declarations of what it may do and answers with a typed envelope; every call is validated on the way out before any handler runs.
  2. 2 · The server judges. Ceiling, recipient, window, mode, campaign band and goal are decided server-side, before PayPal is asked for anything. The voice gets no wider door than the buttons.
  3. 3 · The human approves in PayPal. No password, login or key ever reaches the model, the log or the bundle — the payment is approved inside PayPal's own UI.
  4. 4 · Nothing is claimed that is not built. Consent as a revocable record, and standing authorization through PayPal's Billing Agreement, are designed in the security notes and deliberately not shown as working.

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.