Skip to main content

Automation workflow: Payment-event automation

Zapier and InvoiceQuickly: Zaps for invoices paid through Stripe and PayPal

When a client pays an InvoiceQuickly invoice through a Stripe or PayPal payment link, the payment happens in your own Stripe or PayPal account and carries the invoice number. A Zap on that account can react to it: add a row to Google Sheets, post in Slack, or send a thank-you from Gmail. InvoiceQuickly records the payment on the invoice by itself, so these Zaps are for notifications and logs, not for marking invoices paid. You need InvoiceQuickly Pro ($9/month) for payment links and a paid Zapier plan for the filter and formatter steps.

How it works

Using Zapier with InvoiceQuickly, step by step

  1. Step 1: Get paid through an InvoiceQuickly payment link

    On Pro, connect Stripe or PayPal under Integrations, then choose Create Stripe link or Create PayPal link from a sent invoice's action menu. For Stripe, InvoiceQuickly creates a Checkout Session on your Stripe account with one line named after the invoice, such as Invoice INV-0042, priced at the remaining balance, and three metadata keys: invoiceId, invoiceNumber and paymentProviderId. For PayPal, it creates a PayPal invoice whose detail.invoice_number and detail.reference both hold the InvoiceQuickly number.

  2. Step 2: Start the Stripe Zap with Checkout Session Completed

    In Zapier, create a Zap, pick the Stripe app and choose the Checkout Session Completed trigger. Skip New Payment and New Charge: Stripe does not copy a session's metadata to the PaymentIntent or Charge, and InvoiceQuickly sets metadata only on the session, so those records arrive without an invoice number. Skip New Invoice too; it watches Stripe Invoices, which InvoiceQuickly never creates.

  3. Step 3: Add a Filter so only paid InvoiceQuickly sessions continue

    Add a Filter by Zapier step with two rules: the metadata invoiceNumber value from the trigger exists, and payment_status exactly matches paid. The first rule drops checkout sessions created by other tools on the same Stripe account. The second drops bank-debit sessions that complete before the money arrives.

  4. Step 4: Convert the amount, then add your action

    Stripe sends amount_total in minor units, so $850.00 arrives as 85000. Add Formatter, choose the Numbers event and the Perform Math Operation transform, pick Division and divide by 100. Then add the step you want: Google Sheets Create Spreadsheet Row, Slack Send Channel Message, or Gmail Send Email.

  5. Step 5: For PayPal, catch the invoice-paid event with Webhooks by Zapier

    Zapier's PayPal app has no trigger for a paid invoice; its New Invoice trigger fires when an invoice is created, which for InvoiceQuickly means when you create the link. Instead, start a Zap with Webhooks by Zapier and the Catch Hook trigger, copy its URL, and add it as a second webhook on the same PayPal REST app you connected to InvoiceQuickly, subscribed to INVOICING.INVOICE.PAID. PayPal allows up to 10 webhook URLs per app, so InvoiceQuickly's own webhook stays in place.

  6. Step 6: Test with one real payment, then turn the Zap on

    Zapier needs a sample record to map fields. Pay a small invoice through your own link, pull that record into the Zap, map the fields listed in the tables below, and publish. Check that the invoice also shows as paid in InvoiceQuickly; that confirms the separate InvoiceQuickly webhook is working too.

What you get

What this Zapier workflow gives you

What you get

  • A message or email soon after a client pays, started by Stripe's Checkout Session Completed trigger rather than by someone checking the dashboard
  • A running payment log in Google Sheets keyed by invoice number, which lines up with the Invoice Number column of InvoiceQuickly's CSV export
  • A Slack post for your team when an invoice is paid, so nobody chases a client who has already settled
  • A personal thank-you from your own Gmail; InvoiceQuickly does not send the client a confirmation when it records a Stripe or PayPal payment
  • Filter and Formatter steps do not use Zapier tasks, so each paid invoice costs one task per action step
  • Zapier never needs your InvoiceQuickly login; the Zap reads only your Stripe or PayPal account

Best for

  • Freelancers who want a Google Sheet of every card or PayPal payment, keyed by invoice number, for month-end bookkeeping
  • Small teams who want a Slack channel message when a client pays, without giving everyone an InvoiceQuickly seat
  • Consultants who send a personal thank-you or next-steps email once a project invoice is settled
  • Not a fit if most clients pay by bank transfer, cash or check that you record by hand: those payments never pass through Stripe or PayPal, so no Zap runs

Reference

Stripe Checkout Session fields from an InvoiceQuickly link

What the Checkout Session Completed trigger carries when the session came from Create Stripe link, and how to use each field. Names are Stripe's API field names; Zapier shows them with readable labels in the test record.

