{"html":"\u003Cheader\u003E\n \u003Ch1\u003ERadar Integration Checklist\u003C/h1\u003E\n \u003Cp\u003EUse this checklist of best practices to ensure your integration makes the most of Radar's machine learning models.\u003C/p\u003E\n\u003C/header\u003E\n\n\u003Csection\u003E\n \u003Caside class=\"intro note\"\u003E\n\u003Ch3\u003EChecklist progress\u003C/h3\u003E\n\u003Cp\u003EAs you complete each item and check it off, the state of each checkbox is stored within your browser's cache. You can refer back to this page at any time to see what has been completed so far.\u003C/p\u003E\n\u003C/aside\u003E\n\n\n\u003Cp\u003EStripe Radar’s machine learning models use many signals to distinguish between fraudulent and legitimate payments. Some of these signals are computed automatically, but many of them depend on the information provided by your integration. In general, the more data provided by your integration, the more successful fraud prevention can be.\u003C/p\u003E\n\n\u003Cp\u003EIf you don’t collect enough information from your customers, it can reduce the effectiveness of fraud detection. Conversely, if you collect too much information, it can negatively impact the checkout experience and result in a lower conversion rate.\u003C/p\u003E\n\n\u003Cp\u003EThe following recommendations have been tested to ensure that your conversion rate remains high while maximizing the performance of our machine learning models.\u003C/p\u003E\u003C/section\u003E\n\u003Csection\u003E\n \u003Cdl class=\"checklist\"\u003E\n \u003Cdt id=\"tokenize-with-libraries\"\u003E\u003Clabel\u003E\u003Cinput type=\"checkbox\" name=\"tokenize-with-libraries\" value=\"tokenize-with-libraries\"\u003E Tokenize payment information with Elements, Checkout, or our mobile SDKs\u003C/label\u003E\u003C/dt\u003E\n \u003Cdd\u003E\n\u003Cp\u003EThe most important action you can take to prevent against fraud is to collect customer payment information using one of our \u003Ca href=\"/docs/payments\"\u003Erecommended payments integrations\u003C/a\u003E. Each method collects important high-signal data, such as device information and IP addresses, automatically. To further improve fraud detection, we highly recommend you collect the cardholder name, customer’s full billing address and postal code, and their card’s CVC code during checkout.\u003C/p\u003E\n\n\u003Cp\u003EYou can build a seamless checkout flow within your website or app using any of these methods, and sensitive card information is securely transmitted directly to Stripe without it passing through your servers—greatly simplifying your \u003Ca href=\"/docs/security#validating-pci-compliance\"\u003EPCI compliance\u003C/a\u003E. You should determine which integration makes the most sense for your business and product goals, but any of these integration methods will help optimize your integration for fraud prevention.\u003C/p\u003E \u003C/dd\u003E\n \u003Cdt id=\"use-customer-objects\"\u003E\u003Clabel\u003E\u003Cinput type=\"checkbox\" name=\"use-customer-objects\" value=\"use-customer-objects\"\u003E Create payments using the Customer object, where possible\u003C/label\u003E\u003C/dt\u003E\n \u003Cdd\u003E\n\u003Cp\u003EUsing \u003Ca href=\"/docs/api#customers\"\u003ECustomer\u003C/a\u003E objects when creating payments allows Stripe to track the payment patterns for each customer over time. This significantly increases our ability to identify irregularities in purchasing behavior. To do this, you should:\u003C/p\u003E\n\n\u003Cul\u003E\n \u003Cli\u003E\u003Ca href=\"/docs/saving-cards\"\u003ESave cards\u003C/a\u003E to \u003Ccode\u003ECustomer\u003C/code\u003E objects and use them to create subsequent payments.\u003C/li\u003E\n \u003Cli\u003EProvide your customer’s \u003Ca href=\"/docs/api#customer_object-email\"\u003Eemail address\u003C/a\u003E when creating a \u003Ccode\u003ECustomer\u003C/code\u003E object.\u003C/li\u003E\n \u003Cli\u003EProvide your customer’s name when you tokenize their card information.\u003C/li\u003E\n\u003C/ul\u003E\n\n\u003Cp\u003EEach \u003Ccode\u003ECustomer\u003C/code\u003E object can also store \u003Ca href=\"https://stripe.com/docs/saving-cards#multiple-payment-methods\"\u003Emultiple payment methods\u003C/a\u003E, so you can enhance your customer’s checkout experience by offering to save multiple cards. Stripe can continue to track payment patterns for each customer, regardless of which one they use.\u003C/p\u003E\n\n\u003Cp\u003EIf you ship physical goods, we also recommend collecting the customer’s \u003Ca href=\"/docs/api#customer_object-shipping\"\u003Eshipping address\u003C/a\u003E and saving this to their associated \u003Ccode\u003ECustomer\u003C/code\u003E object.\u003C/p\u003E \u003C/dd\u003E\n \u003Cdt id=\"include-stripe-js\"\u003E\u003Clabel\u003E\u003Cinput type=\"checkbox\" name=\"include-stripe-js\" value=\"include-stripe-js\"\u003E Include Stripe.js on every page of your site\u003C/label\u003E\u003C/dt\u003E\n \u003Cdd\u003E\n\u003Cp\u003EInclude \u003Ca href=\"/docs/stripe-js\"\u003EStripe.js\u003C/a\u003E on every page of your site, not just the checkout page where your customer enters their payment information. By doing so, Stripe can detect anomalous behavior that may be indicative of fraud as customers browse your website—providing additional signals that increase the effectiveness of our detection.\u003C/p\u003E\u003Cdiv class=\"code\" data-language=\"html\"\u003E\n \u003Cpre class=\"language-html numbered\" \u003E\u003Ccode\u003E\u0026lt;script src=\u0026quot;https://js.stripe.com/v3/\u0026quot;\u0026gt;\u0026lt;/script\u0026gt;\n\u003C/code\u003E\u003C/pre\u003E\n\n\u003C/div\u003E\n\u003Caside class=\"important check\"\u003E\u003Cp\u003EAlways load Stripe.js directly from \u003Cstrong\u003Ehttps://js.stripe.com/v3/\u003C/strong\u003E. Using a local copy of Stripe.js is unsupported, can result in user-visible errors, and reduces the effectiveness of our fraud detection.\u003C/p\u003E\u003C/aside\u003E\n \u003C/dd\u003E\n \u003C/dl\u003E\n\u003C/section\u003E\n\n\u003Cfooter\u003E\n\n\u003Ch2 data-no-anchor\u003EQuestions?\u003C/h2\u003E\n\n\u003Cp\u003E\n We're always happy to help with code or other questions you might have. \u003Ca href='#' id='search-link' class='search-link'\u003ESearch our documentation\u003C/a\u003E, \u003Ca href='https://support.stripe.com/contact'\u003Econtact support\u003C/a\u003E, or \u003Ca href='https://stripe.com/contact/sales'\u003Econnect with our sales team\u003C/a\u003E. You can also chat live with other developers in \u003Ca href=\"irc://irc.freenode.net/stripe\"\u003E#stripe\u003C/a\u003E on freenode.\n\u003C/p\u003E\n\u003Cscript nonce=\"eLpLWGvpM3l/Fm7lkN6ZTg==\"\u003E document.getElementById(\"search-link\").addEventListener(\"click\", focusSearch);\n function focusSearch() {\n document.querySelector(\".search input\").focus();\n window.scrollTo(0,0);\n }\n\u003C/script\u003E\n\u003Cp data-csat-step=\"poll\" class=\"csat-widget\"\u003E\n \u003Cspan class=\"csat-widget-text\"\u003EWas this page helpful?\u003C/span\u003E\n \u003Cspan data-csat-poll=\"yes\" class=\"csat-button csat-button-yes common-Button\"\u003EYes\u003C/span\u003E\n \u003Cspan data-csat-poll=\"no\" class=\"csat-button csat-button-no common-Button\"\u003ENo\u003C/span\u003E\n\u003C/p\u003E\n\n\u003Cdiv data-csat-step=\"input\" class=\"csat-widget\"\u003E\n \u003Cdiv class=\"csat-input\"\u003E\n \u003Cinput id=\"csat-input-text\" placeholder=\"Feedback about this page?\" class=\"common-Input\"\u003E\n \u003Cspan id=\"csat-input-submit\" class=\"csat-button common-Link\"\u003ESend\u003C/span\u003E\n \u003C/div\u003E\n \u003Cp class=\"csat-contact\"\u003E\n \u003Clabel class=\"csat-contact-option\"\u003E\n \u003Cinput id=\"csat-contact-optin-checkbox\" type=\"checkbox\"\u003E\n Yes, it’s okay to follow up by email.\n \u003C/label\u003E\n \u003C/p\u003E\n\u003C/div\u003E\n\n\u003Cp data-csat-step=\"reply\" class=\"csat-widget\"\u003E\n \u003Cspan class=\"csat-reply-main\"\u003EThank you for helping improve Stripe's documentation.\u003C/span\u003E\n \u003Cspan class=\"csat-reply-extended\"\u003EIf you need help or have any questions, please consider \u003Ca href=\"https://support.stripe.com/email\"\u003Econtacting support\u003C/a\u003E.\u003C/span\u003E\n\u003C/p\u003E\n\n\n\u003C/footer\u003E\n","head_css":"","documentation_footer_js":"\u003Cscript nonce=\"eLpLWGvpM3l/Fm7lkN6ZTg==\"\u003E $(function() {\n // Retrieve any completed states from localStorage.\n $(':checkbox').each(function() {\n if (typeof window.localStorage !== 'undefined') {\n // Look for the checklist item in localStorage.\n if (localStorage.getItem(this.value) === 'completed') {\n $(this).attr('checked', 'true');\n }\n }\n });\n\n // Set completed states in localStorage on click events.\n $(':checkbox').click(function() {\n if (typeof window.localStorage !== 'undefined') {\n if ($(this).is(':checked')) {\n // Set state in localStorage.\n localStorage.setItem(this.value, 'completed');\n } else {\n // Remove state from localStorage.\n localStorage.removeItem(this.value);\n }\n }\n })\n });\n\u003C/script\u003E","title":"Radar Integration Checklist | Stripe Radar","translated":null}