Agent payments
When both sides are software, prose is not a contract.
A service asks another service to pay. Nobody is going to read the terms, so every one of them has to be a field a machine can check, and every refusal has to be a code a machine can act on.
Nothing in prose
Most payment formats assume a person is looking at the screen.
They allow free text where a value belongs, leave the deadline to a convention, and describe failure in a sentence. That works when a human reads it and shrugs. An agent cannot shrug, so it either guesses or stops, and both are bad outcomes at machine speed.
Every term is a field with one meaning
Amount, asset, deadline, destination and conditions are typed, and the encoding of each is fixed. Two agents that never met agree on what the request says, character for character.
A reason code, not an error message
Knowing that a payment was refused is not enough. Knowing whether to retry, escalate to a person, or stop is what lets an agent behave sensibly without supervision.
A request cannot claim its own conditions are met
It declares what must be true. The paying side checks that at the moment it decides, which is the only moment when the answer is worth anything.
The request never sets its own ceiling
Per counterparty caps, daily ceilings and escalation thresholds live in the paying agent's own policy. A request that could raise its own limit would be a request worth forging.
How it works
Ask, evaluate, act.
01
Ask
- The asking service builds a typed request
- Conditions are declared by reference
- An expiry bounds how long it can be acted on
02
Evaluate
- The paying agent checks the request against the profile
- It checks the declared conditions against current state
- It applies its own policy, which the request cannot see
03
Act
- Pay, refuse with a code, or escalate to a person
- Every outcome is recorded locally
- The asking side learns which of the three happened
How to start
Wire two services together.
One asks, the other pays, and both keep a record of why. This situation uses Request, Verify, Observe and Reconcile.
npm i @payvol/core @payvol/qr version 0.4.0
Payvol Request Payvol Verify Payvol Observe Payvol Reconcile Open the app Next: Validator and node services