Skip to content

Using Floatless

Send money

How a payment works, every check that runs before you sign, and what to do when one is declined.

On this page

Sending money pays a wallet address on Monad from the stablecoins in your Floatless wallet. Before anything reaches your wallet to sign, Floatless checks the payment against your spending rules and your real balance, and for regulated dollars, against both people's identities.

Before your first payment

You need three things in place.

  • Have dollars in your wallet. With none, the Send sheet says Nothing to send yet and offers Add money. See Add money.
  • Set your spending rules. Until you do, every payment is declined, and the Send sheet says so up front with a Set spending rules button. You can also tap your avatar on Home, then Spending rules. See Spending rules.
  • Keep some MON, Monad's own currency, to pay the network fee. See Get MON for network fees.

Sending works the same way on Monad mainnet and testnet. Regulated dollars are the one testnet-only currency.

Send a payment

  1. On Home, tap Send. The sheet opens straight on Send money. Bank transfers aren't available yet, so the sheet has no bank option.
  2. Add the recipient's wallet address or ENS name. Tap Paste, tap Scan QR to scan their code, or type it. Up to three Recent recipients from your past sends sit below, and tapping one fills in its address. A valid address shows "Address looks right. Payments can't be reversed, so check it matches." Tap Continue.
  3. Type the amount on the keypad, in dollars. The line under it reads Pay with and a coin, with your balance in it. Tap it to choose another coin. 25%, 50% and Max fill in that share of your balance. Tap Review.
  4. Look over To, Pay with, Network fee and Payment check while Floatless runs its checks. Network fee reads "Up to X MON", with a dollar estimate when Floatless has a MON price, and you pay it on top of the amount. Payment check reads "Checking your spending rules…", then "Passed your spending rules" or "Didn't pass, see below". When it passes, the button reads Send $X with your amount. Tap it.
  5. Approve with your passkey, or let Floatless sign for your email wallet. With a passkey, you can turn on Skip Face ID for 10 minutes first, and later payments up to $25 in total go through without Face ID. See Payment sessions and How signing works.
  6. The screen shows Sending while Monad confirms the payment, then Sent. Tap Done.

A few details help along the way.

  • Type a full 0x address or an ENS name such as name.eth. If a 0x address is the wrong length or isn't valid, the sheet says "That isn't a wallet address. It should start with 0x and be 42 characters long." See Send to an ENS name.
  • Scanning accepts a plain address or a simple ethereum: address link. Floatless ignores a link for a different network, or one that carries extra details such as an amount.
  • Amounts are always in dollars, and the keypad takes up to 2 decimal places. Floatless counts each stablecoin as $1 here, so $10 sends 10 USDC.
  • Review stays off while the amount is more than your balance in the coin you picked, and the screen warns you with a line like "More than your USDC balance". On the review screen, tap To or Pay with, each marked Change, to change them.
  • If the wallet has no dollars, the sheet says Nothing to send yet with Add money. If your spending rules aren't set, or have expired, it says that up front with Set spending rules.
  • If your wallet doesn't have enough MON for the fee, the review screen keeps the send button off and shows Add MON.

Send to an ENS name

ENS names live on Ethereum, so when you type a name like alice.eth, Floatless looks it up there and shows the name, the full 0x address and where that address came from before Continue turns on. The review screen and the Sent screen show the name, with the address under it on review. The payment always goes to the address you saw.

Floatless picks the first address the name has set, in this order.

  1. The address the name set for this Monad network. The note says the name "set this address for Monad".
  2. The name's default address for every EVM network, which covers Monad. The note says the name "uses this address on every EVM network, Monad included".
  3. The name's Ethereum address. Most names only set this one. A regular wallet has the same address on Monad, so the note says so and asks you to check with the owner before sending a large amount.

