Skip to content

Consignment vs principal

Every car has a sourcing mode:

  • Principal — you bought it. The capital risk is yours. The car hits your inventory account.
  • Consignment — the supplier (consignor) still owns it. You hold it on their behalf, recover your costs, and earn a commission on sale. The car never hits inventory.

The two Add car buttons on the Cars page (+ Principal and + Consigned) choose the mode. They open the same form with a sourcing toggle; you can also flip the toggle inside the form.

cars.consignorCounterpartyId IS NOT NULL is the canonical signal — every server check branches on this column directly. The form sets it when sourcing = consignment + you pick a consignor counterparty.

Principal car — buying the car and paying its landed costs (auction fee, freight, duty, repair) increases the value of your own inventory. When it sells, the platform recognizes revenue on the sale and retires the car’s full cost (purchase + landed costs) as cost of goods sold — so your reported profit is sale price minus everything you put into the car.

Consignment car — the purchase never touches your inventory, because you never owned the car. Costs you advance on the consignor’s behalf are tracked as a receivable against that consignor instead. On sale, the platform recognizes only your commission as income; the sale proceeds are used to settle what the consignor owes you back and to pay them their net share. There’s no cost-of-goods-sold and no inventory to remove, because the car was never yours.

For the full account-by-account picture, see How your money flows.

AspectPrincipalConsignment
CounterpartySupplier (optional, in AP if credit)Consignor (required)
Inventory valueCarries landed cost while in stockNever touched — you don’t own the car
Cost rowsAdd to the car’s inventory valueTracked as amounts due from the consignor
Sale outcomeRevenue and cost-of-goods-sold both recognizedOnly your commission is recognized as income
Sale flips status to soldYesYes (same logic)
Cancelled with “returned to supplier” reasonAllowedRejected (consignor IS the supplier)