Enter a list price or your cost and pick the vendor. Discount, freight and weight units come from the vendor card. Duty and border fees are added automatically to anything that actually crosses the border, and no quote goes out below the vendor's own list price.
How a price is built.
cost = list × (1 − vendor discount) ·
CAD = cost × rate × (1 + FX uplift) for a US vendor ·
landed = CAD + vendor freight + duty + border fees ·
sell = max(landed ÷ (1 − target margin), floor)
The floor. When a vendor's discount is deeper than your target margin, the target prices the item under the vendor's own list — 35% off at a 30% target quotes about 93% of list before fees. So every row carries a floor, and the quote is held there rather than dropped below it. Vendor list uses that row's list price converted to CAD; MAP takes a figure you type, for when the manufacturer's advertised minimum is the number that matters; no floor turns it off. A floored row is badged, and the margin shown is the one you actually hold at the floor, not the target you asked for.
After fees puts shipping, duty and border costs inside the divisor. Ask for 30% and you hold exactly 30% of the invoice. Before fees marks up the goods alone and passes the fees through at cost — the price still carries them, but they earn nothing, so the margin you hold comes in under target. The math line shows the real figure either way.
Duty follows the vendor by default. Switch a row to custom when a part classifies differently from the rest of the line. Neither duty nor border fees are charged on a vendor that ships from Canada, whatever currency it bills in — set that on the vendor card, and override a single row with the border control when a shipment is genuinely unusual.
Set each vendor once. Discount, currency, where they ship from, how they charge freight and in which unit, and the duty rate that usually applies to their goods.
Freight modes. By weight charges rate × weight and percent of cost scales with the invoice; both are floored at the minimum charge. By weight bracket charges a set amount per weight band, flat rate is the same on every order, and free charges nothing — in those three the figure you enter is the charge, so no minimum applies and the field is hidden. Any mode is waived above the free over value — set that to zero to turn it off.
Brackets, for vendors who price freight in bands. Sherpa charges $25 up to 10 lb, $35 up to 20 lb, $45 up to 30 lb. Enter each band as a limit and a charge; the shipment takes the first band it fits. Leave the last limit blank so it catches anything heavier — without a blank band, something over the top limit is charged at that top band rather than shipped free. Limits read in whichever unit the vendor is charged per, so a row entered in kilograms is converted before it is matched. Use this rather than splitting one supplier into two vendor records: two records mean two discounts and two duty rates to keep in step, and the day they drift you have the same vendor quoting two different prices.
Each vendor bills in its own unit. Set charged per to pound for a US supplier and the desk converts the row's weight before it multiplies, whichever unit you typed it in.
Bills in and ships from are separate questions. Plenty of Canadian shops quote in US dollars, and a US brand may ship from a Canadian warehouse. Bills in drives the conversion and your FX uplift; ships from alone decides whether duty and the border fees apply. Set both, and a vendor that prices in USD but ships domestically stops paying phantom brokerage.
These apply to every shipment from a vendor that ships from the United States, whatever currency it bills in. Nobody has to type them per vendor or per item — set the rates here when your forwarder or broker changes them.
The per-pound figure is a blended average — line haul, the assorted fees and the fuel surcharge rolled together. The minimum catches small light parts where the average understates the real bill.
Each row says whether it lands as a box or a pallet. Choose neither for something a vendor drop-ships direct, where your forwarder never touches it — the broker fee still applies, the receiving fee does not.
Origin, not currency, decides who pays. A vendor that prices in US dollars but ships out of Canada crosses no border, so it owes neither duty nor these fees — set ships from on its vendor card. Its invoices still convert from USD, because you still pay to convert them.
Any single row can override the calculation: set border to none when a shipment slips through without a bill, or to custom to enter what the forwarder actually charged.
If your forwarder invoices in US dollars, switch the currency above and the whole block converts at today's rate plus your FX uplift, same as the goods.
The desk saves to a shared server as you work, so everyone quotes from the same figures. A file copy is still worth taking before a change you might regret — restoring one replaces the desk for everybody.
One file with everything: vendors, every row on the ledger, the border fees, the FX uplift and your settings. This is the one to take before a change you might regret, and the one to bring back afterwards.
Use CSV when you want to edit in bulk rather than recover: pull the vendor list down, change a column for every row at once, bring it back. The classic case is a duty rate moving on all your US suppliers at the same time.
Vendor CSV comes back in. The ledger CSV is a report — it carries calculated figures and is not read back.
Restoring replaces what is on the desk — for everyone. Everything currently here is swapped for the contents of the file, so take a backup of the present state first if there is any doubt. You will be told what is being traded for what before anything happens, and every change lands in the audit trail.
A backup is only as fresh as the moment you took it. The file lands in your downloads folder; the live desk keeps saving to the server either way.
Reset empties the desk for everyone — every vendor, every ledger row, and the settings back to their defaults, as though it were freshly installed. The team list and the audit trail survive; nothing else does. It asks you to type the word before it believes you.
Who can open the desk, and what they can change. There is no sign-up: an address either is on this list or cannot get in — by sign-in link or by Google.
Roles. A viewer reads the whole desk — prices, discounts, the audit trail — and changes nothing. Staff price items on the ledger; vendor terms, border fees and settings are read-only to them. An admin changes anything, imports vendor CSVs, restores backups, and manages this list. The desk always keeps at least one admin — the last one can be neither demoted nor removed.
Removing someone signs them out at once, on every device. Their past changes stay in the audit trail under their address.
The desk is shared, so it needs to know who is quoting. Type the email address on your account and a sign-in link will be sent to it.