Stripe fieldWhat InvoiceQuickly puts thereUse in the Zap
metadata.invoiceNumberYour invoice number, for example INV-0042Filter rule (exists); Sheets Invoice column; Slack and Gmail text
metadata.invoiceIdInvoiceQuickly's internal invoice IDOptional unique key for the row; never show it to clients
metadata.paymentProviderIdThe ID of your Stripe connection in InvoiceQuicklyIgnore; it changes if you disconnect and reconnect Stripe
amount_totalThe balance when you created the link, in minor units (85000 = $850.00)Formatter Division by 100, then the Sheets Amount column
currencyThe invoice currency in lowercase, such as usd or gbpSheets Currency column; Slack text
payment_statuspaid once funds are confirmed; unpaid for delayed bank debitsFilter rule: exactly matches paid
customer_details.email and customer_details.nameWhat the payer typed on Stripe Checkout; InvoiceQuickly does not prefill itGmail To field and greeting; may differ from the client email on the invoice
payment_intentThe Stripe PaymentIntent ID (pi_...), which InvoiceQuickly saves as the payment referenceSheets Reference column for matching against Stripe payouts
idThe Checkout Session ID (cs_...)Sheets column if you want a link back to the session in Stripe

Scroll sideways to see every column.

line_items (the Invoice INV-0042 line) is not returned on the session unless it is expanded, so rely on metadata.invoiceNumber rather than the line name.

Reference

PayPal INVOICING.INVOICE.PAID fields for a Catch Hook Zap

The event's resource is the PayPal invoice InvoiceQuickly created. Paths follow PayPal's webhook and invoice formats; confirm them against the record your Catch Hook receives.

PayPal fieldWhat it holdsUse in the Zap
event_typeINVOICING.INVOICE.PAIDFilter rule: exactly matches, since a Catch Hook accepts any request sent to its URL
resource.statusPAID when fully paid; PayPal also sends this event for partial and pending paymentsFilter rule: exactly matches PAID
resource.detail.invoice_numberThe InvoiceQuickly invoice numberSheets Invoice column; Slack text
resource.payments.paid_amount.value and .currency_codeA decimal amount, such as 850.00, and the currency codeSheets Amount and Currency columns; no division needed
resource.primary_recipients billing_info.email_addressThe client email from the InvoiceQuickly invoice, if it had oneGmail To field
resource.idThe PayPal invoice ID that InvoiceQuickly matches the payment toSheets Reference column

Scroll sideways to see every column.

Setup

Setting it up

You need three things before building a Zap. First, InvoiceQuickly Pro with Stripe or PayPal connected and its webhook working, so InvoiceQuickly already marks invoices paid on its own; the Stripe and PayPal pages cover that setup. Second, a paid Zapier plan. As of October 28, 2026, Zapier's Free plan allows two-step Zaps only, with no Filter, Formatter, premium apps or webhooks, and PayPal is a premium app on Zapier. Professional starts at $29.99 a month, or $19.99 a month billed annually, for 750 tasks. Third, the account access to add an app to Zapier: Stripe login rights for the Stripe Zap, or the PayPal Developer Dashboard for the REST app you gave InvoiceQuickly. Task math for a typical month: 30 invoices paid by card, with a Zap that adds a Sheets row and posts to Slack, uses 60 tasks; the Filter and Formatter steps add nothing. For testing, create a small invoice to yourself, choose Create Stripe link, pay it, and use that session as the Zap's sample. An owner or admin can refund it afterwards from the Payments page in InvoiceQuickly. For the PayPal Catch Hook, the sample appears only after PayPal sends a real INVOICING.INVOICE.PAID event to the hook URL, so pay a small PayPal link from a different PayPal account.

Good practice

Best practices

Filter on both invoiceNumber and payment status

The Stripe trigger fires for every completed Checkout Session on the account, including sessions from Stripe Payment Links or a shop, and sessions whose bank debit has not cleared. Two Filter rules, metadata invoiceNumber exists and payment_status exactly matches paid, keep the log to money that has actually arrived for an InvoiceQuickly invoice.

Key every row by invoice number

Use metadata.invoiceNumber or resource.detail.invoice_number as the first Sheets column, not the payer's name. Payers type their own name and email at checkout, and a client's accounts team may pay under a different name. The invoice number matches the Invoice Number column of the CSV export from InvoiceQuickly.

Add Zapier next to InvoiceQuickly's webhook, never in place of it

InvoiceQuickly marks invoices paid only from its own webhook. Do not delete, edit or repoint the webhook endpoint you created for InvoiceQuickly in Stripe or PayPal. For PayPal, the Catch Hook is an additional URL on the same REST app.

Keep the Catch Hook URL private

A Catch Hook accepts whatever is posted to its URL. Unlike InvoiceQuickly's endpoint, it does not ask PayPal to verify the signature. Keep the URL out of shared documents and keep the event_type and resource.status filter rules, so a stray request cannot write a fake payment row.

