/bubble-tutorials

How to create invoices in Bubble

Learn to create professional invoices in Bubble with a simple step-by-step guide that streamlines billing and improves your workflow

Matt Graham, CEO of Rapid Developers

Book a call with an Expert

Starting a new venture? Need to upgrade your web or mobile app? RapidDev builds Bubble apps with your growth in mind.

Book a Free Consultation

How to create invoices in Bubble

You create invoices in Bubble by storing them as a data type (for example, Invoice), then generating them using a backend workflow that fills in fields like customer, line items, amounts, and status. You can display them in the app, let users download them as PDF using a plugin (like SelectPDF or PDF Conjurer), and optionally send them by email through an email action or API.

 

Core Structure

 

An invoice in Bubble is just a data entry. You define a data type with the fields you need.

  • Client (User)
  • Line items (List of Line Item)
  • Total (number)
  • Status (text, e.g. Draft / Sent / Paid)
  • Invoice number (text)
  • Date issued (date)

You also define a Line Item type with fields like description, quantity, and price.

 

Creating the Invoice

 

  • Create a backend workflow (in Backend → API Workflows). This makes the invoice creation stable and lets you automate it.
  • The workflow runs Create a new thing → Invoice and fills its fields from parameters you pass in.
  • After creating the invoice, run another action to calculate totals. You can loop through line items using :sum on a list field.

 

// Example of calculating total inside a Backend Workflow expression
Current user's Cart Line Items:sum's price

 

Displaying and Sending the Invoice

 

  • Show the invoice on a page using a Repeating Group for line items.
  • To generate PDFs, use a plugin such as SelectPDF or PDF Conjurer and pass the invoice page or template to it.
  • Send the PDF via Bubble’s built‑in email action or an email API (SendGrid, Postmark, etc.).

 

Optional: Payment

 

If the invoice needs payment, store a Stripe PaymentIntent ID in the invoice, and update the Invoice’s status using a Stripe webhook received through Bubble’s API Connector.

Explore More Valuable No-Code Resources

How to integrate Bubble.io with Git?

Learn how to seamlessly integrate Bubble.io with Git through our comprehensive step-by-step guide. Perfect for beginners and professionals.

Explore

How to integrate Bubble.io with Reddit Ads?

Learn how to seamlessly integrate Bubble.io with Reddit Ads using our easy step-by-step guide. Boost your ad management today!

Explore

How to integrate Bubble.io with AWS S3?

Explore our step-by-step guide on integrating Bubble.io with AWS S3, making your app development process more efficient and secure.

Explore

How to integrate Bubble.io with Lucidchart?

Follow our step-by-step guide to seamlessly integrate Bubble.io with Lucidchart, enhancing your workflow & productivity.

Explore

How to integrate Bubble.io with Kentico?

Learn how to seamlessly integrate Bubble.io and Kentico with our comprehensive, easy to follow step-by-step guide.

Explore

How to integrate Bubble.io with Box?

Discover easy-to-follow steps for integrating Bubble.io with Box. Boost your workflow and secure your files seamlessly today.

Explore

Stuck in Bubble.io? We’re here to help!

Fix broken workflows | Optimize logic | Boost performance | Scale with confidence

4.9
Clutch rating 🌟
600+
Happy partners
17+
Countries served
190+
Team members

By clicking “Accept”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.

Cookie preferences