For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
RegisterLoginSandbox Login
GuidesRecipesAPI Reference
GuidesRecipesAPI Reference
  • Getting Started
    • Getting Started with Checkout
    • ACH Checkout
    • Card Checkout with Credits
    • Card Checkout
    • Direct USDC Settlement
    • Fiat/Crypto Pay-ins
    • Secure Marketplace Checkout
    • EVM Checkout
    • How to Enable Checkout with Credit Cards
    • Quick Start Marketplace Implementation
    • Payouts
    • Common FAQs
  • Checkout
    • Settlement Locations
    • Checkout Webhooks
  • Payouts
    • Payout Overview
    • What is a Payout
  • Subscriptions
    • Subscriptions Overview
  • Marketplaces
    • Marketplace Overview
    • How Marketplaces Work
    • How to Withdraw USDC
    • Countries Eligible for USDC Withdraw
    • Marketplaces Webhooks
    • Marketplaces Implementation
  • Developer Resources
    • Custom Branding
    • Checkout Implementation
    • Webhooks
      • Configuring Webhooks
      • Verifying Webhook Signatures
      • Withdraw Webhooks
      • Checkout Webhooks
  • Merchant Dashboard
    • Login & Account Access
    • Users and Roles
    • Rate Limits
    • Developer Contact
LogoLogo
RegisterLoginSandbox Login
Developer ResourcesWebhooks

Configuring Webhooks

Was this page helpful?
Previous

Verifying Webhook Signatures

Next
Built with

Developers can follow the below guide to learn how to listen to webhooks:

  1. Open Webhook Settings
    Go to the Coinflow Admin Dashboard → Developers → Webhooks

  2. Add a new Webhook URL

  3. Generate a Webhook Validation Key

  4. Configure Webhook Settings
    Select Latest Webhook Version > Select all events to listen to > Save.

  5. Add an Endpoint on Your Server
    Create a POST route to receive events from Coinflow.

    router.post('/coinflow-webhook', async (req, res) => {
    try {
    const { data } = req.body;
    const authHeader = req.get('Authorization'); //Ensure the Authorization matches your Validation Key to validate that this request is coming from Coinflow
    if (authHeader !== process.env.COINFLOW_VALIDATION_KEY) {
    throw new ControllerError('User not allowed', 401);
    }
    console.log(`Event: ${data}`);
    handleEvent(); // Add your custom logic here
    res.sendStatus(200);
    } catch (e) {
    handleError(res, e);
    }
    });

ℹ️ Coinflow will retry sending webhook events until:

  • Your server returns a 200 OK
  • Or 36 hours passes
  • Note: Your server must respond within 5 seconds or the request will timeout and retry.