> ## Documentation Index
> Fetch the complete documentation index at: https://razorpay-881012b3.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Best Practices for Standard Checkout Integration

> Best practices for a smoother Standard Checkout web integration and payment experience.

<div style={{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"0.35rem 0.9rem",border:"1px solid rgba(128,128,128,0.28)",borderRadius:"0.5rem",padding:"0.45rem 0.75rem",margin:"0 0 1.25rem",fontSize:"0.875rem"}}>
  <span style={{fontWeight:600}}>Available in</span>
  <span>🇮🇳 India</span>
  <span>🇸🇬 Singapore</span>
  <span>🇺🇸 United States</span>
</div>

Follow the best practices for a smooth Standard Checkout web integration.

1. **Capture Payment Using Payment Capture Settings**

   You **must capture** the authorised payments for the **settlement of the payments** in your bank account. Use the [Payment Capture Setting](/docs/payments/payments/capture-settings) to configure the capture settings at an account level via the Dashboard.

2. **Integrate Orders API**

   Orders bind multiple payment attempts for a single order. This helps to **prevent multiple payments**. [Integrate with Orders API](/docs/payments/payment-gateway/web-integration/standard/integration-steps#11-create-an-order-in-server) on your server-side and pass the `order_id` to Checkout.

3. **Verify Signature to Avoid Data Tampering**

   This is a mandatory step to confirm the authenticity of the details returned to the Checkout form for successful payments. Know how to [verify payment signature](/docs/payments/payment-gateway/web-integration/standard/integration-steps#15-verify-payment-signature).

4. **Check Payment/Order Status before Providing Services**

   Check the payment/order status, that is if the payment's status is `captured` and the order's status is `paid` before proving the services to the customers.

   * [Fetch All Payments for an Order API](/docs/api/orders/fetch-payments)
   * [Fetch Status of a Payment using Payment id API](/docs/api/payments/fetch-with-id)
   * [Fetch Status of an Order using Order id API](/docs/api/orders/fetch-with-id)

5. **Implement Webhooks**

   Implement webhooks or the query API to avoid callback failure (drop-offs could be due to connectivity or network failure) and to verify the payment details via an S2S call. Know more about [Webhooks](/docs/webhooks/setup-edit-payments). You should enable the following webhooks:

   * `payment.captured`
   * `payment.failed`
   * `order.paid`

6. **Implement Callback URL**

   Sites like Instagram, Facebook Messenger, Opera and UC browser do not support i-frame. You should implement [callback URL](/docs/payments/payment-gateway/callback-url) if your customers use any of these for making payments.
