Designed so there is little to steal.
The safest money is money nobody else can move. Vesta's design starts there.
Non-custodial settlement
A payment is a single blockchain transaction that moves USDC from the customer's wallet directly to the merchant's wallet and the Vesta fee wallet. The Vesta contract instructs the split but never holds a balance — before and after every payment, its USDC balance is zero. There is no “withdraw” because there is nothing to withdraw.
Payments sent from an exchange
Every payment link also has its own deposit address, so a customer can send USDC to it straight from an exchange. The address is computed from the payment reference and the merchant's wallet; there is no private key for it, at Vesta or anywhere. Whatever arrives there is forwarded by the deposit contract to the merchant (97%) and the fee wallet (3%) — the contract has no other destination, and anyone can trigger the forward. Too much sent is forwarded to the merchant as well; too little stays waiting until the rest arrives.
Deposit contract on Base: 0x01D5a80688EFF42c0c88453c463C9ea69fC06eDD
One key, and it cannot move money
Vesta's backend reads the blockchain. The only key it holds pays the network fee to trigger those forwards; it cannot send anyone's USDC anywhere except to the merchant and the fee wallet, and it never signs a customer or merchant payment. Customers sign in their own wallet; Vesta never asks for seed phrases or private keys.
A small, fixed contract
The payment contract is about sixty lines of code. The USDC address, fee percentage and fee wallet are fixed when it is deployed; there is no owner, no upgrade mechanism and no pause switch. A payment either completes entirely or reverts entirely — there is no state where the fee was taken but the merchant was not paid.
Current contract on Base: 0xA420b90709c087089a3c981E7EC93a30D50bE001
Every payment is verified twice
Before an invoice is marked paid, Vesta checks the on-chain event against the invoice record — right contract, right merchant wallet, right amount, right fee split — and waits for several block confirmations. A payment that doesn't match is flagged for review rather than accepted.
Duplicate protection
Each invoice has a random reference; the contract refuses a second payment for the same reference, and the database refuses a second record for the same transaction.
Merchant sign-in
Merchants sign in with a one-time email link — no passwords to leak. API keys are stored only as one-way hashes.
If Vesta disappears
Nothing above depends on us staying in business: paid money is in your wallet, and a payment waiting at a deposit address can be forwarded by anyone. The full answer, with step-by-step instructions, is on what if Vesta disappears?.
Check it yourself
Everything above is verifiable. These links go to the blockchain and to our published documents, not to a badge vendor. The full source of all three contracts is on the contracts page.
Responsible disclosure
Found something? Email support@vestapayments.com. We will respond quickly and credit you if you wish.