How to handle partially created Invoices in Stripe via Make if some modules fail?

I’m building an automated invoicing flow in Make (Integromat), integrating Airtable and Stripe. The goal is to create and manage the full invoice lifecycle automatically — from creation to status tracking and notifications.

Current flow:

  1. Create Invoice (in Stripe, with auto_advance: false)
  2. Create Invoice Item (linked to the Invoice)
  3. Finalize Invoice
  4. Update Airtable record (e.g., setting status to “Open”)
  5. Send Telegram notification

Everything usually works fine, but I’m concerned about edge cases where partial failure may lead to inconsistent invoice states.

Problem 1:

  • Invoice is successfully created
  • Invoice Item fails
  • → Stripe ends up with a draft Invoice with no items

Is there a way to auto-delete such draft Invoices in Stripe after a certain time (e.g., 1 hour)?

Problem 2:

  • Invoice and Invoice Item are created
  • Finalize Invoice fails
  • → Invoice remains in draft status

Key Question:

Should I add separate error handlers for each critical module (e.g., Create Invoice Item, Finalize Invoice)?
What’s the best practice for handling such critical steps in an automated flow that aims to manage the full lifecycle of an invoice?

Any guidance or pattern recommendations from others who’ve implemented similar Stripe flows would be appreciated.strong text

Hey there,

yes, you should have error handlers on each critical module. Have in mind that you are not limited to the actual error handler modules themselves and you can have any modules in an error handling route. So you can have a delete module that removes whatever the previous module created if this module failed.

Welcome to the Make community!

Handle errors so scenarios don’t stop.

You might want to add some error handling to your modules to handle exceptions, so the failing module(s) can automatically be retried or ignored. By handling any errors by adding a “Error handler” to the module, the scenario won’t throw an error and get turned off.

Error directives can only be added to an error handler route.

1. Right click and select “Add error handler”

2. Error handlers will appear

For more information on error handling, see:

Hope this helps! Let me know if there are any further questions or issues. P.S.: investing some effort into the tutorials in the Make Academy will save you lots of time and frustration using Make!

@samliew

Thanks for your reply.

This is the core part of my scenario, and it generally works well. However, I want to be confident that the flow will behave predictably in case of issues — for example, a network connection error.

I’ve added a Break error handler, but the [Make] documentation mentions that some issues (like connection errors) are automatically handled under the hood.

My questions:

  1. What is the best practice for counting the number of attempts in a Break error handler?
    Currently, if I add a Break handler with a notification (e.g., Telegram), I receive a message on every retry attempt. But I only want to send a message after all retries have failed.
  2. Where exactly should I place this handler for optimal error tracking without adding it to every single module (which would make the scenario harder to maintain)?

I’ll attach a screenshot of the relevant section of the scenario.

Break is the correct one to handle network issues where the problem is likely to be resolved fast. It will just retry the same call after the specified time and keep retrying for the amount of times you set it.

You will get an email if all the retries fail (provided you didn’t disable the notifications). If you want a telegram message - then you can configure a separate scenario to watch your emails for the ones about errors from make scenarios and send a message when its received.

For the moment you will need to add an error handler to each module you are concerned about.

1 Like