Saved successfully
Dashboard
Total Quotes
All time
Accepted
Acceptance rate
Active Clients
Total clients
Invoiced This Month
Loading…
Recent Quotes
Quote IDClientDateStatus
Quotes by Status
Recent Invoices
Invoice IDClientPeriodTotalStatusCreated
No invoices yet
#ClientFormulasShippingDateStatusNotes
Quote Details
Formulas to Quote Pricing table will show all quantities (1, 2, 3, 6, 9, 12)
Formula Tier
Quote Summary

Select a client and add products to see the summary.

Client Name Contact QuotesLast Quote
Client Information
Quote History
#DateFormulasShippingStatus
Product SKU Mapping
Formula IDFormula NameClient SKU
Formula ID Formula Name Weight (oz)Tier 1Tier 2Tier 3Tier 4Tier 5
Define margin and discount for each pricing tier
Pricing Logic

Base Price = Product Cost ÷ (1 − Margin %)

Discounted Price = Base Price × (1 − Discount %)

Line Total = (Discounted Price + Shipping/unit) × Qty


Example — Gold tier (30% margin, 10% discount), Product Cost $5.40, Qty 6:
Base = $5.40 ÷ 0.70 = $7.71 → Discounted = $7.71 × 0.90 = $6.94 / unit

Manage team access
Name / EmailRoleStatusInvite Link
Weight-based domestic ground rates (Tier 1–5)
Domestic Ground Rates
Weight RangeTier 1Tier 2Tier 3Tier 4Tier 5
No rates loaded — import a CSV
Weight-based international rates by zone
International Rates
Weight RangeCA / UK / AustraliaRest of World
No rates loaded — import a CSV
Import History
FileClientPeriodImportedRowsMatchedUnmatched
No imports yet
✓ Matched Rows
Order #Ship DateRecipientSKUProductClientQty
Invoices
Set to Sent after emailing, Paid once received
Invoice ID Client Period Total StatusCreated
No invoices yet

How To Use — Pronto Quotation App

Complete step-by-step guide for the full workflow — from setup to generating a client invoice.

App Overview

Pronto is a fulfillment quotation and invoicing tool. The core workflow is: set up your catalog → quote clients → import ShipStation shipment data → generate invoices automatically based on what was actually shipped and at what agreed price.

  • Clients — the companies you fulfill for
  • Formulas / Products — your SKUs with weight and pricing tiers
  • Pricing Tiers — volume-based discount schedules per client class
  • Shipping Rates — domestic and international rate tables by weight
  • Quotes — agreed pricing for a client covering specific products and a shipping tier
  • ShipStation Import — monthly CSV upload of what was actually shipped
  • Invoices — auto-generated from the import using accepted quote prices

1 Initial Setup — done once

Before quoting or invoicing, you need your catalog, pricing, and shipping rates configured.

A
Go to Formulas. Add every product you fulfill. Each formula needs a SKU, name, weight in ounces (used for shipping cost calculation), and pricing for up to 5 tiers (Tier 1 = standard, Tier 5 = best/highest volume). Use Bulk Add to import many at once.
B
Go to Fulfillment & Shipping → Domestic and International. Upload your rate tables. Domestic rates have 5 tier columns (matching your pricing tiers). International rates have two zones: CA/UK/AU and Rest of World. Weight ranges are in ounces.
C
Go to Clients. Add each client company with their contact info, address, and assigned pricing tier. You can also manage their SKU mappings from this view.

2 Client SKU Mapping

Each client identifies your products by their own SKU codes (e.g. "TIB-BS-001") rather than your internal formula IDs. This mapping tells the system how to translate ShipStation shipment lines into your products.

1
Open a client from Clients, then click Manage SKUs. A modal opens showing all formulas.
2
For each formula the client orders, type their SKU code in the input field. Leave blank for formulas they don't use. Click Save SKUs.
3
Each client SKU must be globally unique — two clients cannot share the same SKU code. The system will show an error if a conflict is detected, naming the client that already holds that SKU.
Tip: SKU mapping also works inline — if you upload a ShipStation CSV and some SKUs are unmatched, you can assign them to a formula directly in the import detail view without re-uploading.

