Onchain transfers
The full journey of a payment, from the tap on your screen to a confirmed transfer on Base.
Sending digital dollars in MozaikPay takes a few taps and a short wait. Underneath, your phone and our servers assemble a real onchain transaction, check each other's work, and hand it to a public network. This page follows one payment through that whole path. The sending steps themselves live in Send to a username; this page is about what happens after you tap.
The draft
When you confirm a payment, our servers prepare it. They look up the recipient's username to find their wallet address, check your balance, and draft the exact instruction the network will execute. On networks with smart accounts, that instruction is called a UserOperation, and ours says, in effect, have this account transfer this many digital dollars to that address. The draft also carries gas estimates and a slot for the gas sponsorship approval.
The check
Your phone doesn't take the draft on faith. It rebuilds the instruction on its own, from the amount and recipient you actually entered and contract addresses built into the app, and it computes the instruction's cryptographic fingerprint independently. If the server's draft differs in any way, one wrong byte in the recipient, the amount, or anywhere else, the phone refuses to sign and the transfer stops. A compromised server could interrupt your payment. It couldn't slip a different one under your finger.
The signature
Your PIN or biometrics unlock the spending key for exactly one signature. The key signs the fingerprint and returns to the phone's secure storage without ever leaving the device. Because the fingerprint covers every field of the instruction, nothing about the payment can change afterwards without making the signature invalid.
The network
The signed instruction returns to our servers, which attach the gas approval and submit it to Base. There the network takes over. Your account contract receives the instruction, recovers the signer from the signature, and checks that it matches your current spending key. Only then does it move the USDC, straight from your wallet to the recipient's. If any check fails at any point, the entire operation reverts and nothing moves.
The confirmation
Base produces a new block every couple of seconds, so the wait is short. Our systems watch the network's event log, and the moment your payment is included in a block, the transfer flips to confirmed in your app and the recipient's phone gets the notification. Every transfer has a public transaction hash, and the app links each one to Basescan, the network's public explorer, where anyone can see it for what it is, an ordinary USDC transfer between two wallets.
Confirmed also means final. A public network has no chargeback layer, and nobody, us included, can pull a confirmed transfer back. That's why the recipient and the amount are on the screen you confirm.
What never happens
Two steps are missing from this story on purpose. There's no step where the money sits with us, because it moves straight between wallets, and there's no step where we sign, because no key on our side can. Our servers simply prepare, sponsor, submit and watch.