Counterline

Your quotes should use your customer's prices.

Counterline resolves every line against the buying company's own Shopify catalog before you quote anything — so you never discount from the wrong number.

For Shopify stores with B2B enabled. 14-day free trial on every plan.

The problem

Shopify gives you B2B. It doesn't give you quoting.

Companies, catalogs, price lists, payment terms — all of it is there. The one thing missing is the step before the order, so quoting falls back to a spreadsheet and an email thread. A rep prices a sheet by hand, sends a PDF, and retypes the whole thing into an order when the customer says yes.

A spreadsheet and an email thread

$18.00

The rep takes 10% off the retail price they looked up, feels generous, and quotes a customer whose catalog already says $15.00. Nobody notices until the invoice is disputed.

Counterline

$20.00  $15.00

Resolves the buying company's catalog first, weeks before there is an order. You discount from the number their contract actually says, and you can see both.

Nothing in a spreadsheet knows what this company pays, so nobody can check it until the invoice goes out. That is the failure this app exists to prevent — and when a product has no catalog price at all, Counterline says so instead of quietly falling back to retail.

Watch

One quote, start to finish

Recorded on a real Shopify store with real B2B data — no mockups. Under three minutes, no sound.

What you get

Every screen is the live app

Quote lines showing retail, catalog and quoted figures side by side

Retail, catalog and quoted on every line. You always know what you are really discounting from. Volume breaks apply automatically, and each line shows the next one up.

Amber warning that a product is missing from the buyer's catalog

Missing from the customer's price list? Counterline tells you, and names the line. No competitor does this — they quote retail and say nothing.

Draft order with locked prices, Net 30 and the company attached

Accepted quotes become real B2B orders. Purchasing company attached, payment terms intact, and the negotiated price locked so nothing recalculates it.

Buyer portal showing catalog price against the quoted price

Buyers respond from a link on your own domain. No login, no account to create. They accept, decline, or ask for changes, and every message is kept with the quote.

A quote blocked because a discount exceeded the ceiling

Discount ceilings stop a quote before it goes out. Margin rules are checked per line, so one item sold below cost cannot hide behind a healthy average.

Request a quote form on a storefront product page

A request-a-quote block for your product pages. Added from the theme editor — no code injected into your theme, and it comes out cleanly if you remove it.

How it works

From install to a real order

Nothing to configure before your first quote. If your store already has a B2B company with a catalog, you are ready.

  1. Install and open Counterline

    It runs inside your Shopify admin and uses your existing session. There is no separate account, and no password to remember.

  2. Start a quote and pick the company

    Choose the buying company and its location. The location decides which catalog applies, which is why prices differ between a customer's warehouses.

  3. Add products

    Every line resolves against that company's catalog, including quantity price breaks at the quantity you entered. Quantity rules — minimums, maximums, increments — are checked before you send.

  4. Negotiate

    Change a quoted figure and the discount against catalog is shown immediately. If a discount breaches a rule you have set, the quote is held for approval rather than going out.

  5. Send it

    The buyer gets a link on your own domain. They see their catalog price beside your quoted price, your payment terms, and three buttons: accept, decline, or ask for changes.

  6. Turn it into an order

    An accepted quote becomes a Shopify draft order with the purchasing company, location and contact attached — so payment terms and tax exemption carry through, and the negotiated price is locked in.

Pricing

Every plan does the actual job

Catalog-anchored pricing, the buyer portal, PDF export and B2B order creation are on every plan, starting at $15. Paid tiers add reach and control, not the thing the app is for. Every plan has a 14-day free trial.

Free

$0
  • Development stores only
  • Every feature, no limits
  • For evaluating before you buy

Starter

$15 / month
  • Quoted from the buyer's own catalog
  • Buyer portal on your own domain
  • Download any quote as a PDF
  • Quotes become real B2B orders
  • 100 quotes per month
  • 3 users
  • Request-a-quote block for your store
  • Automatic expiry reminders

Growth

$45 / month
  • Everything in Starter
  • Unlimited quotes
  • 10 users
  • Discount and order-value ceilings
  • Per-line margin floors
  • Reps scoped to their own companies
  • Branded quote PDFs

Scale

$99 / month
  • Everything in Growth
  • Unlimited users
  • Priority support, 1 business day

Billed through Shopify. 14-day trial on paid plans.

Questions

Before you install

Do I need Shopify B2B?

Yes, for catalog pricing — that is what Counterline reads. B2B is available on Basic, Grow and Advanced as well as Plus. You can still quote a retail customer by email, but the prices will come from your retail catalog, and the app will tell you that is what happened.

Does it change my theme?

No. The storefront quote button is a theme app block you add and remove from the theme editor. Nothing is injected into your theme files, and nothing is left behind if you uninstall.

Do my buyers need an account?

No. A quote reaches them as a link on your own domain, protected by a random token. They accept, decline or ask for changes without signing in anywhere.

Can I send a quote as a PDF?

Yes, on every plan. The document shows catalog and quoted price together and links back to the live quote, so whoever has to approve it internally can still act on it. On Growth and above it carries your own business details and accent colour.

What happens to my quotes if I uninstall?

Quotes are commercial records, so they survive an uninstall and are still there if you reinstall. Shopify asks apps to erase store data 48 hours after an uninstall, and at that point everything is deleted.

Does the negotiated price survive into the order?

Yes, and this is the part that has to be done deliberately. Shopify resolves a B2B order against the company's catalog, which is right for an ordinary order and wrong for a negotiated one. The agreed figure is written to the draft order as a price override, so it is the price that stands rather than being recalculated.