Invoicing & billing — bill the customer, take payment, and keep your books in sync
Who it's for
Owners and managers create invoices, request deposits, record payments, issue refunds, void mistakes, and connect their accounting software. Designers hold the Billing & Quotes permission by default, so they can reach Money → Invoices and a job's Invoices tab and work with invoices there. Production and installer roles do not see invoices by default. Refunds are the one exception inside the permission: only the shop owner, or a Manager who holds Billing & Quotes, can issue one.
Your customers never log in. They receive a private pay link, review the invoice, and pay by card or bank account (ACH) through Stripe Checkout, no account required. If you do not take card payments yet, the same page tells them how to pay you instead.
Where it fits
Invoicing is the back end of the job lifecycle. A quote is approved, the work is scheduled (or done), and you turn that quote into an invoice, send the pay link, and collect. The job's profitability panel reads invoice totals, so an accurate invoice keeps your margin numbers honest. See workflow-map.md for the full lead-to-paid pipeline.
The deposit is the one place invoicing reaches back into quoting. When a customer approves a quote online, Wraptor can create the deposit invoice for them on the spot; when you mark a quote approved yourself, the sheet asks what to do about the deposit. Both are covered below and in Quotes.
This page is about billing your customers. Paying Wraptor for your own subscription is a different matter, covered in Plans.
Overview
A Wraptor invoice is a branded bill tied to one job. It carries the same subtotal, tax, and total as the quote it came from and, when the quote asked for a deposit, it is split into a Deposit charge and a Balance charge. Every invoice gets a number in the format INV-0001 and a due date 30 days out, counted on your shop's calendar (the Timezone under Settings → Communications → Customer messages; Eastern time until one is set), so an invoice made late in the evening is due 30 days from that day — the date printed on the invoice, the pay page and the PDF is the day reminders treat as due.
Invoices come from three doors:
- From an approved quote. The normal path. The invoice copies the quote's pricing, the quote stays linked to it, and the number is chained to the quote's number where it is free (
SO-00005becomesINV-0005). - Automatically, when a customer approves a deposit quote online. Wraptor creates the deposit invoice, marks it sent, and shows the customer a Pay deposit button the moment they approve. Governed by Money → Quote Settings → Quote defaults.
- A blank invoice. A flat amount with an optional deposit percent, for a walk-in with no quote. Available on a job that has no invoice and no approved quote.
You can record payments two ways:
- Manually, for offline payments — Check, Zelle, Cash, or Other. You type the amount and method. Card and bank/ACH are never recorded by hand; they come in through the pay link.
- Automatically, when a customer pays online through their pay link. Wraptor records the Stripe payment, updates the invoice, emails the customer a receipt, and rings your bell with the net amount.
Partial payments are supported. As payments land the invoice moves to Partial and shows the remaining balance; once the balance reaches zero it flips to Paid. Every payment, online or recorded by hand, sends the customer one receipt email with the receipt PDF attached (the same RECEIPT copy their pay page offers). There is no confirmation prompt to click through.
Card and bank processing is paid by you, not added on top for the customer: 3.2% + 55¢ per card payment · 1% (max $5) + 0.25% + 25¢ per bank (ACH) payment, deducted before payout. That is Stripe's processing and payout costs plus a small buffer for cards that cost more; there is no separate Wraptor percentage.
Monthly payments (Affirm / Klarna) let a customer split a bill of $50 or more into monthly payments while you're paid the full amount up front. They cost 6.3% + 55¢ per monthly-payment (Affirm / Klarna) checkout, deducted the same way, and your card and ACH rates don't change. Monthly payments are off for every shop until Wraptor turns them on for your account and you switch them on under Money → Payments (see below); until then nothing about your pay page changes.
Screens & navigation
Money hub (/money)
Invoicing lives in the Money hub in the main navigation. Its tabs are Quotes, Invoices, Payments, Expenses, Standards, Payroll (multi-seat plans), and Reports. Old /billing links redirect here.
Money → Invoices (/money?tab=invoices)
Every invoice for the shop, newest first, with four headline numbers: total billed, outstanding, collected, and overdue. Filter chips All · Unpaid · Draft · Sent · Partial · Paid · Overdue · Void (each with a count when it has any; Unpaid is Sent, Partial and Overdue together) and a Search invoices… box narrow the list — search matches the invoice number, the customer, the customer's contact name, or the job number. Each row shows the invoice number and due date, the customer (the job's own customer, so a print, sign or booking job with no vehicle still says who it's for), the job, a status badge, the total, the amount paid, and the balance. The row's actions are a PDF button, a Copy pay link button (on Sent, Partial, and Overdue invoices with a balance; it points at the deposit while the deposit is still owed), and Record Payment (shown while a balance is owed on anything but a Draft or Void invoice). Clicking the invoice or job number opens the job. The phone layout has the same chips, search, Copy pay link, and Record Payment.
Money → Payments (/money?tab=payments)
The Getting paid card, then Payments received.
- Getting paid — row Card & bank (ACH) — Stripe shows Set up payouts, Finish payment setup, or the Payments active chip, with the processing line underneath. Row Offline payments (Zelle / cash / check) is a switch plus a Zelle handle (email or phone) field; when it is on, your Zelle handle prints on the customer's pay page. Once Stripe payments are active the card folds to one line — "Card & ACH payments active · Offline payments on · Zelle {your handle}" — with Manage to open it again and Done to fold it back.
- Monthly payments (Affirm / Klarna) — a row between the two, shown only once Wraptor has turned monthly payments on for your account and only for shops billing in US dollars (off for everyone else, and the card looks exactly as it did). It states the price before you switch it on: "Processing: 6.3% + 55¢ per monthly-payment (Affirm / Klarna) checkout", that you're paid in full up front, that Affirm or Klarna takes the loss if the customer doesn't pay, and that it's for personal purchases only. The Offer monthly payments switch is greyed out with "Set up card payments above first." until Stripe payments are active. Turning it on asks Stripe to review your business for Affirm and Klarna, then shows a chip per provider: Affirm · Active, Klarna · Under review, Affirm · Not approved, or Not active yet. While a review is open the row says "Stripe is reviewing your account for Klarna. That usually takes minutes, sometimes a few days — customers see it once it's active." with a Check status button; a provider Stripe declined says so ("Stripe support can review the decision"); and until at least one is active the row warns "Customers won't see monthly payments until Affirm or Klarna is active." With the switch on, the folded line adds "· Monthly payments on".
- Payments received — every payment that came in, newest first: the date (your shop's day, the same one the totals count it on), the customer, the invoice number (it opens the job's Invoices tab) and job number, the method with its reference underneath (the check number, or the Stripe reference your bank line shows), the amount net of refunds, and the tip. A refunded payment wears a Refunded chip (struck through when all of it went back) or Refunded $X with the net beside it. A payment on a voided invoice wears Void invoice.
- Three totals sit on top: This week (from Monday), This month and Last month, in your shop's timezone. They're net of refunds, leave out payments on voided invoices, and never include tips — a tip is listed on its payment and nowhere else.
- Method chips (All, Card, Check, Cash, Zelle, Stripe… — whichever you've taken) narrow the list, and the three totals follow the chip, so "how much came in by check this month" is one tap.
- The list shows the newest 200 payments and says so when there are more; the totals always count every payment. A team member limited to some locations sees only payments on those locations' jobs. On a phone the list is stacked cards with the amount, any refund chip and the tip.
Job → Invoices tab Most day-to-day invoice work happens on the job. The job's Invoices tab (next to Quotes; both need the Billing & Quotes permission) shows each invoice as a card:
- Invoice number, a status badge, and a from SO-xxxxx link to the quote it came from.
- Total, Paid, Balance, and Due Date.
- A Charges list — Deposit and Balance rows, each with an amount and a Pending / Processing / Paid / Void chip, and a Copy link for each charge still owed once the invoice is sent (a Draft's charges show no link yet).
- A Payments list — amount, method, a Manually recorded chip for offline payments, a Refunded $X chip where money went back, the reference, the date, and a Refund control.
- Buttons that change with the status: PDF (always); Edit, Send invoice, and Delete on a Draft; Copy Payment Link once Sent, Partial, or Overdue; Record Payment while a balance is owed (Draft, Sent, Partial, or Overdue); Void once Sent, Partial, or Overdue; Delete on a Void.
- Change deposit (or Add deposit) above the charges, while nothing has been paid.
With no invoice on the job yet, the tab offers Create invoice when the job has an approved quote, or Create blank invoice when it does not.
Quote page → Actions On an approved quote that has a job, the Actions menu offers Request deposit / payment and Create Invoice. The job's Quotes tab shows a Create Invoice button on an approved quote that has no invoice yet.
Customer pay page (/pay/<token>)
The no-login page your customer sees when you share their pay link. Covered in its own section below.
Settings → Accounting & Billing Where a Manager connects QuickBooks or Xero and manages sync, and where your own Wraptor subscription lives. Covered below.
Settings → Customer messages The Money group there holds the three invoice emails: Invoice sent (Always), Invoice reminders (a switch), and Payment receipt (Always). See Settings.
Capabilities
Creating invoices
- From an approved quote. Quote page → Actions → Create Invoice, the job's Quotes tab → Create Invoice, or the job's Invoices tab → Create invoice. The invoice copies the quote's subtotal, both tax lines, total, and notes, links to the same job, and gets a due date 30 days out. If the quote asks for a deposit, the invoice is split into a Deposit charge (due now) and a Balance charge (due on the due date). A fixed-dollar deposit converts to its exact percent so the charge matches to the cent.
- Wraptor enforces this on the server: a draft or merely sent quote cannot be invoiced, and the quote must already be attached to a job.
- One live invoice per quote. Clicking Create again returns the existing invoice; only a voided invoice frees the quote for a fresh one.
- Blank invoice. On a job with no invoice and no approved quote, Create blank invoice asks for Invoice amount ($) and Deposit percent (50 by default; 0 means the whole amount is due at once). The number chains to the job number where it is free.
- Numbers are assigned automatically in
INV-0001format; the next free number is used when the chained one is taken.
Requesting a deposit or payment in one step
- On an approved quote with a job: Actions → Request deposit / payment. Wraptor creates the invoice (with the deposit split when the quote has one), marks it Sent, copies the pay link to your clipboard — pointed at the deposit while the deposit is still owed — and opens the invoice email so you can send it. Once the deposit is paid, the copied link collects the balance. The toast reads "Deposit requested — $X pay link copied" or "INV-x sent — pay link copied".
- Create Invoice beside it creates a Draft instead and takes you to the job's Invoices tab.
Deposit invoices at approval
- Customer approves online. When a customer approves a quote on their link, Wraptor can create the deposit invoice for them, already Sent, and show Pay your deposit with a Pay deposit button on the approved quote page and in their confirmation email. The rule is Money → Quote Settings → Quote defaults → Request the deposit automatically when a customer approves online: Automatic (only when you take card payments and the quote asks for a deposit), Always (create it even without card payments; the pay page then shows your payment instructions), or Never. The deposit is due immediately, the balance in 30 days.
- If no payable invoice exists, the customer sees How to pay with your Payment instructions from the same card, or, when that box is blank, "the shop will send you payment details".
- You mark the quote approved. The Mark approved sheet never mints an invoice silently — it asks. Its Deposit choice is I already collected it (the job is marked Deposit in, and the customer's confirmation email, if you send it, asks for no deposit; no payment is recorded, so if you later use Request deposit / payment on that quote, the new invoice is held as a Draft instead of asking the customer for the deposit again — "This job's deposit is marked as already collected… record the deposit you took with Record payment, then send it."), Send a pay link — $X (creates the deposit invoice, marks it Sent, and copies the pay link), or No deposit right now. The pay-link choice is greyed out when the quote asks for no deposit or your shop cannot take card payments yet.
- Your approval bell and email name the deposit: "$X deposit invoiced" with the pay link to forward, or "$X deposit to collect" with a link to the quote, where Request deposit / payment finishes the job.
Asking for money when a job reaches a stage (stage actions)
- Under Settings → Workflow → Automation → Stage actions you can put Request the deposit or Request the balance on a stage — say the deposit at Scheduled and the balance at Ready for pickup. When a job enters that stage, the customer gets a branded email ("Deposit due: INV-0042 — $500.00" / "Balance due: …") with a Pay deposit / Pay now button straight to that charge on the pay page.
- It only ever re-sends the pay link of an invoice you've already sent. It never creates an invoice, and the amount is what's still owed on that deposit or balance, the same number your reminders and the pay button use.
- It stays quiet when there's nothing to ask for: the deposit is paid, nothing is owed, the job is marked Deposit in, reminders are paused on the invoice, or the same request already went out in the last 24 hours. It tells you (one bell) when you need to act: the invoice is still a Draft ("send it once and this action takes over from then on"), the job has no invoice yet, or there's no usable email on file.
- A customer approving a quote online doesn't fire it: the job the approval creates starts in its stage without running that stage's actions, and an existing job isn't moved. If your shop takes the deposit automatically on approval, the "quote approved" email already carries the deposit link, so a Request the deposit on Approved asks a second time when you then drag the job there. The 24-hour guard only counts earlier stage-action requests.
- The email waits for your quiet hours like the other automatic emails, and lands in the job's message timeline as Payment request (stage action). Setting it up needs the Settings and Billing permissions and an active plan or live trial (see Settings). Stage actions are off until Wraptor turns the feature on.
Editing a draft
- On a Draft, Edit opens Subtotal ($), Tax rate (%), Due date, and Notes, with the New total previewed; Save changes recomputes the tax lines from the invoice's own taxable basis. When the new subtotal differs from the quote's, the PDF, the pay page and the copy in your accounting platform all list the quote's lines plus one Adjustment line for the difference, so every copy adds up to the same total. Once an invoice is sent it is frozen: void it and create a new one with the corrected amount.
- Change deposit / Add deposit lets you set a Deposit amount ($) or choose No deposit while nothing has been paid; the pay link and reminders switch to the new amounts and the balance is recomputed.
Invoice statuses
- Draft — created but not sent. Its pay link is not on offer yet, and opening it can't take a payment until you send the invoice.
- Sent — marked sent; the pay link is live and the invoice is pushed to your accounting platform.
- Partial — at least one payment is recorded but the balance is not covered.
- Paid — payments cover the full total; a paid date is stamped.
- Overdue — Wraptor flips a Sent or Partial invoice to Overdue when its first automatic reminder goes out (see reminders below).
- Void — cancelled; it no longer counts as owed and cannot be reopened.
- Inside Wraptor these print as the raw words. Your customer sees plain language on the pay page instead: Due, Partly paid, Past due, Paid, or Cancelled.
Sending an invoice
- Send invoice on a Draft stamps the sent date, pushes the invoice to your accounting platform, and always opens the Invoice sent email (subject "Invoice INV-x from {shop}", button Pay Invoice). You can send it, Schedule for later, or Skip Email and share the link another way.
- Copy Payment Link copies the pay link; each Deposit or Balance row still owed has its own Copy link so you can point the customer at one piece. Money → Invoices has the same Copy pay link on each open invoice's row, and Money → Quotes has it on an approved quote's row once its invoice is out.
- Emailing an invoice from Wraptor works on every plan and during the trial; you can also copy the link and text it, or send it from your own mail.
Recording payments (offline)
- Record Payment logs an offline payment. The dialog says so: offline payments only (Zelle, cash, check); card and bank (ACH) are collected through the secure payment link.
- Method: Check, Zelle, Cash, or Other.
- Apply to: Deposit — $X, Balance — $X, or Whole invoice (deposit is covered first). Each amount is what is still owed on that part: a $300 deposit with $200 already recorded reads Deposit — $100.00 left of $300.00. The deposit is pre-selected when it is still owed, and the Amount pre-fills to what's left on it; adjust it for a partial payment. More than what's left on the chosen part is flagged ("the rest counts toward the invoice"), and paying more than the balance is accepted but flagged; the extra is recorded as collected on this invoice.
- Optional Reference # (check number or transaction ID), Proof URL, and Notes.
- Wraptor adds up all payments and sets Partial or Paid, marks the charges the money covers, flips the job's deposit flag when the deposit is covered, and kills any open online checkout minted for the old amounts.
- Recording works on a Draft too — a walk-in handing over a cash deposit does not need Send invoice first.
- The customer's receipt goes out automatically. There is nothing to send by hand.
Payments, receipts, and your bell
- Every payment, online or recorded by hand, emails the customer one receipt: subject "Receipt — INV-x ($amount)", the receipt PDF attached as
INV-x-receipt.pdf(RECEIPT, PAID IN FULL or PARTLY PAID — the same document as Download receipt (PDF) on their pay page; see below), showing the amount, the method ("Card", "Bank (ACH)", "Zelle"…), and the remaining balance or "Paid in full". It is an Always row under Settings → Customer messages and is never held by quiet hours. - An online payment rings your bell as Deposit paid — INV-x or Invoice paid — INV-x with the money line "$682.09 by card · $22.38 processing · $659.71 to your Stripe balance" (or "by bank transfer").
- Manual and online payments both fire the
invoice.paid/invoice.deposit_paidwebhooks for your integrations. - If a customer pays from a tab they opened before you deleted the invoice or changed its deposit split, Wraptor records nothing (the charge they paid no longer exists), rings your bell with Payment of $X on INV-x wasn't recorded — check it, and tells Wraptor's support. Record it on the invoice by hand or refund it from Stripe.
Refunds
- The Refund control beside a payment defaults to the full refundable amount and accepts a smaller one. Card and ACH refunds go through Stripe: the refunded amount comes out of your Stripe balance, and the processing fee is not returned, because Stripe keeps its own processing fee when a payment is refunded. The refund control says so: Processing fees aren't returned. A refund on a Zelle, cash, or check payment records the reversal only, so you hand the money back yourself.
- Affirm and Klarna payments refund through Stripe the same way, and their processing fee isn't returned either. The money goes back to Affirm or Klarna, who settle with the customer (an Affirm refund takes about two days to settle). Refund within 120 days of the payment for Affirm and 180 days for Klarna, and a Klarna payment can't be refunded while it is disputed.
- Only the shop owner or a Manager with Billing & Quotes can refund. Totals, the pay page, and the PDF all show payments net of refunds with a Refunded $X line.
- A refund issued from the Stripe dashboard instead of Wraptor is also taken from your Stripe balance and mirrored back onto the payment, once Wraptor's Stripe webhook receives refund events.
- When a refund (or a lost dispute) reopens an invoice, its automatic payment reminders pause, so the customer isn't chased for money that was just returned to them. The invoice card says Automatic payment reminders are paused for this invoice. If they really do still owe it, press Resume reminders there.
Card disputes (chargebacks)
- Your customers' card payments run through Wraptor's Stripe platform, so a dispute lands on Wraptor's account and Wraptor responds to the bank on your behalf. You'll get a Payment disputed — $X on INV-x bell.
- Send your proof to support@wraptor.app as soon as you see it, with the invoice number: the signed quote or approval, before/after photos, the invoice, and your messages with the customer. The bank's deadline is short, and Wraptor can only submit what you send.
- While the dispute is open, the disputed amount is held from your Stripe balance.
- Won: the money comes back to your Stripe balance minus Stripe's $15 dispute fee (Stripe does not refund that fee, even on a win).
- Lost: the money stays with the cardholder, the invoice reopens for the reversed amount with its reminders paused, and Stripe's $15 dispute fee is added to your next Wraptor bill if you're on a paid plan (on a trial or a canceled plan, Wraptor follows up about it instead).
Voiding an invoice
- Void on a Sent, Partial, or Overdue invoice, after a confirmation. The pay link stops offering the owed charges, any open checkout is closed, and if the invoice was synced to QuickBooks or Xero it is voided there as well.
- Voiding does not refund recorded payments; refund first if money must go back. An invoice cannot be voided while a bank (ACH) payment is still settling.
- Void is terminal. To correct an amount, void and create a new invoice; the quote is free to be invoiced again. Once a job's only invoice is void, its Invoices tab shows No live invoice above the void card, with Create invoice (from the approved quote) or Create blank invoice; the job card's quote tab offers Create invoice again too, and its → INV-x pill is struck through.
Deleting an invoice
- Delete appears on Draft and Void invoices only, and only when no payment is recorded and no ACH payment is in flight. It cannot be undone and cancels any invoice email waiting in the send-later queue. Deleting an invoice does not delete the job or the quote.
Downloading a PDF
- PDF on the invoice card, or the printer icon on Money → Invoices, opens
/api/invoices/<id>/pdf: your logo (on a dark plate when Light or white logo is switched on under Settings → Shop Settings), a FROM block, a BILL TO block from the customer record, the line items (Description, Category, Qty, Unit Price, Amount), Subtotal, tax, Total, a PAYMENT SCHEDULE ("Deposit — due now", "collected {date}", "processing"), PAYMENTS RECEIVED, any Refunded line, and Balance Due. Processing fees are never printed on the invoice, the PDF, or the receipt. - Your customer downloads the same PDF from their pay page, with no login (see below). Their receipt is that PDF titled RECEIPT instead of INVOICE: the invoice DATE, a PAID ON date once it is paid in full, a status of PAID IN FULL or PARTLY PAID, each payment listed with its date and method ("October 1, 2026 — Card"), a Total Paid line, and the Balance Due, which is still shown in red when money is owed. A receipt is only ever offered for money that actually came in; a payment you refunded in full doesn't count.
Invoice reminders
- Wraptor sends up to three reminder emails while an invoice stays unpaid, about six days apart: "A friendly reminder: INV-x — $X due", "Second reminder: …", and "Final reminder: …", each with a Pay now button. The balance charge is chased once its due date has fully passed on your shop's calendar (never on the due date itself); a deposit gets a seven-day grace period after the invoice is sent.
- The first reminder flips the invoice to Overdue and rings Invoice INV-x is now overdue — $X outstanding. After the third, Wraptor stops and rings Time to call {customer} — $X still unpaid on INV-x.
- The switch is Settings → Customer messages → Money → Invoice reminders, on by default; it is the only control you set, and it covers the whole shop. Reminders wait for your quiet hours and stop for a customer who turns off Reminders about your work on their preferences page.
- One automatic exception: when a refund or a lost dispute reopens an invoice, that invoice's reminders pause by themselves. Press Resume reminders on the invoice card if the customer still owes the money.
- Reminders are only sent when the invoice is Sent, Partial, or Overdue. A Draft is never chased.
Where else the customer sees the invoice
- Their tracking page (
/track/<token>) lists every open invoice with its live balance, "Balance due" or "Past due" and the due date in your region's format, and a link to the pay page: Pay securely online → once you take card payments, See how to pay → before then (the pay page shows your payment instructions instead of a button). Each one is also a row in the tracker's Waiting on you list at the top. - Their customer portal — the Portal link you copy from the customer record (
/fleet/<token>) — opens on a Balance due section with a Pay button per invoice. - The install reminder that goes out about two days before the job's date asks for the deposit, with a Pay deposit link straight to it, only when a sent invoice has a deposit with money still owed on it. An invoice with no deposit (deposits off, or a blank invoice at 0%) never triggers the ask, and neither does a deposit you marked paid or one already covered by recorded or synced payments.
The customer pay link (no login required)
Once an invoice is Sent, its pay link is live. Click Copy Payment Link on the invoice (or Copy link on a single charge) and send it however you like: email, text, or in person. Request deposit / payment puts it on your clipboard for you, and Copy pay link on a row in Money → Invoices copies it without opening the job.
What your customer sees on the pay page:
- Your logo (or shop name), an Invoice eyebrow, the invoice number and job, and a state pill: Due, Partly paid, Past due, Paid, or Cancelled.
- Their company and vehicle.
- Items carried over from the quote (a declined optional add-on is left off), the subtotal, tax, a small note on which parts are taxed, the total, anything already Paid, and, when there is a deposit split, Deposit — due now / collected / processing and Balance, then the Balance due and Due by {date}.
- A Pay $X deposit or Pay $X button with "Pay by card or bank account (ACH), powered by Stripe." The button collects the next amount owed: the deposit first, then the balance. On a phone the button rides a bar pinned to the bottom of the screen, with Balance due $X beside it, so the customer never has to scroll past the whole invoice to pay; it stays clear of the iPhone home bar. Any Full balance or tip choices sit just above it in the invoice. From tablet width up it is an ordinary button under the totals.
- Pay monthly with Affirm or Klarna, under the Pay button after an "or", when you've turned monthly payments on and a provider is active. It shows for an amount of $50 or more that the provider takes (Affirm up to $30,000, Klarna up to $10,000, so a $12,000 bill reads Pay monthly with Affirm). From $500 up, Affirm or Klarna's own "As low as $X/mo" estimate sits under it with their terms behind the ⓘ — Wraptor never works out a monthly figure itself — and every time the line "Estimate only. Subject to approval at checkout — rates and terms come from Affirm or Klarna and aren't available in every state. The shop is paid in full." A tip is never financed: while the customer has a tip chosen, the button gives way to "Monthly payments don't include a tip — choose No tip to pay monthly."
- Prefer Zelle? with your handle (Send to) and the invoice number (Memo), each with its own Copy button that reads Copied for a moment once tapped, when Offline payments and a Zelle handle are on under Money → Payments. Copying instead of retyping is what keeps a Zelle payment matchable to its invoice.
- A Payment History list. Offline payments you recorded show as Manually recorded; refunds show as Refunded $X.
- A download button under the invoice, full width on a phone. While nothing has been paid it reads Download invoice (PDF). Once the invoice is paid in full it reads Download receipt (PDF). On a part-paid invoice (a deposit in, the balance still owed) both buttons show, with the line "The receipt shows the $X paid so far and the $Y still due." A voided invoice offers neither.
- ← Back to your job (the tracking page) or, for an invoice whose job has no tracking link yet, ← Back to your quote. Every plan, the trial included, drops the Powered by Wraptor line; only a shop with no plan shows it.
When they click Pay they go to Stripe Checkout for that charge and can pay by card or, for USD shops, US bank account (ACH). After paying they land back on the pay page with Payment Successful! and the invoice updates by itself; you record nothing. If they cancel, they see Payment Cancelled and can try again.
Pay monthly opens its own checkout with only Affirm and/or Klarna in it. The customer applies there; once approved they land back on Payment Successful!, you're paid the full amount, and the payment is listed via Affirm (or Klarna) with a bell like "$4,800.00 by Affirm · $302.95 processing · $4,497.05 to your Stripe balance". If they're declined or back out they see Payment Cancelled and can pay by card or bank instead — a monthly-payment checkout never turns into a card one. If monthly payments can't be offered right then, the page says "Monthly payments aren't available for this invoice right now. You can pay by card or bank above."
A few things worth knowing:
- When you don't take card payments yet. The Pay button only appears once Stripe is connected and charges are enabled. Otherwise the page shows How to pay: your Payment instructions from Money → Quote Settings → Quote defaults, word for word, or, if that box is blank, "Online card payment isn't available for this invoice yet. Contact {shop} at {phone or email} to arrange payment — they will record it here."
- A customer who tries to pay before setup is finished. If a pay page from before setup still shows a button and the customer presses it, the checkout is refused and you get a bell and an email: A customer just tried to pay INV-x — finish payment setup, at most once per invoice per day, linking to Money → Payments. If Stripe reports your payout account as disconnected, the bell reads A customer couldn't pay INV-x — payment setup needs attention.
- Deposit before balance. The button collects the deposit first; once that is settled the next visit shows the balance. A fully paid invoice shows Paid with no Pay button, and Download receipt (PDF) under it; a voided one shows Invoice voided.
- ACH takes a few days. A bank transfer shows Payment processing (ACH) ("ACH bank transfers take 3–5 business days to settle. No funds are counted until the transfer clears."), the charge shows Processing on your side, and the invoice only moves to Paid when Stripe confirms it. A bank payment that bounces returns the charge to owed. Card payments are instant.
- Processing fees. The customer pays the invoice amount and nothing more. You pay 3.2% + 55¢ per card payment and 1% (max $5) + 0.25% + 25¢ per bank (ACH) payment (Stripe's processing and payout costs plus a small buffer), deducted before payout, shown on the Getting paid card and on your paid bell. A bank payment is charged the card rate at checkout and the difference is refunded to your Stripe balance when the transfer clears.
- The pay link is public by design. Anyone with it can view and pay. It uses an unguessable token; send it only to the customer.
Connecting QuickBooks or Xero
Wraptor can keep your invoices, payments, and customers in sync with QuickBooks Online or Xero. Set it up under Settings → Accounting & Billing → Accounting (the Settings permission is required).
Connecting
- Go to Settings → Accounting & Billing.
- Click Connect QuickBooks or Connect Xero.
- Sign in at the provider and authorize Wraptor; you return to Settings with the company name shown as connected.
- The company file or organisation must use the same currency as your shop (set under Money → Quote Settings → Sales tax & region). A mismatch is rejected during connect with "That company's currency doesn't match your shop's currency, so it can't be connected." This applies to both QuickBooks and Xero.
- Import customers brings your existing QuickBooks or Xero customers into Wraptor. The first run asks once — Import customers or Don't import — and you can change your mind later. QuickBooks sub-customers and projects are skipped; so are Xero supplier-only contacts. A provider customer whose email or name matches one of yours is linked to it instead of being created again.
What syncs
- Invoices, approved quotes (as estimates), and customers created in Wraptor push to your accounting platform.
- Payments recorded on either side stay in sync.
- Customer records are matched by email or name and kept up to date.
- A voided invoice is the only one held back. With Auto-sync on, an invoice is pushed as soon as it is created — a Draft included — and again when you mark it sent; Sync Now pushes drafts too. Voiding a synced invoice voids it in your books as well.
- Deleting a synced Draft voids its copy in your books first. A synced Void invoice can't be deleted; it stays as the record of that void.
- Quotes push only once approved; drafts, declined and expired quotes stay out of your books.
- A blank invoice (no quote lines) pushes as one line for the pre-tax subtotal with the invoice notes as its description.
- Past invoices and payments already in QuickBooks or Xero are not imported. Jobs themselves do not sync; their quotes, invoices, and payments do.
Sync preferences
- Auto-sync — sync changes as they happen and run the nightly pull (payments, status changes, imported customers, and any pending void fixes). Off means sync only when you click Sync Now.
- A payment your bookkeeper records in QuickBooks or Xero lands on the invoice exactly like one you record by hand: it settles the deposit first, then the balance, marks the job's deposit paid once it's covered, and closes any checkout the customer had open for the old amount (the pay link itself keeps working for what's left).
- Conflict resolution — Wraptor Wins (the default; Wraptor's data takes precedence, but a Paid status coming from your books is always accepted) or Last Write Wins (the most recent change from either side wins).
- Bank account for payments and Sales account for invoices (Xero only) — where payments are deposited and which account invoice lines post to. Automatic uses your only bank account and your Sales account. With more than one bank account, payments don't sync until you pick one; with no clear sales account, invoices arrive in Xero as drafts.
- Sync Now — run a full sync immediately.
- Recent Activity — a short log of sync events with success and error indicators.
- Reconnect — appears when the provider refuses the connection (an expired authorization). Reconnecting to a different company starts the links fresh.
Prefer to import manually? Without connecting, the same section offers Invoices CSV and Customers CSV downloads formatted for QuickBooks' own Settings → Import data wizard. Invoices import as open invoices; drafts and voided invoices are excluded.
Disconnecting
- Click Disconnect, then Yes, disconnect. Wraptor clears the accounting links on customers, invoices, payments, and quotes and removes the connection; your Wraptor data is untouched.
Step-by-step tasks
-
Create an invoice from an approved quote
- Approve the quote and make sure it has a job (see Quotes; approval creates the job).
- On the quote page choose Actions → Create Invoice, or on the job open the Invoices tab and click Create invoice.
- Wraptor assigns the
INV-xxxxnumber, copies the pricing, splits the deposit if the quote has one, and sets the due date 30 days out. - The new invoice appears as a Draft. Use Edit now if the subtotal, tax rate, due date, or notes need a change.
-
Send an invoice and share the pay link
- Open the job's Invoices tab and find the invoice card.
- Click Send invoice. The status changes to Sent and the invoice email opens for you to send — the customer gets nothing until you send it.
- Send the email, or click Skip Email and use Copy Payment Link to text the link instead.
-
Request the deposit in one step
- Open the approved quote and choose Actions → Request deposit / payment, or click Request deposit on its row in Money → Quotes.
- The invoice is created and sent, the deposit pay link is on your clipboard, and the invoice email opens. Send it or paste the link into a text.
-
Take an online payment (customer self-serve)
- Send the customer their pay link (task 2 or 3), or let a customer who approved online use the Pay deposit button on their quote.
- They open the link, review the amount due, and click Pay (the deposit first if there is one).
- They complete Stripe Checkout by card or bank account (ACH).
- The invoice updates, the payment shows in the Payments list, the receipt goes to the customer, and your bell shows the net after processing. (Card is instant; ACH settles in 3–5 business days and shows Processing until it clears.) No action needed from you.
-
Record a manual (offline) payment
- Click Record Payment on the invoice card or on its row in Money → Invoices.
- Choose the Method, pick what to Apply to (the deposit is pre-selected when it is owed), and adjust the Amount for a partial payment. Add a reference if you have one.
- Click Record Payment.
- The status updates to Partial or Paid, and the customer's receipt goes out on its own.
-
Handle a deposit, then the balance
- When the deposit comes in, record it against Deposit (task 5) or let the customer pay it online. The Deposit charge shows Paid, the invoice reads Partial, and the job's deposit flag is set.
- When the rest comes in, record it against Balance or let them pay online; their next visit to the pay page shows the balance. Once the total is met the invoice flips to Paid.
-
Refund a payment
- On the invoice card, click Refund beside the payment.
- Keep the full amount or type a partial one, then click Confirm. Card and ACH refunds go back through Stripe; an offline refund is recorded, and you return the money yourself.
-
Fix a wrong invoice
- On a Draft, click Edit, correct the figures, and Save changes.
- On a sent invoice, click Void and confirm. If it was synced, it is voided in your books too.
- Create the replacement right there: the Invoices tab now shows No live invoice with Create invoice (or Create blank invoice for an invoice with no quote). Correct the amount and send it.
-
Set up card and bank payments
- Go to Money → Payments.
- Click Set up payouts and complete the Stripe onboarding; you return to the same tab. Finish any remaining steps with Finish payment setup until the row shows Payments active.
- Optionally turn on Offline payments (Zelle / cash / check) and save your Zelle handle so it prints on pay pages.
- Once Payments active shows, click Done — the card folds to one line above your payments list. Manage opens it again.
-
Connect QuickBooks or Xero
- Go to Settings → Accounting & Billing.
- Click Connect QuickBooks or Connect Xero and authorize Wraptor. The company's currency must match your shop's.
- Click Import customers if you want your existing customers in Wraptor.
- Choose your Auto-sync and Conflict resolution preferences, then click Sync Now to push your existing invoices, payments, and customers.
-
Match a bank deposit, or check that a payment cleared
- Go to Money → Payments. Payments received lists every payment, newest first.
- Tap the method chip — Check, Card, Zelle — to see just those payments; the This week / This month / Last month totals change to that method.
- Find the row by date, customer or the reference under the method (a check number, or the Stripe reference on your bank line). The amount is what you kept after any refund; a tip is in its own column and never in the totals.
- Click the invoice number to open the job's Invoices tab with the full payment history.
Settings & permissions
Who can work with invoices
The Billing & Quotes permission controls Money → Quotes, Invoices, Payments, and Expenses, and the job's Quotes and Invoices tabs. By default:
- Manager — full access (create, send, record payments, refund, void, delete).
- Designer — has the permission; can create, send, record, void, and delete, but not refund.
- Production — no access by default.
- Installer — no access by default.
The shop owner always has full access. Refunds need the owner or a Manager with Billing & Quotes. Any role's access is granted or denied cell by cell on the permission grid at Shop → Team, which needs the Team permission.
Who can turn on monthly payments
The Monthly payments (Affirm / Klarna) switch on Money → Payments needs the shop owner or a Manager with Billing & Quotes. It applies to every location, so a team member limited to some locations can't change it and is told "Monthly payments apply to every location — ask the shop owner to change them."
Who can connect accounting
Accounting lives on the Settings page, which requires the Settings permission. By default only Managers (and the owner) have it.
Plan tiers
Invoicing is open on every plan and during the 7-day free trial (no card required), with no cap on open invoices — including the deposit invoice a customer's online approval creates for you. There is no free plan; a shop without a plan lands on the plan picker instead of the Money area. Canceling keeps existing invoices and payment history. Card and ACH payments, receipts, reminders, and refunds work on every plan, and so do monthly payments (Affirm / Klarna) once Wraptor has turned them on for your account and you've switched them on.
Deposit and payment defaults
The deposit a new quote asks for (None, Percent, or Fixed $), Request the deposit automatically when a customer approves online (Automatic / Always / Never), and Payment instructions live under Money → Quote Settings → Quote defaults; the Settings permission is required there.
Invoice emails
Settings → Customer messages → Money: Invoice sent and Payment receipt are Always rows (they are part of the action); Invoice reminders is a switch, on by default. The sender line at the top of that page shows which address your customers see the invoice from and where replies go.
Your own subscription
Settings → Accounting & Billing → Subscription shows your plan and usage and has Manage Subscription for cards, plan changes, invoices, and cancellation. See Plans.
Tips & common pitfalls
- Invoices come from quotes, blank invoices are the exception. The normal door is an approved quote. Create blank invoice exists for a job with no approved quote and no invoice; it is a flat amount, not an itemized bill.
- Approving can invoice for you, but only on the customer's door. A customer approving online creates the deposit invoice when your Quote defaults allow it. Marking a quote approved yourself never creates one unless you pick Send a pay link in the sheet. The final invoice for the work is still your step.
- One live invoice per quote. A quote backs exactly one invoice at a time. Void the invoice to bill the quote again; to bill a change without touching the accepted snapshot, create a separate quote.
- An invoiced quote stays attached. Wraptor refuses to delete a quote while an invoice links to it. Void or delete the invoice first if that is the intended correction.
- A sent invoice is frozen. Edit is only on a Draft. Void a sent invoice and create a new one; the pay link on the old one stops working the moment it is void.
- Online checkout charges one outstanding amount at a time. The deposit first, then the balance, never more than what is currently owed, so a partially paid invoice cannot be double-charged. A manual payment you record closes any checkout that was open for the old amounts.
- You don't record online payments or send receipts. Wraptor does. A Stripe payment appears by itself; recording it again overstates what they paid. Every payment emails one receipt automatically.
- The fee is yours, not the customer's. Card 3.2% + 55¢, ACH 1% (max $5) + 0.25% + 25¢, deducted before payout and shown net on your bell. It is not printed on the invoice or the receipt, and a refund does not return it: Stripe keeps its processing fee on a refund.
- Monthly payments are for personal purchases. Affirm and Klarna don't finance business purchases, and Stripe reviews your business before turning them on — a fleet or print-heavy shop may be declined. The 6.3% + 55¢ is yours, not the customer's (adding it to the bill is against Affirm's and Klarna's rules), and a refund doesn't return it.
- A dispute goes to Wraptor, with your proof. Send the signed quote, photos, invoice and messages to support@wraptor.app before the deadline. A lost dispute adds Stripe's $15 dispute fee to your next Wraptor bill when you're on a paid plan; a won one returns the money minus that fee.
- Voiding vs. deleting. Void keeps the invoice on record (and cancels it in your books); delete is only for a Draft or Void with no payments. Prefer Void once a link has gone out.
- Overdue comes from the reminders. An invoice turns Overdue when its first automatic reminder goes out, not on the due date itself. Recording full payment clears it to Paid. Turning off Invoice reminders also stops the flip.
- ACH money is not money yet. A Processing charge cannot be voided or deleted, and the invoice stays unpaid until the transfer clears in 3–5 business days.
- Currency must match for accounting. Both QuickBooks and Xero are rejected at connect when the company's currency differs from your shop's.
- Two senses of "billing." This page covers billing your customers (Money → Invoices). Paying for your own Wraptor plan lives under Settings → Accounting & Billing → Subscription. See Plans.
Related modules
- Quotes — invoices are created from approved quotes; the deposit invoice at approval and Request deposit / payment start there.
- Jobs — every invoice belongs to a job; the job's Invoices tab is where you work it, and the profitability panel reads invoice totals.
- Customers — the invoice's "Bill To", the customer's email for the pay link and receipts, and the Portal link with its Balance due section.
- Track — the customer's tracking page lists open invoices with a link to pay.
- Settings — Customer messages (invoice sent, reminders, receipt), Accounting & Billing, and the quote defaults under Money → Quote Settings.
- Plans — your own Wraptor subscription and the 7-day trial.
- Workflow map — where invoicing sits in the lead-to-paid pipeline.
- Personas — how owners, managers, and customers interact with billing.