Skip to content

Stripe

What It Does

Stripe sends payment events in real time to DURUM.ai: sales, invoice payments, and refunds.

Stripe EventType in DURUM.aiWhen It Triggers
checkout.session.completedSaleA client completes a purchase via Stripe Checkout
invoice.paidPaymentA Stripe invoice is paid
charge.refundedRefundA refund is processed

Quick Setup (3 Minutes)

You need 2 endpoints in your Stripe Dashboard. No secret to configure: paste the URLs and you're done.

Step 1: Find Your Identifier

Your identifier is either a Business ID (UUID format) or a client_key (short identifier). It was provided by your account manager during onboarding.

You can also find it in DURUM.ai:

  • Settings -> Integrations -> Webhook URLs section -> your identifier is pre-filled in the URLs

IMPORTANT: Your identifier must be in every URL

Without your identifier in the URL, your payments won't be attributed to your account and will be rejected.

Step 2: Create Endpoints in Stripe

  1. Log in to Stripe Dashboard -> dashboard.stripe.com
  2. Click Developers at the bottom left
  3. Click Webhooks in the left menu
  4. Click Add endpoint

Endpoint 1: Payments and Refunds

  1. In the Endpoint URL field, enter:

    https://app.durum.ai/api/webhook/payment?client_key=YOUR_KEY

    (Replace YOUR_KEY with your identifier)

  2. Click Select events to listen to

  3. Check the following 2 events:

    • invoice.paid
    • charge.refunded
  4. Click Add endpoint


Endpoint 2: Sales

  1. Click Add endpoint again

  2. In the Endpoint URL field, enter:

    https://app.durum.ai/api/webhook/sale?client_key=YOUR_KEY

    (Replace YOUR_KEY with your identifier)

  3. Click Select events to listen to

  4. Check:

    • checkout.session.completed
  5. Click Add endpoint


Step 3: Test

  1. In Stripe Dashboard, click the endpoint you just created
  2. Click Send test webhook
  3. Select the event type (e.g., invoice.paid)
  4. Click Send test webhook
  5. Verify the response is 200 OK
  6. In DURUM.ai, go to Data Logs to confirm reception

Quick Test

If you see 200 OK in Stripe and the event in DURUM.ai's Data Logs, everything is working. You can move on.


FAQ

Do I need to configure a signing secret?

No. DURUM.ai accepts Stripe webhooks automatically if your identifier (client_key or bid) is present in the URL. No secret to copy or configure.

If you want to add an extra layer of security, you can send the Signing secret (whsec_...) to your account manager who will configure it in DURUM.ai.

Why 2 endpoints and not 3?

The /payment endpoint handles both payments (invoice.paid) and refunds (charge.refunded). A dedicated /refund endpoint also exists if you prefer to separate, but it's not necessary.

Which endpoint if I use Stripe Checkout?

Use Endpoint 2 (/sale) with the checkout.session.completed event. This is what creates the sale in DURUM.ai.

If your clients pay via Stripe Invoicing, use Endpoint 1 (/payment) with invoice.paid.

My webhooks were active but stopped working

Stripe automatically disables an endpoint after too many consecutive errors. Go to Developers -> Webhooks and verify the endpoint is Enabled. If not, click it and re-enable.


Troubleshooting

ProblemSolution
Payments not attributed to my accountVerify ?client_key=YOUR_KEY is in the URL
Endpoint disabled in StripeRe-enable in Developers -> Webhooks
Event ignored (200 response but nothing in DURUM.ai)Verify you selected the right events (invoice.paid, not invoice.created)
Error 401Your URL doesn't contain your identifier: add ?client_key=YOUR_KEY
Error 429Too many simultaneous requests: Stripe will retry automatically

Quick Checklist

  • [ ] 2 endpoints created in Stripe Dashboard
  • [ ] client_key present in every URL
  • [ ] Events selected: invoice.paid, charge.refunded, checkout.session.completed
  • [ ] Test webhook sent successfully (response 200)
  • [ ] Event visible in DURUM.ai's Data Logs

Powered by DURUM.ai — ad attribution and operational intelligence