3 Creating & Managing Quotes

A quote is an agreed price list for a specific client covering a set of products and a shipping arrangement. Invoices use the Accepted quote price for each product.

1
Go to QuotesNew Quote. Select the client, shipping type (Domestic or International), and the shipping tier. Add the formulas they're ordering — pricing is set per formula in the product catalog, and the account manager selects which tier to apply per line when building the quote.
2
Save the quote. It starts as Draft. Share it with the client. When they confirm, change the status to Accepted. Only Accepted quotes are used for invoice pricing.
3
A client can have multiple Accepted quotes (e.g. different quotes for different products, or a renegotiated price). If two Accepted quotes cover the same product at different prices, the system will ask you to choose which price to use before generating an invoice.
Quote statuses: Draft → Sent → Accepted or Rejected. Only Accepted quotes feed into invoice generation.

4 ShipStation Data Import

At the end of each billing period, export the shipment CSV from ShipStation and upload it here. The system matches each shipment line to a client and product using the SKU mapping, then validates everything before letting you generate invoices.

1
Go to Invoicing → ShipStation data import. Select the Billing Period (month/year) and the Client this CSV is for. Then click Upload CSV and choose your ShipStation export file.
2
The system immediately parses the file and shows a summary: total rows, matched (green), unmatched (red). You'll be taken to the import detail automatically.
3
If there are unmatched SKUs: a red section appears at the top of the Unmatched card. For each unknown SKU, select the correct formula from the dropdown and click Save Mapping. The rows are re-matched instantly — no re-upload needed. Invoices cannot be generated until all SKUs are matched.
3b
SKU already claimed by another client: If the SKU you're trying to map is already assigned to a different client, an amber warning strip appears naming that client. Click Reassign to this client → to move the mapping over. The previous client's mapping for that SKU is removed. Use this when a SKU code has been reused or transferred between accounts.
4
Once all rows are matched (unmatched = 0), a green bar appears: click Generate Invoices.
Required CSV columns: Order Number, Order Date, Ship Date, Recipient Name, SKU, Item Name, Quantity. Include a Ship Country column (2-letter country code, e.g. US, CA, GB, AU) for correct domestic vs. international shipping classification. Rows without a country code default to domestic.
One import per client per period. Upload a separate CSV for each client. The system filters SKU matching to only that client's mappings, so mixing clients in one file will result in unmatched rows.

5 Generating Invoices

Once an import has no unmatched SKUs, click Generate Invoices in the import detail. The system groups all shipment rows by product, finds the applicable Accepted quote price, and creates an invoice automatically.

1
Normal case: One Accepted quote per product → invoice created immediately. You'll see a toast "Generated 1 invoice" and be taken to the Invoices list.
2
Price conflict: If two Accepted quotes cover the same product at different prices, a modal appears. For each conflict, select which quote's price to apply, then click Generate with Selected Prices.
3
No quote found: Products with no matching Accepted quote are invoiced at $0.00 with a "No quote" flag. You can still generate and then manually adjust the notes field, or create an Accepted quote first and delete/regenerate the invoice.
4
Duplicate prevention: Clicking Generate a second time for the same import returns an error naming the existing invoice. Delete the existing invoice first if you need to regenerate.

6 Managing Invoices

Go to Invoicing → Invoices to see all invoices. Each invoice has a product line-items section and a Shipping & Fulfillment section that auto-calculates shipping cost per order based on product weights and your rate tables.

1
Status workflow: Invoices start as Draft. Change to Sent after you email it to the client. Change to Paid when payment is received. Status can be changed directly in the invoices list (no need to open the detail).
2
Click View to open the full invoice detail: client address, line items with quote reference, shipping cost per order, and a grand total (products + shipping).
3
Use the Print / PDF button in the invoice detail to open a print-ready version in a new window. Use your browser's print dialog (Ctrl+P / Cmd+P) to save as PDF.
4
Click Delete (in the list or detail view) to permanently remove an invoice and its line items. This also frees that import to be re-generated if needed.
Shipping calculation: Requires (a) product weights set in Formulas, (b) domestic and/or international rate tables loaded under Fulfillment & Shipping, and (c) the applicable quote having a shipping type and tier set. The Shipping & Fulfillment section on each invoice shows a row per order with a 🏠 Dom or ✈ Intl badge, the order weight, and its shipping cost. Domestic and International subtotals are shown separately at the bottom. If rates are not configured, the shipping section shows $0.00.

