Core concepts
The freight rules
The fourteen rules Harbor enforces on the server for every company, what each one stops, and where you meet it.
Why rules live on the server
Each rule below is checked by the server every time someone saves, not just hidden in the screen. A button being greyed out is a courtesy; the real check happens when the save arrives. So a rule holds whether the change comes from the panel, a portal, a background job or a mistake. Each rule is written once in the business-rules package and has its own automated tests.
When a rule refuses a save you see a plain message saying which rule and what to do next, and the refusal itself is recorded.
| # | Rule | In one line |
|---|---|---|
| R1 | Carrier compliance | No paperwork or dispatch until the carrier is cleared |
| R2 | Customer credit | No load for an unapproved or over-limit customer |
| R3 | Carrier emails | Carrier mail goes only to the FMCSA address |
| R4 | Advance before moving | The box waits until the SSL/customs advance is in |
| R5 | Finance sees delivered loads | Finance works on delivered loads only |
| R6 | Marking delivered | One click does the six delivery steps |
| R7 | A human picks the carrier rate | Never auto-selected |
| R8 | Portal submissions are proposals | Partners propose, staff approve |
| R9 | Sales agents see their own loads | Enforced in the query |
| R10 | Document names | Agent__DocType_LoadID_Date |
| R11 | Compliance reminder | Pending 15 minutes → compliance is told |
| R12 | Expenses | Yearly is always monthly × 12 |
| R13 | Duplicate warning | Before saving a look-alike customer or carrier |
| R14 | Charges feed invoices | Every charge has a bill-to; invoices read the charges |
R1 · Carrier compliance
A carrier is usable only when all of these are true:
- an MC number and a DOT number are on file,
- insurance is on file and not expired,
- a W-9 is on file,
- every check your company made required on the vetting checklist is done,
- and a reviewer has approved it with a written comment.
Every new carrier starts as Pending compliance. Until it is approved, no rate confirmation, carrier confirmation, dispatch sheet or delivery order can be made for it, and no load can move to Dispatched or later with it. There is no override, not even for the owner. If the insurance expires later, the carrier becomes unusable again on that day.
Where you meet it: Carriers, Approvals, Document center, Delivery orders, the load record.
R2 · Customer credit
A customer can have a new load only when it is Approved and inside its credit limit. Exposure is everything not yet paid: unpaid invoices plus open loads (cancelled loads do not count).
| Credit state | What happens |
|---|---|
| Not approved, or rejected | New loads are held for a credit decision |
| Over the limit | New loads are blocked |
| At 85% of the limit or more | Allowed, with a "close to the limit" warning |
| No limit set | Allowed; there is nothing to measure against |
When a load is blocked, the agent can raise a credit request in one click. An approver decides it on Credit limits or Approvals. While credit holds a load, carrier documents for it cannot be made either.
R3 · Carrier emails
Carrier emails (rate confirmations, dispatch sheets, rate requests) go only to the email address the carrier registered with FMCSA. You cannot type a different address. If FMCSA has no email for the carrier, sending is blocked and the screen says so. This stops a classic fraud: someone posing as the carrier and asking for paperwork to be sent to a look-alike address.
R4 · Advance before moving
Some loads need money paid up front to the steamship line or customs on the customer's behalf. That is an advance. A load with an advance cannot move to Dispatched or later until the advance is received from the customer in full:
- Required = the advance amount plus your company's fee (default $75, set on Company profile).
- Proof = a transaction reference, the amount received and the date received. All three are needed.
- The reference is stored in capitals, letters and digits only, and must be unique across the company, so one wire cannot be used to clear two advances.
- Only finance, accounts or the owner can record proof.
- If the amount is short, only the owner can release the load anyway, and must give a reason. The override is recorded.
Where: Advance ledger, New load.
R5 · Finance sees delivered loads
Staff who hold only finance roles (Finance, Accounts) see loads from Delivered onward. A load still on the road is operations' business. A manual override exists for the rare case where money genuinely changes hands early; it needs a name and a reason and is audited.
R6 · Marking delivered
Marking a load delivered does all of this in one save: sets the invoice date and carrier invoice date if empty, sets ready to bill and POD requested, adds a feed entry, prepares the invoice and the carrier bill, and notifies the agent. See The life of a load.
R7 · A human picks the carrier rate
Quotes come in from carriers, rate requests and load boards, but the software never chooses one. A person picks a rate on the Rate board. If a quote arrives from an MC number you do not know, a new carrier is created in pending compliance and compliance is notified. It still has to pass R1 before it can be used.
R8 · Portal submissions are proposals
Nothing a customer or carrier does in a portal changes your real data on its own. A POD upload, an invoice, a payment notice, an appointment acknowledgement, a rate answer: each arrives as a proposal that staff approve or reject. See How the portals work.
R9 · Sales agents see their own loads
A person whose only load-related role is Sales sees and edits only the loads they own. This is built into the database query itself, so their lists, searches, reports, exports and the assistant can never show another agent's loads.
R10 · Document names
Every generated PDF is named Initials__DocType_LoadID_Date.pdf, for example
DM__RateConfirmation_AR-0042_20261108.pdf. Initials are the agent's; the date is the
document's date. Statements are named Statement_Customer_From_To.pdf.
R11 · Compliance reminder
15 minutes after a carrier is created, if it is still pending compliance, a background job alerts everyone in the compliance role. It alerts once per carrier.
R12 · Expenses
On Operating expenses you enter monthly amounts. The yearly figure is always the monthly figure × 12, worked out when shown. It is never stored, so it can never drift.
R13 · Duplicate warning
Before you save a new customer or carrier, Harbor checks for look-alikes: a similar company name (ignoring "LLC", "Inc", "The", "&", punctuation, case and small typos), or the same MC or DOT number. If it finds one, you see a warning such as "This may be a carrier you already have: Bay Haulers has the same MC number". It is a warning, not a refusal: two companies can share a name. Check it, then choose Save anyway if it really is a different company.
R14 · Charges feed invoices
Every charge on a load (line haul, chassis, detention, per diem, storage…) has a bill-to party: Customer, Carrier, Warehouse, Sales Agent or Other. The invoice is built from the charges, not typed separately, so what is on the load is what is billed. Detention and demurrage calculations add their result as a charge, which then flows to the invoice the same way.