Order risk
Gateway risk data: WooPayments, Stripe, PayPal and BankBridge
Which order meta keys ChargeWarden reads from WooPayments, the WooCommerce Stripe Gateway, PayPal Payments and BankBridge, and the optional Stripe Radar lookup.
Last updated by the PluginLoom team
Payment gateways already make their own risk checks. ChargeWarden reads what they save on the order and turns it into scored reasons. Every key below was read from each gateway's source code on GitHub on 24 October 2026, at the versions listed.
WooPayments (11.2.0)#
From includes/class-wc-payments-order-service.php in Automattic/woocommerce-payments (opens in a new tab):
| Meta key | What it holds | How ChargeWarden uses it |
|---|---|---|
_charge_risk_level | Stripe's outcome.risk_level: normal, elevated or highest | Elevated or highest risk rule |
_wcpay_fraud_outcome_status | allow, review or block from WooPayments fraud protection rules | Gateway review rule when review or block |
_wcpay_early_fraud_warning | An early fraud warning from the card issuer | Gateway review rule |
WooCommerce Stripe Gateway (11.1.1)#
The Stripe gateway (opens in a new tab) does not save Radar's risk level or score on the order. It reads outcome.type while processing the charge, and when Radar opens a review it moves the order to On hold and saves _stripe_status_before_hold. The charge ID is the order's transaction ID.
ChargeWarden therefore:
- scores "Radar opened a review and the order is on hold" from
_stripe_status_before_hold, and - optionally (Settings > Order risk > "Read Stripe Radar risk from the Stripe API", off by default) asks Stripe once per order for the charge's
outcome.risk_levelandoutcome.risk_score, using the secret key already saved in your Stripe gateway settings. The answer is cached on the order. You can supply a different key with thechargewarden_stripe_secret_keyfilter.
WooCommerce PayPal Payments (4.2.0)#
From modules/ppcp-wc-gateway/src/Gateway/PayPalGateway.php in woocommerce-paypal-payments (opens in a new tab):
| Meta key | What it holds | How ChargeWarden uses it |
|---|---|---|
_ppcp_paypal_fraud_result | avs_code, cvv2_code, response_code (card payments only) | Gateway review rule when the security code did not match (N) or the address did not match (N, C) |
_ppcp_paypal_3DS_auth_result | 3D Secure result including liability shift | Gateway review rule when liability did not shift |
_ppcp_paypal_card_last_digits | Card last four | Card velocity counting after a failure |
PayPal Payments does not store seller protection status on the order, so ChargeWarden cannot read it.
BankBridge#
BankBridge saves _bankbridge_signal_score when Plaid Signal is turned on in its gateway. ChargeWarden adds the "ACH Signal score high" rule at your threshold (default 70). ACH entries, returns and account validation are covered in ACH and Nacha monitoring.
Card details for velocity limits#
Most card gateways tokenise the card in the browser, so the BIN and last four are not posted to your server. ChargeWarden counts per card only when a gateway exposes them: PayPal's _ppcp_paypal_card_last_digits after a payment, or the chargewarden_order_card and chargewarden_request_card filters you can use for other gateways. Without card data, the IP, network, email, browser and session limits still apply.
Another gateway?#
Use the chargewarden_gateway_risk filter. Return an array with label, risk_level (normal, elevated or highest), risk_score and review (a short reason, or empty).
Was this page helpful?