Recent Updates

Column sorting — Click any underlined column header in Clients, Formulas, or Invoices to sort ascending or descending. Click again to reverse.
Clone a quote — In the Quotes list, click Clone on any row to instantly duplicate it as a new Draft with today's date. Useful for repeat orders or similar clients.
Invoice filters — The Invoices page now has All / Draft / Sent / Paid pills at the top to quickly narrow the list by status.
Needs Attention widget — The Dashboard shows an amber alert card whenever there are unmatched SS imports, unsent Draft invoices, or Sent quotes with no response after 7 days. Disappears automatically when resolved.
$
Client lifetime value — Open any client to see four stats at a glance: total lifetime billed (Paid invoices only), number of paid invoices, total quotes, and quote acceptance rate.

7 Analytics

Go to Analytics to see revenue, volume, and quote performance data across any date range, client, or formula.

📅
Filter by date range: Choose This Month, Last Month, This Quarter, This Year, or Custom to pick exact dates. Leave all filters blank to see lifetime stats.
📊
Six summary cards show: Total Invoiced, Total Paid, Outstanding (sent but unpaid), Units Shipped, Draft Invoices, and Quote Acceptance Rate — all recalculated live when you apply filters.
📈
Monthly Revenue chart shows invoiced amounts per month as bars. Hover each bar for the exact total and invoice count for that month.
🚚
Shipments by Method table breaks down all shipments into Domestic and International rows, showing units, total weight, and the shipping cost charged for each. The classification uses the Ship Country from each ShipStation row, respecting the quote's shipping type setting. Totals are shown in a summary row at the bottom.
🏆
Top Formulas by Volume ranks formulas by units shipped with product revenue and a Total row. Top Clients by Revenue ranks clients by total invoiced — this table is automatically hidden when you filter by a specific client, since you're already looking at just that one.
Scale note: Analytics are computed server-side using SQL aggregation — the page handles hundreds of clients and thousands of invoices without slowdown.

8 Settings

Go to Settings to configure how quote and invoice IDs are formatted.

Prefix — Set any short label (e.g. Q, QT, INV, BILL) that appears before the hyphen in every new document ID.
#
Digits — Set how many zero-padded digits follow the prefix (2–8). For example, 4 digits produces Q-0001, while 6 digits produces Q-000001.
👁
A live Preview panel shows what the next ID will look like as you type. Click Save Settings — changes take effect immediately for all new documents.
Admin only. Only users with the Admin role can change settings. Non-admins can view the current configuration but cannot save changes.

Monthly Billing Workflow

Do this every billing period:

1
Export shipment CSV from ShipStation for the billing period, filtered per client.
2
Go to ShipStation data import → select period + client → Upload CSV.
3
If unmatched SKUs appear, assign them to formulas inline. Repeat for each client.
4
Click Generate Invoices. Resolve any price conflicts if prompted.
5
Open each invoice → Print / PDF → send to client → change status to Sent.
6
When payment comes in, change status to Paid.
Loading analytics…
Monthly Revenue

No data yet

Quote Performance

No data yet

Shipments by Method
Shipping Method Units Weight Shipping $
No data yet
Top Clients by Revenue
ClientInvoicesInvoicedPaid
No data yet
Top Formulas by Volume
FormulaUnitsRevenue
No data yet
Document Numbering

Configure the prefix and digit count used when generating new quote and invoice IDs. Changes take effect for all new documents immediately after saving.

Letters or numbers, e.g. Q or QT
Zero-padded digits (2–8)
Letters or numbers, e.g. INV or BILL
Zero-padded digits (2–8)
Preview
Next Quote ID
Q-0001
Next Invoice ID
INV-0001