Paying online
A restaurant can pay an invoice online by card or bank (ACH) through Stripe. The usual route is the pay link in the invoice email or text. They can also pay from a statement, or inside the mobile app. A card payment shows Paid within moments; a bank payment shows Processing for a few business days, then Paid. The supplier doesn't record anything: the payment appears on the invoice by itself.
The supplier has to set up online payments first. Until then the restaurant sees "Online payments are not available for this invoice. Please contact your supplier to enable payments on Clipp."
Who uses it
- Restaurants pay. The pay link and statement page need no login.
- Supplier staff send the links (by sending the invoice, a reminder or a statement) and watch the invoice change status.
How it works
Ways to pay
| Way | How the restaurant gets there | Card | Bank (ACH) |
|---|---|---|---|
| Pay link | The link in the invoice email or text, or an overdue or reminder message | ✓ | ✓ |
| Statement page | The link in a statement email or text. Each invoice row has its own Pay button, so one invoice per payment. | ✓ | ✓ |
| Mobile app | Paying an order in the restaurant app (verify the app screens) | ✓ | ✓ |
There's no way for a restaurant to pay several invoices in one online payment.
The pay link
- One link per invoice. It's created when the order is dispatched (Ready for delivery) and reused afterwards.
- It lasts 90 days, and the 90 days restart every time the supplier sends the invoice, a reminder or a statement, so links already sent keep working.
- It always charges the current balance. If the invoice changes after the link was sent, the restaurant pays the new amount.
- It's used up by a payment. Once a card payment goes through, or a bank payment is submitted, the link shows the paid or processing screen instead of the form.
What the restaurant sees, checked in this order:
| Situation | Title | Message |
|---|---|---|
| The link is wrong, or the invoice is cancelled or not dispatched yet | Invalid Payment Link | "This payment link is invalid, expired, or has already been used. Please check your email for the correct link or contact the supplier." |
| The link was used and the invoice is paid | Invoice Paid Successfully | "Invoice {number} ({amount}) has been paid in full." |
| The link is over 90 days old | Payment Link Expired | "This payment link has expired. Please contact the supplier to request a new payment link." |
| Just back from Stripe, waiting for confirmation | Payment Processing | "Your payment was successful! We're updating your invoice status. This usually takes just a few seconds." After 3 minutes: Payment Taking Longer Than Expected |
| The invoice is already paid | Invoice Already Paid | "This invoice has been paid in full" |
| A bank payment is clearing | Payment Processing | "Your {amount} payment is being processed. Please do not refresh this page or attempt another payment." and "This payment is being processed and may take a few minutes to complete. You will receive an email confirmation once the payment is finalized." |
| Otherwise | Invoice Payment | the payment form, below |
The payment form shows the invoice number, customer, supplier, due date and status, then Total Amount Due, then two buttons:
- Pay $X with Card: "Pay with credit or debit card. Payment processed immediately." When the restaurant pays the card fee, it adds "Credit card payments will include a 2.9% + 30¢ processing fee, applied by the payment provider."
- Pay $X with ACH: "Pay directly from your bank account. Processing typically takes 2-4 business days."
Underneath: "Secure payment processing by Stripe. Your payment information is encrypted and secure." and "If you have questions about this payment, please contact the supplier directly."
- The amount on both buttons is the balance without the card fee; Stripe adds the fee at checkout.
- If the restaurant comes back after cancelling at Stripe, the form says "Your previous payment was canceled. No charges were made. You can try again using the payment options below."
- If starting a payment fails: "Payment processing failed. Please try again or contact support."
- If a payment was just submitted from the same browser: "A payment for this invoice has already been submitted and is being processed. Please wait for confirmation or refresh the page."
At Stripe
The restaurant pays on Stripe's own checkout page.
- It shows one line, "Invoice {number}", for the balance due, plus a Credit Card Processing Fee line when the restaurant pays the card fee. It doesn't list items.
- The bank statement or card statement description reads "Invoice {number}".
- The checkout stays open about 36 to 41 minutes.
Stripe then sends the restaurant back to the pay link, which checks every 3 seconds for up to 3 minutes until the payment shows up.
If someone tries to pay twice
Clipp refuses a second payment while one is in progress: "This invoice payment is currently being processed. Please wait for the payment to complete before attempting another payment." Only one checkout can be open at a time across the pay link and the app. Starting another one replaces it, or says "A payment is already being processed for this invoice."
Statement page
Each unpaid invoice on a statement has its own Pay {amount} with ACH and Pay {amount} with Card buttons. Invoices that are Paid, Processing or Void have no button. After paying: "Invoice {invoice} paid successfully." or "Bank transfer for invoice {invoice} is processing — this can take 1–3 business days." The card fee note always shows here, even when the supplier absorbs the fee (see Known limitations). See Statements.
Calculations
Timeline by method
| Method | Right after paying | Later | Invoice shows |
|---|---|---|---|
| Card | Payment recorded as Paid, usually within seconds | The processing fee is booked once Stripe reports it | Paid or Partially paid straight away |
| Bank (ACH) | Payment recorded as Processing | Usually a few business days later (the app says 2–4 days in some places and 1–3 in others), it turns Paid and the fee is booked. Or it turns Failed. | Processing until it clears |
| Bank, needs verification | Payment recorded as Pending. The restaurant must confirm small test deposits Stripe sends to their bank. | Verified and cleared → Paid. Not verified within about 10 days → Failed. | Processing |
When a bank payment fails, the invoice goes back to what its other payments say, Unpaid with the full amount owed if there were none. Nothing was booked in Bookkeeping, nobody is notified, and the old pay link no longer works, so the supplier needs to send a new one.
What the restaurant is charged
Charged = balance due + the card fee, if any.
| $100.00 due | Card, restaurant pays fee | Card, supplier absorbs | Bank |
|---|---|---|---|
| Fee added | $3.20 | $0.00 | $0.00 |
| Charged | $103.20 | $100.00 | $100.00 |
| Recorded on the invoice | $100.00 | $100.00 | $100.00 |
How the fees are worked out, and what the supplier ends up paying, is on Processing fees.
A part-paid invoice
A $100.00 invoice with $40.00 paid in cash. The card fee is on what's owed: 60 × 2.9% + $0.30 = $2.04. Stripe shows "Invoice INV-1001" at $60.00 and the fee at $2.04, so the charge is $62.04. The invoice records $60.00.
Where it shows up
- The invoice: status, balance, Records (online payments show "Paid online by customer"), and the Activity Log ("ACH payment of $100.00 processing", then "Paid online by customer", or "… failed").
- Receipts & messages: the customer's receipt and the supplier's Payment Received email and push.
- Bookkeeping. The invoice PDF doesn't show the card fee the restaurant paid (see Known limitations).
Permissions
- The pay link and statement page work without signing in: the link itself is the permission.
- In the mobile app, restaurant staff need full Payment access.
- Suppliers can't take an online payment on a customer's behalf, except by charging a saved card. See Card on file.
Decisions
- Public pay links, one per invoice, valid 90 days. Restaurants can pay without signing in. (#1465)
- Each send refreshes the same link rather than making a new one. Links already out in emails and QR codes keep working. (From the code; no PR states it.) If an old link is clicked after its 90 days are up, it expires for good, and the next send makes a new one.
- No second payment while one is processing. It prevented duplicate charges. (#2036, #2499)
- One open checkout per order, and the charge must match the quote. The buyer is never charged differently from what they were shown. (#2443)
- A failed bank payment puts the invoice back to Unpaid, and nobody is notified. (#2343) QA has recommended alerting both sides; not decided.
- Orders take card and bank through the same pay link; PayPal isn't offered. (#2396)
- Stripe payments carry the invoice number. (#2205)
Specs
PFP-001 and PFP-002 on Processing fees, SOE-004 and SOE-008 in sale-order-emails.feature, ASB-001 to ASB-006 in ach-settlement-booking.feature, and IMM-034.
# prefix: PCI
Feature: PayPal Checkout Itemization
When a restaurant pays an order balance through PayPal, Clipp sends the order
to PayPal as itemized line items. PayPal rejects the checkout unless the
itemized total exactly equals the sum of the line items, and the amount charged
equals the itemized total minus the discount. Line items must therefore be
built on the same pricing basis used to compute the stored order totals:
catch-weight items bill by weight, standard items by unit quantity.
Background:
Given a restaurant owes a balance on an order
And the supplier accepts PayPal payments
Rule: Catch-weight items are billed by weight, not unit quantity
Scenario: PCI-001 a catch-weight line item is priced by its billed weight
Given the order contains a catch-weight item priced per weight unit
When the restaurant starts a PayPal checkout
Then the line item amount equals the unit price times the billed weight
And the itemized total equals the sum of the line items sent
Scenario: PCI-002 catch-weight returns reduce the billed weight
Given a catch-weight item has a partial return recorded by weight
When the restaurant starts a PayPal checkout
Then the line item is billed for the remaining weight only
And fully returned items are not itemized
Rule: Only fees actually charged are itemized
Scenario: PCI-003 a zero one-time fee is not sent as a line item
Given the supplier has no one-time fee on the order
When the restaurant starts a PayPal checkout
Then no supplier discretionary fee line item is sent
And when the supplier has a one-time fee it is itemized at its amount
Rule: The charged amount always reconciles with the itemization
Scenario: PCI-004 discounts and prior payments reconcile the itemized total to the amount due
Given the order has discounts or prior payments applied
When the restaurant starts a PayPal checkout
Then the discount equals the itemized total minus the amount due
And the amount charged equals the itemized total minus the discount
Known limitations
- A failed bank payment leaves the pay link dead. The link was used when the payment was submitted, so it now fails with "Payment processing failed…". Send the invoice again to create a new link.
- The invoice PDF doesn't list the card fee the restaurant paid, so its card statement shows more than the invoice.
- PayPal isn't offered. A supplier can still connect PayPal, but no pay link, statement page or app screen takes a PayPal payment.
- The statement page always shows the card fee note, even when the supplier absorbs the fee.
- The pay page's status chip shows raw words like "PENDING".
- Time-to-clear wording differs: "2-4 business days", "1–3 business days" and "a few minutes" all appear.
FAQ
Why is the payment still Processing? It's a bank (ACH) payment. Banks take a few business days to clear it. It turns Paid by itself, or Failed if the bank rejects it.
The customer says they paid but the invoice shows Unpaid. Their bank payment failed, or it's waiting for them to verify their bank account. Check Records and the Activity Log for "ACH payment of $X failed".
The customer's link says "Invalid Payment Link". The invoice is cancelled, not dispatched yet, or the link was used by a bank payment that later failed. Send the invoice again for a fresh link. A cancelled order's link stops working as soon as it's cancelled (SOE-008).
Why did the customer pay $103.20 on a $100 invoice? The card processing fee, 2.9% + 30¢, is added for the customer by default. See Processing fees.
Can a customer pay part of an invoice online? No. The pay link always charges the whole balance due.