A smart-contract wallet such as a Safe is a different case. Its address on Ethereum may not exist on Monad, and nobody may be able to move money sent there. If a name's only address is a contract on Ethereum with nothing at that address on Monad, Floatless refuses it with "points to a smart-contract wallet on Ethereum that may not exist on Monad, so money sent there could be lost. Ask for their Monad address instead."

While the lookup runs, the sheet says "Looking up alice.eth…". A name with no address says "alice.eth doesn't point to a wallet address." If ENS doesn't answer, the sheet says "ENS didn't answer. Try again, or paste the 0x address."

What Floatless checks before you sign

Each time you reach the review screen, the Floatless API checks this exact payment.

  • Your spending rules have to be signed and registered. Floatless reads the spending-rules registry on Monad to confirm the rules it has on file are your current version and still active.
  • The currency has to be one of your Currencies you can send, and the amount can't be more than Each payment up to.
  • The payments you've sent with Floatless today, plus this one, can't go over Each day up to. The day starts at midnight UTC, and payments from all your devices count.
  • After the payment, what's left of that currency has to stay at or above your floor. The floor is the larger of your Always keep at least amount and the total protected floors of your active savings goals in that currency.
  • Floatless reads your balance of that currency from Monad, so the check uses what your wallet really holds.
  • Floatless estimates the network fee at the current price and adds 20% headroom. That's the maximum network fee you see.
  • For aUSDC on testnet, Floatless asks Cleanverse whether both wallets hold a verified identity. See Regulated dollars.

If any check fails, Payment check reads "Didn't pass, see below", the reason appears under the review rows in plain words, and the send button stays off. A passing check lasts about a minute. The review screen fetches a fresh check by itself when one runs out, so the button comes back after a moment.

When a payment is declined

The API calls your spending rules a mandate, and the app turns its messages into plain sentences. If a rule applies, a Set spending rules or Change spending rules link sits under the message and opens the Spending rules screen. When several reasons apply, the screen joins their sentences, except that missing rules hide every other reason and a low balance hides the floor message it always triggers.

At review

What the screen says What it means What to do
You don’t have enough USDC for this payment. You hold less of this coin than the amount. The message names the coin you picked. Send less, pay with another coin, or add money.
This would take you below the balance you chose to keep or a goal’s protected amount. The payment would leave less than your floor in this coin. Send less or pay with another coin. To change the floor, edit your rules or goals.
This is more than your limit for one payment. Send less or change your rules. The amount is over Each payment up to. Send less, or tap Change spending rules and raise the limit.
This would go over your daily limit. Send less or change your rules. Today's payments plus this one go over Each day up to. Send less, wait until after midnight UTC, or tap Change spending rules.
Your spending rules don’t include USDC. Pick another dollar or change your rules. The coin isn't one of your Currencies you can send. The message names the coin you picked. Pay with another coin, or tap Change spending rules and add it.
Set your spending rules first. Floatless checks every payment against them, and it takes about a minute. You haven't set spending rules, the rules Floatless has on file aren't the version registered on Monad, or the registry doesn't show them as active. Tap Set spending rules, then Review rules and Approve and register.
Your spending rules have expired. Set them again to keep paying. Your rules reached the end of the period you chose. Tap Set spending rules and register new rules.

If your wallet can't cover the network fee, the screen says "You need a little MON to pay the network fee" and names how much to add. The send button stays off. Tap Add MON to open Add money, then come back to the review.

A message the app has no plain sentence for, such as one about a Cleanverse identity, appears as the API wrote it. Those messages are explained in Regulated dollars.

While signing and sending

If a payment stops after you tap Send $X, the status screen shows Didn't send with one of these messages.