Decide who emails the client

Stripe sends its own receipt if Successful payments is switched on under Settings, Business, Customer emails in the Stripe Dashboard. If it is, make the Gmail step a short personal note rather than a second receipt, or turn one of them off.

Troubleshooting

Common issues

The Zap runs but the invoice number is blank

The Zap probably starts from New Payment or New Charge. Those PaymentIntent and Charge records do not carry the session's metadata, so switch the trigger to Checkout Session Completed. If the trigger is already right, the session came from another tool on the same Stripe account; add the metadata invoiceNumber exists rule to the Filter.

Amounts show as 85000 instead of 850.00

Stripe reports amount_total in minor units. Add a Formatter step with Numbers, Perform Math Operation, Division by 100 and map its output into Sheets, Slack or Gmail. The PayPal paid_amount value is already a decimal and needs no change.

The PayPal Zap never fires

Open the REST app you connected to InvoiceQuickly in the PayPal Developer Dashboard and check that the Catch Hook URL is listed as a webhook subscribed to INVOICING.INVOICE.PAID, in live mode, and that the Zap is published. If you used the PayPal app's New Invoice trigger instead, it fires when the PayPal invoice is created, which happens when you choose Create PayPal link, not when the client pays.

The Zap fired but the invoice is still unpaid in InvoiceQuickly

The Zap and InvoiceQuickly receive the event separately, so a working Zap proves nothing about InvoiceQuickly's webhook. Check the InvoiceQuickly endpoint's deliveries in Stripe or PayPal, fix the URL or secret, and resend the event. Both providers retry failed deliveries for a while: Stripe for up to three days, PayPal up to 25 times over 3 days.

Scope

What this workflow does not do

  • InvoiceQuickly has no app in Zapier's directory, no public API and no outgoing webhooks, so there are no InvoiceQuickly triggers or actions; a Zap cannot create, read or update invoices or clients in InvoiceQuickly
  • A Zap cannot mark an invoice paid in InvoiceQuickly, and does not need to: InvoiceQuickly records Stripe and PayPal payments from the provider's webhook on its own
  • Only payments made through an InvoiceQuickly Stripe or PayPal link reach Zapier; bank transfers, cash, checks and any payment you record by hand do not
  • There is no event for an invoice being sent, viewed, overdue or reminded, or for an estimate being accepted
  • The Stripe and PayPal records carry the invoice number and amount, not InvoiceQuickly's line items, tax, due date or client address
  • Filter, Formatter, multi-step Zaps, Webhooks by Zapier and the PayPal app all need a paid Zapier plan

Questions

Zapier and InvoiceQuickly: questions

Is there an InvoiceQuickly app on Zapier?

No. The Zaps on this page run on your own Stripe or PayPal account. They work because InvoiceQuickly labels each payment link with the invoice number: Stripe metadata invoiceNumber, or the PayPal invoice's invoice_number.

Which Stripe trigger should I use for paid invoices?

Checkout Session Completed. InvoiceQuickly's Stripe links are Checkout Sessions, and the invoice number is in the session's metadata. New Payment and New Charge return the PaymentIntent and Charge, which do not carry that metadata. Add a Filter for payment_status exactly matching paid.

Can a Zap mark my InvoiceQuickly invoice as paid?

No, and it does not need to. InvoiceQuickly records the payment from the Stripe checkout.session.completed or PayPal INVOICING.INVOICE.PAID webhook it receives directly. If an invoice stays unpaid, fix that webhook; a Zap cannot write to InvoiceQuickly.

Does this work on Zapier's free plan?

Not as described. As of October 28, 2026, Zapier Free allows 100 tasks a month and two-step Zaps only, with no Filter, Formatter, premium apps or webhooks. Professional starts at $19.99 a month billed annually, or $29.99 monthly, for 750 tasks. Filter and Formatter steps use no tasks, so 30 paid invoices with two actions each use 60.

How do I get PayPal payments into a Zap?

Use Webhooks by Zapier with the Catch Hook trigger, and add its URL as a webhook on the PayPal REST app you connected to InvoiceQuickly, subscribed to INVOICING.INVOICE.PAID. Filter on resource.status exactly matching PAID, because PayPal also sends that event for partial and pending payments.

Will my client get two payment emails?

InvoiceQuickly sends none when it records a Stripe or PayPal payment. Stripe sends a receipt only if Successful payments is on in its Customer emails settings. If it is, keep your Gmail step to a short thank-you so the client is not sent two receipts.

Sources

Official documentation

The Zapier steps on this page follow these official pages. Menus and plan limits change, so check them before you rely on a detail.

Create your first invoice

The Free plan covers 5 invoices in total with PDF download. Pro is $9/month for unlimited invoices, email delivery and Stripe or PayPal payment links.

Start free

Last verified: October 2026