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 owe something on at least one sales invoice dated up to today.
  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 and 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 the subject “Payment request: invoice {number} from {your business}”. 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”.

The link charges the invoice’s balance today. That is the total, less credit notes, less what has been paid, plus anything refunded to the customer’s card. So a card refund on a part-paid invoice does not lower what the customer is asked to pay. If nothing is owed, no link is created.

If you click Pay Now on the same invoice within 30 minutes of a previous click, and the amount has not changed, 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 the customer record, click the Invoices tab, then Open statement.
  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: 3 invoices”, with the total. The customer pays once. If you email the link, the subject reads “Statement from {your business}: {amount} due”.
  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, and only when invoices change between link creation and payment) leaves an unallocated remainder visible on the staff confirmation page.

The statement link charges what the customer owes today, the same figure as the Balance on their customer record:

  • Every invoice dated up to today that still has money owing is included, overdue ones too.
  • Invoices dated after today are left out.
  • An invoice in credit is never taken off the total. A credit does not reduce what the link charges.
  • The amount does not depend on the date range of the statement on screen.

A link always carries the figure at the moment you hand it out.

  1. Creating or sending a new link cancels any older open link that covers any of the same invoices. A single-invoice link cancels an open statement link that includes that invoice, and the other way round. So a customer only ever holds one live link per invoice.
  2. If you try to create a link and nothing is owed, older open links for those invoices are cancelled too.
  3. Voiding an invoice cancels its open payment links shortly after the void.
  4. A change to the balance after you hand out a link (a payment at the counter, a credit note or an edit) does not cancel that link. If the customer then pays the older amount, the money is kept. Anything over what is owed is recorded as unallocated, never lost.

If Torqueflow cannot confirm with Stripe that an older link is cancelled, it creates no new link and shows an error. The customer may be paying the old one at that moment. Wait a minute and try again.

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 or been cancelled, 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, or if the amount has changed, Pay Now creates a fresh Stripe session and cancels the old one.
  • A link stays payable for up to 24 hours unless a newer link or a void cancels it first.
  • 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 and 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: The link is more than 24 hours old, or a newer link for the same invoice, or a void, cancelled it. Fix: Click Send Payment Link again on the invoice or statement. A fresh link is sent.

Problem: The statement link charges a different amount from the statement’s Total Due. Cause: The link charges what is owed today across every invoice up to today, without taking credits off. Total Due covers the statement’s date range and subtracts credits. Fix: Nothing to fix. The link amount matches the Balance on the customer record.

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