Message What it means What to do
Network fees changed. Return to review and approve the new fee ceiling. The maximum fee went up after you reviewed it, or the payment no longer passes its checks. Nothing was signed. Tap Try again, check the new fee, and tap Send $X again.
Authorization expired. Review and try again. The check ran out of time. If it says "expired while signing", it ran out while you were signing. Tap Try again and send again.
The signed transaction does not match the reviewed transfer. What got signed differs from what you reviewed, so it wasn't sent. Tap Try again and start again.
The transaction was not signed by the sending wallet. The signature didn't come from your wallet, so it wasn't sent. Tap Try again and start again.
This payment failed on Monad, so no money moved. A network fee may have been charged. Monad rejected the transaction. Your stablecoins didn't move, but the fee may be spent. Tap Try again, which takes you back to review for a fresh check.

When the screen says "Nothing left your wallet.", the payment never reached Monad and Try again returns you to review for a fresh check.

How signing works

How you sign depends on how you signed in. See Keys and security for more.

  • With a passkey, your phone asks for your passkey when you tap Send $X. The app rebuilds your wallet key on the phone for this one payment, then wipes it. The key never leaves your phone. If you turned on Skip Face ID for 10 minutes, the key stays in memory for that payment session instead, and is wiped when it ends. See Payment sessions.
  • With email, your wallet is an embedded wallet from Privy, and Floatless signs for it through its API as soon as you tap Send $X. There's no second prompt.

Right before signing, the app gets one more fresh check and stops if anything changed, including a higher fee. The transaction carries the fee limit from that check, so it can't cost more in fees than the maximum you saw.

After signing, and before anything goes to Monad, the app reads the signed transaction back. It checks the network, the token, the recipient and the amount, the transaction's sequence number and fee settings, and that your wallet is the one that signed. If anything differs from what you reviewed, nothing is sent.

After you send

  1. The app saves the transaction's ID, called its hash, in your phone's secure storage. Then it sends the transaction to Monad.
  2. It waits up to a minute for Monad to confirm the payment.
  3. The Floatless API reads the settled transaction from Monad and checks that it moved the right token from your wallet to the recipient, for the right amount. Only then does the payment go into your history.
  4. The screen shows Sent with the amount and the recipient, the transaction hash, which you can tap to copy, and View on Monadscan, which opens the payment on Monadscan. Tap Done to close the sheet.

If a send times out

A timeout doesn't mean the payment failed. Monad's RPC can't see a transaction that's still waiting to be included, so a slow payment looks the same as a lost one. If Monad hasn't confirmed it within a minute, or your connection drops, the screen shows Didn't send with the transaction hash and the note "This payment may still go through. Check its status before sending again."

  • Tap Check status. The app looks for the transaction on Monad again and records it once it's confirmed. It never sends a second payment.
  • Tap Send a new payment instead if the earlier one seems stuck. The review screen says Replacing your earlier payment, and the new payment is signed with the same nonce, the slot in your wallet's transaction order, as the earlier one. Monad can only include one transaction per slot, so at most one of the two goes through and you can't pay twice. If the earlier payment landed in the meantime, the app records it and says "Your earlier payment went through after all, so this one wasn't sent."
  • Tap View on Monadscan to look at the transaction yourself, or tap the hash to copy it.

If you close the sheet, the hash stays saved on your phone. The next time you open Send, you go straight back to that payment under the title Earlier payment, with "Your last payment is still being confirmed. Check its status before sending another." Saved payments are kept separately for each network and each account.

The app only treats a saved payment as unsent when that's certain:

  • Monad confirms another transaction from your wallet in the same slot, so the saved one can never be included. The app clears it and says "Another transaction from this wallet took this payment's place on Monad, so it can't go through. Nothing was sent."
  • The network refused the payment when the app sent it, for example because there wasn't enough MON for the fee. The app clears it, says "Nothing left your wallet." and shows Try again.
  • The payment failed before its hash was saved, so nothing reached Monad.

A dropped connection while sending isn't proof of anything, because Monad may have the transaction, so the payment stays saved and you can check it. If Monad reports that the transaction failed onchain, the app clears it and the screen says "No money moved, though Monad may have charged a network fee. You can try again." with Try again. The hash and View on Monadscan stay on screen so you can see the failed transaction. Try again always takes you back to review for a fresh check.