Shopper RTO history
Prior return-to-origin rate for this phone number with this merchant.
Flo / In development
Cash on delivery converts shoppers who would otherwise abandon. It also ships inventory to people who never intended to pay for it. Flo scores that risk at checkout and adds friction only where the risk justifies it.
The problem
Most teams manage return-to-origin with static rules: a cart value ceiling, a pincode blocklist, COD off for new customers. Those rules are indiscriminate. They block genuine buyers to catch a minority, and the shoppers they turn away are the ones most likely to have converted.
Risk is not a property of the cart. It is a property of the shopper, the address, the session, and the history behind them. Flo scores those together and reserves friction for the orders that warrant it.
How it scores
Behavioural signals arrive from a lightweight browser SDK. Transactional and historical signals come from the merchant order record. Scoring happens server-side, so nothing about the model is exposed to the client.
Prior return-to-origin rate for this phone number with this merchant.
Observed RTO rate for the delivery pincode.
COD attempts from the same device or phone in the last 48 hours.
First-time buyer placing an unusually large COD order.
Session duration before reaching checkout.
Pasted rather than typed address, street, city, or pincode fields.
Per-category RTO weighting the merchant configures.
Orders placed in the overnight window score differently.
Switching between prepaid and COD before submitting.
What happens at checkout
Each merchant sets their own thresholds. The default posture is permissive: friction is the exception, not the rule.
Order proceeds with no added friction. Most orders land here.
One-time password to the shopper phone before COD is confirmed.
A token payment that is auto-refunded, proving the payment instrument is real.
COD is withdrawn for this order. Prepaid remains available.
Cold start
A risk engine with no history defaults to suspicion, and that is exactly wrong on day one. Flo caps the score upward for first-time buyers and for merchants still building order volume, so a new storefront never hard-blocks the customers it most needs to keep.
Integration
Native cartridge. Risk evaluation runs server-to-server on signed requests from the payment hook, so no scoring logic sits in the browser.
REST API for evaluation and verification, with a browser SDK under 15KB for the behavioural signals.
The same API-first integration model supports mobile checkout implementations without a separate risk engine.
Status
Flo is not generally available. The core risk engine and staging API are running; challenge flows and the Salesforce Commerce Cloud cartridge are built while merchant-dashboard integration and end-to-end validation continue. We are evaluating design-partner fit with merchants that operate meaningful COD volume.