Skip to content

Online payments with Stripe (Pay Now and statement links)

Connect a Stripe account to Torqueflow and you can email or text customers a Pay Now link for any unpaid invoice. The customer pays with a card on Stripe-hosted checkout. The payment lands back in Torqueflow against the invoice automatically. You can also send a single statement link that pays multiple outstanding invoices in one go — the system splits the payment across them oldest-first.

This guide covers connecting Stripe, sending a Pay Now link, sending a statement payment link, and what the customer sees.

For in-person card payments on a physical terminal, see TakePayments card terminal. The two payment rails can be used together — Stripe for online, TakePayments for in-person.

  • You are an Owner. Stripe Connect setup needs the settings.payments.manage permission.
  • To send Pay Now links and view confirmations, you need finance.payments.collect. Owner and Manager have this by default.
  • An invoice must have an outstanding balance for Pay Now to appear.
  • For statement payments, the customer must have at least one unpaid sales invoice.
  1. Go to Settings → Billing → Accept Payments.
  2. On the Stripe card, click Connect Stripe Account.
  3. You are redirected to Stripe’s onboarding flow (Standard Account Links). Sign in to your existing Stripe account, or create one.
  4. Provide the details Stripe asks for — business identity, bank account for payouts, identity verification.
  5. Stripe sends you back to Torqueflow. The Stripe card now shows your masked Connected Account ID and the status of card payments.
  6. Pay Now buttons stay hidden until Stripe confirms card_payments are active. This usually takes a few minutes after onboarding completes.

To disconnect, click Disconnect Stripe on the same card. Pay Now disappears immediately. Existing in-flight Stripe links continue to work until they expire.

  1. Open the invoice from Finance → Sales Invoices.
  2. Click Pay Now to take payment yourself in front of the customer (e.g. front desk, phone), or Send Payment Link to email or text the customer.
  3. Pay Now opens Stripe Checkout in a new tab — you can hand it to the customer or have them use it on their own device.
  4. Send Payment Link options:
    • Email with subject “Invoice {number} — Pay Now”. The PDF is attached.
    • SMS with a short URL.
  5. Once the customer pays, the invoice flips to Paid within a few seconds. The payment appears in the invoice’s payment history with the method “Stripe”.

If you click Pay Now on the same invoice within 30 minutes of a previous click, Torqueflow re-uses the existing Stripe link instead of creating a fresh one. This prevents accidental duplicate sessions if you double-click.

Section titled “Send a statement payment link for multiple invoices”
  1. Open the customer’s statement from their detail page.
  2. Click Pay Total to take a card payment in person, or Send Statement Payment Link to email or text the customer.
  3. Stripe Checkout shows a single line “Outstanding balance — N invoices” with the aggregate total. The customer pays once.
  4. Torqueflow splits the payment across the customer’s outstanding invoices oldest first (FIFO):
    • Each invoice is paid in full where possible, then the next.
    • A partial payment leaves the last touched invoice in Part paid.
    • An overpayment (rare — happens if invoices change between link creation and payment) leaves an unallocated remainder visible on the staff confirmation page.

After a customer pays, the staff confirmation page at Finance → Payments → {sessionId} shows:

  • The amount received.
  • Which invoices were credited and how much each got.
  • The payment method (“Stripe”).
  • Any unallocated remainder, if relevant.

You can also see the payment in the source invoice’s Payment History card.

  1. They receive an email or SMS with a Pay Now link.
  2. The link opens Stripe-hosted checkout — Torqueflow does not see card details. The customer sees the amount, your business name (from your Stripe account), and a card form.
  3. After paying, they land on a Torqueflow success page. It shows the amount and a confirmation that payment has been received. The page deliberately does not show invoice details, your business address, or any other PII.
  4. If the link has expired (30 minutes after creation), the customer is told to ask you for a fresh link.
  5. If the payment is processing (rare — usually 3DS), the page auto-refreshes for a minute showing “Payment processing…”.
  • The 30-minute reuse window protects against double-charges from accidental double-clicks. After 30 minutes, Pay Now creates a fresh Stripe session.
  • All Pay Now sessions are time-bound. Customers who try to pay an expired link see a friendly “this link has expired” page.
  • Stripe fees apply per Stripe’s published rates and are deducted before payouts to your bank.
  • Stripe Connect onboarding is typical UK Standard onboarding — bank account, identity verification, business details. Stripe handles this entirely.
  • Refunds are issued through the credit note flow. See Credit notes and refunds.

Problem: I do not see a Pay Now button on an invoice. Cause: Either Stripe is not connected, the invoice has no outstanding balance, or card_payments is still pending on your Stripe account. Fix: Settings → Billing → Accept Payments. Confirm Stripe shows the Connected Account ID and that the card payments capability is active. If you just onboarded, give Stripe a few minutes.

Problem: Customer paid but the invoice still shows Unpaid. Cause: Stripe’s webhook is occasionally delayed. Fix: Refresh the invoice within a minute. If it stays Unpaid for more than five minutes, check Stripe’s dashboard for the payment, then contact support.

Problem: Payment landed but allocated to the wrong invoice. Cause: Statement payments allocate oldest-first. If you wanted the customer to pay a specific invoice, send the per-invoice Pay Now link instead. Fix: For future statement payments, choose Pay Now on the specific invoice. To re-allocate a paid statement payment, contact support — manual re-allocation is a support task in this version.

Problem: Customer says the link expired. Cause: Pay Now links are valid for 30 minutes after creation. Fix: Click Send Payment Link again on the invoice or statement. A fresh link is sent.

  • settings.payments.manage to connect and disconnect Stripe.
  • finance.payments.collect to create Pay Now sessions and send payment links.