Dodo Payments Documentation home pagelight logodark logo
  • Community
  • Dashboard
  • Dashboard
API Documentation & SDKs
Technical - FAQs
Documentation
API Reference
How to Guides
Changelog
API Documentation & SDKs
  • Introduction
  • Code Integration Tutorial
  • SDKs - Node, Python, PHP, Go, Ruby, Java & Kotlin
  • Payments Integration Guide
  • Subscription Integration Guide
  • Mobile Integration Guide
  • On Demand Subscriptions
  • Webhooks Details
  • Managing Products Via API
  • Metadata Guide
  • Configuring Allowed Payment Methods
  • MCP Server
  • Technical - FAQs
Payments
  • GET
    List Payments
  • POST
    Create One Time Payment
  • GET
    Get Payment Detail
  • GET
    Get Invoice
Subscriptions
  • GET
    List subscriptions
  • POST
    Create Subscription
  • GET
    Get Subscription Detail
  • POST
    Change Plan
  • PATCH
    Update Subscription
  • POST
    Create Charge (On-Demand)
Discounts
  • GET
    List Discounts
  • POST
    Create Discount
  • GET
    Validate Discount
  • PATCH
    Update Discount
  • DEL
    Delete Discount
Licenses
  • POST
    Activate License
  • POST
    Deactivate License
  • POST
    Validate License
  • GET
    Get License Keys
  • GET
    Get License Key
  • PATCH
    Update License Key
  • GET
    Get License Key Instances
  • GET
    Get License Key Instance
  • PATCH
    Update License Key Instance
Customers
  • POST
    Create Customer
  • GET
    List Customers
  • GET
    Get Customer Detail
  • PATCH
    Patch Customer
  • POST
    Create Customer Portal Session
Webhooks
  • GET
    List Webhook Events
  • GET
    Get Webhook Event Detail
  • POST
    Outgoing Webhooks
Products
  • GET
    List Products
  • POST
    Create Product
  • GET
    Get Product Detail
  • PATCH
    Update Product
  • PUT
    Update Product Images
  • DEL
    Archive Products
  • POST
    Unarchive Products
Addons
  • POST
    Create Addon
  • GET
    List Addons
  • GET
    Get Addon
  • PATCH
    Update Addon
  • PUT
    Update Addon Images
Refunds
  • GET
    List Refunds
  • POST
    Create Refund
  • GET
    Get Refund Detail
Disputes
  • GET
    List Disputes
  • GET
    Get Dispute Detail
Payouts
  • GET
    List Payouts
Miscellaneous
  • GET
    Supported Countries
  • POST
    Charge Subscription
API Documentation & SDKs

Technical - FAQs

Detailed explanations and solutions to technical queries, including troubleshooting, integrations, and system requirements, ensuring seamless implementation and performance.

A: The payment.succeeded webhook event for subscription products does not include a product_id. Instead, it provides the subscription_id associated with the subscription, along with other relevant details.

A: To verify that the webhooks you receive are genuinely from Dodo Payments and not from malicious actors, follow these steps:

  1. Check the Signature: Each webhook sent by Dodo Payments includes a unique signature in the webhook-signature header. This signature is generated using your webhook’s secret key and the payload of the event.
  2. Retrieve the Secret Key: Ensure you have the secret key for your webhook, which can be found in your Dodo Payments dashboard under the Webhooks settings.
  3. Recompute the Signature: Use the same signing algorithm (HMAC-SHA256) as Dodo Payments to compute the signature on your server. Use the payload of the webhook and your webhook secret key.
  4. Compare Signatures: Compare the recomputed signature with the one provided in the webhook-signature header. If they match, the webhook is authentic; if not, it should be rejected.
  5. Use HTTPS: Ensure your webhook endpoint uses HTTPS to secure communication and prevent tampering during data transmission. By implementing these steps, you can confidently verify the authenticity of webhooks sent by Dodo Payments.

A: For subscriptions, subscription.renew will be triggered whenever the subscription amount is deducted. So yes, this is expected behavior.

A: To test webhooks locally, you can follow these steps:

  1. Use a Tunneling Tool: Tools like ngrok, LocalTunnel, or Cloudflare Tunnel can expose your local server to the internet. This provides a public URL that Dodo Payments can use to send webhook events to your local environment.
  2. Set Up the Webhook Endpoint: Create a webhook endpoint in your local application to handle incoming webhook events. Ensure it listens for HTTP POST requests.
  3. Configure the Webhook in Dodo Payments: Go to your Dodo Payments dashboard, navigate to the Webhooks settings, and update the webhook URL to the public URL generated by the tunneling tool.
  4. Trigger Events: Perform actions in your environment to trigger webhook events. For example, you can simulate payments or subscription renewals.
  5. Inspect Incoming Requests: Use the tunneling tool’s logs or your application’s logging to inspect the incoming webhook payloads. This allows you to verify that your endpoint is receiving the events and processing them correctly.
  6. Verify Signature: Ensure you validate the webhook-signature header to confirm that the webhook events are authentic and sent by Dodo Payments.

By following these steps, you can easily test and debug webhooks in your local development environment.

MCP ServerList Payments
xlinkedinwebsite
Powered by Mintlify