Search packages, repositories and app categories

invoiceninja cover
Package detailsv0.0.11

invoiceninja

Easily create PDF invoices and accept payments in a Flutter app

AndroidiOSWebmacOSWindowsLinux
30-day downloads
54
Likes
76
Pub points
130

Install package

flutter pub add invoiceninja

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The invoiceninja package enables Flutter developers to generate PDF invoices and process payments directly within their apps. By integrating with the Invoice Ninja API, it simplifies invoice creation, customization, and payment collection across multiple platforms. Developers can programmatically create professional invoices with branding, send them to clients, and accept payments via integrated gateways. The package supports Android, iOS, Web, macOS, Windows, and Linux, making it ideal for cross-platform business applications. It streamlines financial workflows for freelancers, small businesses, and service providers.

Use cases

  • Generate client invoices
  • Process online payments
  • Automate billing workflows
  • Support multi-platform apps
  • Send branded PDFs
  • Track payment status

Key features

  • PDF invoice generation
  • Payment integration
  • Cross-platform support
  • API-driven design
  • Customizable templates
  • Real-time payment tracking

Suitable for

  • Freelancers
  • Small business apps
  • Service-based platforms
  • Billing systems
  • E-commerce integrations

Considerations

  • Requires Invoice Ninja account
  • Depends on external API
  • Needs internet connection
  • Limited offline functionality
  • Rate limits may apply
  • Authentication setup required

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

Invoice Ninja

Create PDF invoices and accept payments in a Flutter app

Sample

YouTube Video

YouTube Video

Features

  • Accept online payment in mobile, web and desktop Flutter apps
  • Supports many payment gateways including Stripe, PayPal and more
  • Create professional PDF invoices
  • Includes a self-service client portal
  • Many more features...

Overview

The package provides two main classes:

  • InvoiceNinja: Supports the public 'Storefront' routes which allow reading the list of products and creating/finding clients and invoices. Using this class works with restricted access to the account.
  • InvoiceNinjaAdmin: Supports the REST Admin API which uses token based security. Using this class requires an API token to access the account.

Storefront API

Configure
InvoiceNinja.configure(
  'KEY', // Set your company key or use 'KEY' to test
  url: 'https://demo.invoiceninja.com', // Set your selfhost app URL
  debugEnabled: true,
);
Load the product list
final products = await InvoiceNinja.products.load();
Find the product by key
final product = await InvoiceNinja.products.findByKey('product_key');
Create/persist the client
var client = Client.forContact(email: 'test@example.com');
client = await InvoiceNinja.clients.save(client);
Create/persist the invoice
var invoice = Invoice.forClient(client, products: [product]);
invoice = await InvoiceNinja.invoices.save(invoice);
Display the PDF invoice
launch(
  'https://docs.google.com/gview?embedded=true&url=${invoice.pdfUrl}',
  forceWebView: true,
);
Accept the payment
var invoiceKey = invoice.key;
launch(invoice.url);

// ...

final invoice = await InvoiceNinja.invoices.findByKey(invoiceKey);
if (invoice.isPaid) {
  // ...
}

You can use the WidgetsBindingObserver interface to run code when the app is resumed.

Consider giving issue #57536 a thumbs up to make this better in the future.

Admin API

Configure
InvoiceNinjaAdmin.configure(
  'TOKEN', // Set your API token or use 'TOKEN' to test
  url: 'https://demo.invoiceninja.com', // Set your selfhost app URL
  debugEnabled: true,
);
Find a client by email
final client = await InvoiceNinjaAdmin.clients.findByEmail(email);
Load all invoices
final payments = await InvoiceNinjaAdmin.payments.load();
Load the payments list
final payments = await InvoiceNinjaAdmin.payments.load();
Find a payment by id
final payment = await InvoiceNinjaAdmin.payments.findById(id);
Create/persist an invoice and auto-bill it
var invoice = Invoice.forClient(client, products: [product]);
invoice = await InvoiceNinjaAdmin.invoices.save(invoice, action: InvoiceAction.autoBill);

Categories

Dependencies

Dependency list 4 items

Source repository

Projects using this package

No data available yet.