Shipping Sales Samples Without Losing the Cost
How to tag every sample shipment with a rep and campaign reference so finance can charge the cost to the right budget at month end.
Sample shipping costs get lost because the label is bought without anything that says who asked for it or why. The fix is a short, structured reference on every sample label that names the rep and the campaign, plus a monthly export that finance can total by those two values. Nothing else about the process has to change: the same people pack the same boxes, and the cost lands in the right budget.
Why do sample shipping costs disappear?
They disappear because a sample has no sales order behind it, so nothing in the ERP ties the label to a customer, a rep, or a budget. A revenue shipment inherits an order number, a customer account, and a general ledger code. A sample usually starts as an email or a chat message that says "can you send two of the new valves to this buyer by Friday".
The warehouse ships it, the cost joins the general outbound parcel spend, and a month later nobody can separate it. Three things follow:
- Outbound shipping as a share of revenue looks worse than it is, because sample spend is mixed into it.
- Sales and marketing budgets look better than they are, because they never see the charge.
- Nobody can answer a simple question such as what a trade show follow-up cost to ship, or which rep sends the most samples per closed account.
None of this needs a new system to fix. It needs one field filled in the same way every time.
What should a sample reference contain?
A sample reference should contain a fixed prefix, a rep code, and a campaign code, in that order, separated by one delimiter. The prefix separates samples from revenue shipments in any export. The rep code and campaign code are the two dimensions finance will total by.
| Segment | Purpose | Example | Rule |
|---|---|---|---|
| Prefix | Marks the shipment as a sample | SMP | Always the same three letters |
| Rep code | Who requested it | R14 | From the sales roster, never a first name |
| Campaign code | Why it shipped | FALLSHOW | From a short list owned by marketing |
| Request number | Ties the label to the request | 0931 | Optional, from the request form or ticket |
A full reference then reads SMP-R14-FALLSHOW-0931. A few rules keep it usable:
- Use codes, not names. "Dana" and "D. Ortiz" will not total together; "R14" will.
- Pick one delimiter and never use it inside a segment.
- Keep it short. Carrier label reference fields are limited in length, and a long reference may be cut off on the printed label even when your ledger stores it in full.
- Maintain a code for samples with no campaign, such as
GEN, so the field is never left blank. - Do not put customer names or prices in the reference. It prints on the box.
If you already use references to charge shipping to departments or customers, the sample format should fit the same scheme. The broader method is covered on the shipping cost allocation software page.
How do you capture the rep and campaign at the moment of the request?
You capture them by making the request arrive in a form that will not submit without both values. A reference that depends on the warehouse guessing which rep sent an email will be wrong often enough to make the report useless.
A workable request process looks like this:
- Create a single intake point: a shared form, a ticket queue, or a spreadsheet tab. Email requests get a reply with the link.
- Require these fields: rep code, campaign code, recipient name, company, address, phone, items, and needed-by date.
- Offer the campaign code as a dropdown, not free text. Marketing owns the list and retires old codes.
- Have the form build the reference itself by joining the prefix, rep code, campaign code, and request number.
- Send the packer a row that is already complete: address, items, and reference.
- After the label is bought, write the tracking number back to the request so the rep can follow up without asking the warehouse.
Step 4 matters most. When a formula builds the reference, the format is identical on every label, and a month of data can be split into columns without cleanup.
How do you ship a batch of samples after an event?
You ship a post-event batch from a file, with the reference as one of the columns, so every label carries its tag without anyone typing it. A trade show can produce a hundred sample requests in two days, and that is exactly when hand-keyed references break down.
Export the requests to a spreadsheet with one row per parcel: recipient, address, weight, dimensions, and reference. Sort by rep or by SKU if that helps packing. Check the file before upload for the usual problems: missing suite numbers, phone numbers in the wrong column, and rows where the campaign code was left as the default. Then import it into your label tool. The steps for a clean file are described under bulk shipping labels from CSV.
For kits that go out in more than one box, give every carton the same reference. The cost of the request is then the sum of its cartons, and no carton is orphaned.
How does finance charge the cost to the right budget?
Finance charges the cost by exporting the month's label transactions, keeping the rows whose reference starts with the sample prefix, and totaling by rep code and campaign code. The export has to carry the reference on every line, including later adjustments such as re-weigh charges, or the totals will not match what was paid.
Here is a worked example. The numbers are hypothetical and chosen only to show the arithmetic.
A distributor ships 60 samples in October. The export shows 60 label lines and 3 re-weigh adjustment lines, all with references that start with SMP.
| Campaign code | Labels | Label cost | Adjustments | Total |
|---|---|---|---|---|
| FALLSHOW | 38 | $418.00 | $9.50 | $427.50 |
| NEWLINE | 15 | $172.50 | $0.00 | $172.50 |
| GEN | 7 | $66.50 | $4.00 | $70.50 |
| Total | 60 | $657.00 | $13.50 | $670.50 |
Finance posts one journal entry that moves $670.50 out of outbound freight expense: $427.50 to the trade show budget, $172.50 to the product launch budget, and $70.50 to general sales expense. A second pivot on the rep code shows that rep R14 accounts for 22 of the 60 parcels, which is a question for the sales manager, not for the warehouse.
Two checks keep the report honest. First, the sample total plus the non-sample total must equal the full export total. Second, any line with a blank or malformed reference goes on an exception list that someone resolves before the entry is posted.
What controls keep sample spend from creeping?
Sample spend stays in check when the request form sets limits before the label is bought and the monthly report is reviewed by the person who owns the budget. Reporting after the fact tells you what happened; it does not stop a rep from sending overnight boxes every week.
Controls that are cheap to run:
- A default service level. Samples go by the lowest-cost service that meets the needed-by date unless a manager approves faster.
- A per-request value or weight threshold above which approval is required.
- A standard set of sample cartons, so dimensions are known and oversized boxes are the exception.
- A monthly per-rep summary sent to sales management, not just to finance.
- Retired campaign codes removed from the dropdown, so old budgets stop collecting new charges.
Where GoatLabels fits
GoatLabels is a label tool with a prepaid wallet, and it handles the part of this process that happens at the moment of purchase. Every label debits the quoted amount to a dated ledger entry that carries your reference, and re-weigh adjustments post to the same ledger, so the sample prefix scheme above survives into the export. USPS, UPS, FedEx, and DHL are rate-shopped on every parcel from one account. A post-event batch can go in as a CSV of up to 500 rows per file; errors name the row and field, and one bad row does not fail the batch. Multi-carton kits produce several labels, each a ledger line with the same reference. More detail is on the shipping software for sales samples page.
The limits are real and worth knowing before you plan around it. There are no sub-accounts or per-rep balances: the reference separates the spend in reporting, but everyone draws on one wallet. There is no native ERP or CRM connector and no automatic write-back, so the request form, the tracking update to the rep, and the journal entry are yours to build with CSV or the REST API. You cannot bring your own carrier accounts or negotiated rates. Approval workflows and spend caps per rep are not part of the product; those live in your request form. Hazmat and cold-chain samples are not supported, and support is by email and the in-app assistant, not phone.
Plans are Free at $0 per month for 50 shipments per month, and Pro at a flat $40 per month for unlimited shipments, with no contract. See pricing for the details.