Invoice aligned with project milestones

Milestone-based billing is fair and logical, but tracking which milestones have shipped and invoicing accordingly is a manual nightmare. Notis automates it: milestone reached in Linear, invoice created in Stripe, no busywork.

Trigger

Project Properties Updated

Fires when properties on a Linear project change (status, lead, target date, priority, etc.). Covers projects in both public and private teams — polls with the connected user's token.

Stripe logo

Action

Create an invoice

Creates a new draft stripe invoice for a customer; use to revise an existing invoice, bill for a specific subscription (which must belong to the customer), or apply detailed customizations.

Why this helps

Milestone-based billing needs you to remember which milestones are done and manually invoice each one. It's easy to miss a milestone or invoice late.

  • Invoicing is tied to actual project progress, not arbitrary dates
  • Notis detects milestone completion automatically and triggers invoicing
  • No manual tracking of which milestones have been invoiced
  • Clear link between milestones achieved and money owed

Setup

Build it in a few focused steps.

  • 1Connect Linear and Stripe integrations to Notis.
  • 2Create automation: 'When a Linear project's milestone or target date changes to completed, create an invoice in Stripe.'
  • 3Tell Notis which project properties signal milestone completion (e.g., status label changes to 'milestone complete').
  • 4Confirm the notification channel for milestone-triggered invoices.
  • 5Test by marking a milestone complete on a Linear project and checking Stripe for the invoice.

Questions about this workflow

Can I invoice different amounts for different milestones?

Yes. Include milestone-specific amounts in the Linear project description, or tag each milestone with its billing amount. Notis reads that and invoices accordingly.

What if a milestone changes but hasn't actually shipped?

Use clear Linear statuses or labels to distinguish 'in progress' from 'complete.' Notis only triggers on the completion status you specify.

Can this work with phased projects where invoicing is staggered?

Absolutely. Each phase or milestone in Linear can have its own invoicing rule. Notis will create invoices as each phase completes.

When this happens · Trigger

Do this · Action

Supported Triggers and Actions

Notis builds workflows that link Linear to Stripe. A trigger fires from one place; an action lands in another.

Linear logo

Linear triggers

Stripe logo

Stripe actions

Comment Received Trigger

Triggered when a comment is received.

TriggerInstant

Cancel subscription

Cancels a customer's active stripe subscription at the end of the current billing period, with options to invoice immediately for metered usage and prorate charges for unused time.

ActionInstant

Issue Created Trigger

Triggered when a new issue is created.

TriggerInstant

Confirm payment intent

Confirms a stripe paymentintent to finalize a payment; a `return url` is necessary if the payment method requires customer redirection.

ActionInstant

Issue Updated Trigger

Triggered when an issue is updated. For example labels are changed, issue status is changed, etc.

TriggerInstant

Create Customer

Creates a new customer in stripe, required for creating charges or subscriptions; an email is highly recommended for customer communications.

ActionInstant

Private Team Comment Created

Fires when a new comment is posted on an issue in a private Linear team (polled with the connected user's token).

TriggerPolling

Create an invoice

Creates a new draft stripe invoice for a customer; use to revise an existing invoice, bill for a specific subscription (which must belong to the customer), or apply detailed customizations.

ActionInstant

Private Team Issue Created

Fires when a new issue appears in a private Linear team (polled with the connected user's token).

TriggerPolling

Create payment intent

Creates a stripe paymentintent to initiate and process a customer's payment; using `application fee amount` for a connected account requires the `stripe-account` header.

ActionInstant

Private Team Issue Properties Updated

Fires when properties on an issue change in a private Linear team (polled with the connected user's token).

TriggerPolling

Create a price

Creates a new stripe price for a product, defining its charges (one-time or recurring) and billing scheme; requires either an existing `product` id or `product data`.

ActionInstant

Project Created

Fires when a new Linear project is created. Covers projects in both public and private teams — polls with the connected user's token, so visibility matches what the connected user can see in Linear.

TriggerPolling

Create product

Creates a new product in stripe, encoding the request as `application/x-www-form-urlencoded` by flattening nested structures.

ActionInstant

Project Properties Updated

Fires when properties on a Linear project change (status, lead, target date, priority, etc.). Covers projects in both public and private teams — polls with the connected user's token.

TriggerPolling

Create Refund

Creates a full or partial refund in stripe, targeting either a specific charge id or a payment intent id.

ActionInstant

Connect any two apps with Notis in the middle.

Not just Linear and Stripe. Any combination from 985+ integrations.

When this happens · Trigger

Do this · Action

Save your first hour today.

7 days free trial with 20$ free usage included.
No card. Works with personal or business Stripe.