ECM-39Recommended
Hold risky orders before the label is bought
Score each order on shipping signals as well as the payment risk score, and hold orders above a set score before a label is bought. Review each held order within one business day.
How to do it
The provider scores the card, as Screen risky payments before fulfilment describes. You know more about the parcel. Add points for a delivery address far from the billing country, a known parcel forwarder, and express shipping on a first order. Add points for resold goods such as electronics and gift cards, and several cards tried on one order. Feed the new-account score from Score every sign-up for risk. Store the signals with the score so a reviewer sees why. A held order keeps its stock reserved, as Reserve stock at checkout and release it on timeout describes, with an expiry that covers the review. Card testing is stopped earlier, by Stop card testing on your checkout.
Examples
TypeScript example
const SIGNAL_POINTS = { forwarderAddress: 40, countryMismatch: 25, expressOnFirstOrder: 15, resaleCategory: 15, cardsTried: 10 };
const HOLD_AT = 50;
export function shippingRisk(signals: Record<keyof typeof SIGNAL_POINTS, boolean>) {
const score = Object.entries(signals).reduce((sum, [name, on]) => sum + (on ? SIGNAL_POINTS[name] : 0), 0);
return { score, hold: score >= HOLD_AT, signals };
}
Python example
SIGNAL_POINTS = {"forwarder_address": 40, "country_mismatch": 25, "express_on_first_order": 15, "resale_category": 15, "cards_tried": 10}
HOLD_AT = 50
def shipping_risk(signals: dict[str, bool]) -> dict:
score = sum(points for name, points in SIGNAL_POINTS.items() if signals.get(name))
return {"score": score, "hold": score >= HOLD_AT, "signals": signals}
How to check
A test order with a forwarder address and a card from another country is held, and no label is bought for it. A daily query finds no held order older than one business day without a decision.
Related rules
- PAY-44 Screen risky payments before fulfilment in Payments and billing
- TNS-11 Score every sign-up for risk in Trust and safety
- ECM-8 Reserve stock at checkout and release it on timeout in E-commerce and fulfilment
- PAY-43 Stop card testing on your checkout in Payments and billing
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/ecommerce/fraud-and-delivery-proof/order-fraud-signals">Agent Wranglers e-commerce and fulfilment playbook</a>. In code you write, add a comment next to it with the same link.