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. Free plan available.

The problem

Draft orders don't know about B2B catalogs

Shopify gives you companies, catalogs and payment terms. It does not give you quoting. Most quote apps fill that gap with draft orders — and draft orders resolve retail prices, not the price list your customer actually negotiated.

A draft-order quote app

$20.00

Quotes your retail price. You discount 10% off it, feel generous, and bill $18.00 — to a customer whose contract says $15.00.

Counterline

$20.00  $15.00

Resolves the buying company's catalog first. You discount from the number the contract actually says, and you can see both.

You find out at invoice time, when the customer disputes it. 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

The core of it is free

Catalog-anchored pricing, the buyer portal and B2B order creation are on every plan, including the free one. Paid tiers add reach and control, not the thing the app is for.

Free

$0
  • 10 quotes per month
  • 1 user
  • Quoted from the buyer's own catalog
  • Buyer portal on your own domain
  • Quotes become real B2B orders

Starter

$49 / month
  • Everything in Free
  • 100 quotes per month
  • 3 users
  • Request-a-quote block for your store
  • Automatic expiry reminders

Growth

$99 / month
  • Everything in Starter
  • Unlimited quotes
  • 10 users
  • Discount and order-value ceilings
  • Per-line margin floors

Scale

$249 / month
  • Everything in Growth
  • Unlimited users
  • Priority support

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.

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 that is the part most quote apps get wrong. The agreed figure is written to the draft order as a price override, so Shopify does not recalculate it from your catalog when the order is created.