--- title: "Pre-integration checklist" slug: "payments-integration-setup" updated: 2026-06-30T03:32:05Z published: 2026-06-30T03:32:05Z canonical: "docs.xendit.co/payments-integration-setup" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.xendit.co/llms.txt > Use this file to discover all available pages before exploring further. # Pre-integration checklist Before starting your integration with Xendit, ensure you’ve completed the following steps to avoid issues during testing or deployment. ## 1. Activate your payment channels **Test Mode** - All payment channels are available by default in test mode. - However, some payment flows may be limited due to restrictions from partners (e.g., KYC requirements, regional constraints). - If you encounter issues while testing, please contact our Customer Success team for assistance. **Live Mode** - Before going live, check that your desired payment channels are **activated** in the [Dashboard > Payment Channels](https://dashboard.xendit.co/payment-channels). - If a payment channel is not activated, related API requests or payment links will fail in production. ## 2. Create a secret API key Generate your API key from the Dashboard: **Settings > Developers > API Keys** You can create different API keys for each environment or use case. | Environment | Use case | | --- | --- | | **Test Mode** | for development and UAT testing. | | **Live Mode** | for handling real transactions in production. | **Best Practices** - Set `Write` permissions if you’re using money-in features. - Restrict your API key’s permissions to the minimum needed for its purpose. - Store API keys securely using a secrets management tool. - For more details, refer to our [API Key Guide](https://docs.xendit.co/xenplatform/settings/#api-key). ## 3. Set up your webhooks To ensure your system receives real-time updates, **webhooks must be configured**, even if you use synchronous payment flows. Why webhooks matter: - They notify your system when a payment is completed (e.g., after 3DS or redirection flows). - They help detect and reconcile late or previously unreported payments. **How to register webhook endpoints:** 1. Go to [Settings > Webhooks in your Xendit Dashboard](https://dashboard.xendit.co/settings/developers#webhooks) 2. Enter your webhook **endpoint URLs** ![](https://cdn.document360.io/217abc43-8677-41fb-a81d-fceeb1fa0358/Images/Documentation/Screenshot 2026-06-30 at 10.30.36.png?sv=2026-02-06&spr=https&st=2026-11-01T21%3A46%3A20Z&se=2026-11-01T22%3A46%3A20Z&sr=c&sp=r&sig=QsCcZItr7NwsUvdy9D%2FC%2BAnDQiXBHl3XjN9Up4hjJME%3D) 3. Click **Test & Save** to verify delivery 4. Confirm that your system receives the exact test notification payload ### Available webhook endpoints | **Topic** | **Description** | | --- | --- | | Unified Refunds – Refund Request Succeeded | Triggered when a refund is successfully processed. | | Unified Refunds – Refund Request Failed | Triggered when a refund request fails. | | Payment Requests v3 – Payment Status | Triggered when there is a status update on a Payment object. | | Payment Requests v3 – Payment Request Status | Triggered when there is a status update on a Payment Request object. | | Payment Tokens v3 – Payment Token Status | Triggered when there is a status update on a Payment Token object. | | Payment Session – Completed | Triggered when a payment session is marked as completed, meaning a successful payment attempt was made. | | Payment Session – Expired | Triggered when a payment session reaches expiry without a successful payment. | | Subscriptions | Triggered for subscription plan lifecycle events (e.g., created, renewed, canceled). | | Payment Link | Triggered when a payment link is paid or expired. |