Your credit ledger, now it collects itself
You write down what each customer takes, as always. Owezy tells you who owes you, sends them the payment link and, when they pay from their bank, crosses them off the ledger for you. You receive wARS or wBRL on Celo.
The problem
- Money arrives without contextA transfer comes in and you have to work out who sent it and why. With a dozen customers, there goes your afternoon.
- A paper ledger doesn't collectIt's great for writing things down, but collecting means chasing every customer and remembering who already paid. One mistake means chasing someone who already paid.
- Your customer won't learn cryptoGetting paid on Celo is cheap and instant, but asking a customer to install a wallet loses the sale. They must pay the way they already do.
Step by step
It all happens in a chat. The agent answers with cards, not paragraphs.
- 1. Write down what you're owed“Juan took 2 dozen medialunas, 12k pesos.” The agent writes it in the ledger with add_to_ledger, and the code validates the amount before saving anything.
- 2. Charge with one tapFrom the ledger, Charge gathers everything the customer owes into one charge, C-0001, with its payment link. If the request repeats in the same turn, it returns the same charge: never a duplicate.
- 3. Your customer paysThe link opens Ripio's on-ramp: your customer pays from their bank, in pesos or with Pix in reais, and your wallet receives wARS or wBRL on Celo.
- 4. The agent watches the blockchainIt reads the wARS and wBRL transfers that reach your address on Celo mainnet. Reading needs no keys and signs nothing.
- 5. It reconciles and tells youEach transfer goes to the pending charge with that exact amount and currency. The charge becomes paid and both sides get a receipt. And you can ask “who owes me?” anytime. It does this on its own: it checks payments every 15 minutes, without being asked, and logs it in the Activity.
An example with numbers
A bakery has two pending charges. The ramp link carries no order number, so the amount is the only clue.
- C-0001 · Juan Pérez · 2 dozen medialunas$85,000
- C-0002 · María Gómez · birthday cake$42,500
A transfer of 85,000 wARS arrives. Only C-0001 is pending with that exact amount and was created before the transfer: it becomes paid and Juan gets his receipt.
If C-0002 were also $85,000, the agent doesn't pick one. It flags the transfer as ambiguous and asks you to assign it. A wrong “paid” is worse than a question.
What is real today
A demo should never pretend to be something it isn't.
- The agent and its toolsAn eve agent on Groq, with the ledger (write, read, charge) and the charges.Works
- Charges and reconciliationCharge numbers, idempotency and payment matching by amount and currency, with tests.Works
- The agent works on its ownIt checks payments every 15 minutes (and once a day as a backup), reconciles, and logs what it did.Works
- Argentina (wARS) and Brazil (wBRL)Each business charges in its country's currency.Works
- Wallet and balanceRead from Celo mainnet. Read-only.Works
- The customer's paymentA simulated checkout, so a demo never moves real money. Ripio's ramp is turned on by configuration.Simulated by default
- Agent identity (ERC-8004) and attribution (ERC-8021)Registered on Celo Sepolia, with the attribution tag in the transaction. Mainnet is pending.Works
How it's built
Four layers. Money lives on Celo, the agent decides, the app talks, and nothing in between holds keys.
- You
- You chat with the agent
- Your wallet receives wARS or wBRL
- The app
- Next.js 16, React 19
- Your chat and the customer's phone, side by side
- The agent
- eve (Vercel), gpt-oss-120b on Groq
- Typed tools, nothing else
- Celo mainnet
- Ripio's wARS and wBRL
- Transfers read with viem
Guarantees
- There are no private keys in the code. The app never signs or moves money.
- Connecting the wallet is read-only: it tells the app where your payments arrive.
- Payments are simulated unless the deploy explicitly turns on the real ramp.
- Money is never a floating-point number: amounts are integers in base units, so a balance never shows money that isn't there.
- Reconciliation never guesses: an ambiguous transfer waits for a person to decide.
For the judges
The five criteria of Ripio's LatAm track, and where to check each one.
Runs on Celo mainnet with real wFIAT
It reads Ripio's wARS and wBRL transfers on Celo mainnet. The first real payment is on its way.Real use of wFIAT and the Celo stack
Ripio's ramp, wARS and wBRL, viem to read the chain, ERC-8004 and the ERC-8021 tag on the agent's transactions.An autonomous, useful agent
It writes down, charges and reconciles from the chat, and checks payments on its own every 15 minutes.UX a real person can use
The owner writes the way they talk; the customer pays from their bank with a link, no wallet or crypto.Clear impact for LatAm
The corner store's credit tab, in pesos and reais: Argentina and Brazil today.Agent identity (ERC-8004)
Agent #627, registered with the ERC-8021 tag in the transaction. On Celo Sepolia today; mainnet pending.