GoatLabels GoatLabels

Blog

Clean B2B Ship-To Data at the Source

How to fix ship-to records in your ERP (company, attention, suite, dock, line lengths and the commercial flag) so every export makes a valid label.

Clean ship-to data starts in the ERP's customer or ship-to master record, not in the spreadsheet you export each morning. If each ship-to stores a company name and an attention name of 35 characters or fewer, street lines of 35 characters or fewer, the suite in a standard form, the dock on its own line, and an explicit commercial or residential flag, every export inherits a label-ready address. Fix the record once and the same error stops coming back in every batch.

Why fix ship-to data in the ERP instead of in each export?

Because the export only copies what the master record holds, a fix made in the spreadsheet is lost the next time someone runs the export. Teams that patch the CSV end up fixing the same customer every week.

The ERP order export field checklist covers which columns the export needs. This post is about the step before that: the data inside the ship-to records. When those records are right, the export is a copy job. For the wider picture, see the B2B shipping software overview.

Three habits create most bad records: one long free-text address field, receiving notes ("use rear dock, 7 to 3") typed into an address line, and a residential or commercial setting held on the customer account instead of on each ship-to.

What rules should each ship-to field follow?

Each field should fit the tightest carrier limit you ship with and hold one kind of information. The limits below come from the UPS Shipping API specification in UPS's API documentation repository on GitHub and from FedEx Ship API field text as reproduced by RocketShipIt, a third-party library. FedEx's own schema is the authority for FedEx, so treat the FedEx figures as a third-party copy to confirm.

Field Rule for the master record Carrier limit behind it
Company The receiving site's name, 35 characters or fewer UPS ship-to Name: 35. FedEx companyName: 35 (third-party copy)
Attention A person or role at that site, 35 characters or fewer UPS AttentionName: 35. FedEx personName: 70 (third-party copy)
Street lines Up to 3 lines, each 35 characters or fewer, street address first UPS AddressLine: up to 3 lines of 35. FedEx streetLines: 35 per line (third-party copy)
Suite or unit Standard designator such as STE or FL, at the end of the street line USPS Publication 28 conventions (next section)
Dock or door Its own line or the attention field, never in place of a unit Not a Pub 28 designator (next section)
City Full name, never abbreviated to fit UPS accepts 30 characters but prints 15 on the label
Commercial flag Yes or no per ship-to, with the date it was last checked UPS ResidentialAddressIndicator. FedEx residential boolean (third-party copy)

UPS says "All three Address Lines will be printed on the label," so never park internal notes in line 3. UPS requires AttentionName for UPS Next Day Air Early and when the ship-to and ship-from countries differ, so make attention mandatory for any ship-to outside your origin country. Per the same third-party copy, FedEx needs either a company name or a person name; make company mandatory anyway.

Store addresses in plain unaccented characters. The record passes through the ERP, a CSV file, a label tool and a carrier system, and each conversion can mangle an accented letter.

Where do suite, floor and dock numbers go?

Suite, floor and room numbers go at the end of the street line as a standard designator, and dock numbers go on a separate line. USPS Publication 28, section 213 says secondary unit designators such as SUITE or APARTMENT must be printed where they exist, preferably at the end of the delivery address line, and that the pound sign should not be used when the correct designator, such as STE, is known. If the unit does not fit on that line, Pub 28 puts it on the line immediately above.

B2B ship-tos need more than STE. The Pub 28 Appendix C2 list of approved designators includes BLDG (Building), DEPT (Department), FL (Floor), RM (Room), UNIT, OFC (Office), LBBY (Lobby), BSMT (Basement), REAR and STE (Suite), among others. Put the ones your customers use in a pick list in the ERP, so reps stop typing "Ste.", "Suite #" and "#" for the same thing.

Dock is not on that list. A dock door or receiving bay is an instruction for the receiver, not a postal unit. Put it on address line 2 or 3 ("Dock 7") or in the attention field ("Receiving, Dock 7"). Receiving hours and appointment rules belong in a notes field that the label export never reads.

How should the ERP store the commercial flag?

Store it on each ship-to location as a yes or no value, not on the customer account. One customer can have a warehouse, a storefront and an owner who takes samples at home, and those three addresses can classify differently.

Carrier APIs carry it as a flag on the address (the UPS ResidentialAddressIndicator, and a boolean residential flag in the third-party FedEx copy). Your ERP field feeds that flag, so set it explicitly instead of inferring it from the customer type.

The flag is your best record, not the final word. The UPS Terms and Conditions of Service (effective April 17, 2026) define Residential as a home, including a business operating out of a home, and state that "If an address can be construed as either Residential or Commercial, then it will be considered Residential." The same terms apply the Residential Surcharge if either the entered or the actual delivery address is Residential, regardless of the shipper's designation. So when in doubt, set the flag to residential: a quote that assumes commercial and is billed residential turns into an adjustment later. The guide to commercial vs residential delivery on B2B orders covers the cost side.

What does a cleaned ship-to record look like?

It looks like the right-hand column below: short fields, one kind of information per field, and an explicit flag. Example: a hypothetical distributor customer's main receiving location, with made-up names and numbers.

Field (example) Before After
Company Northfield Industrial Supply Company - East Warehouse (53 characters) Northfield Industrial Supply (28)
Attention (blank) J. Rivera, Receiving (20)
Line 1 4400 Commerce Parkway #210 use dock 7 at rear, 7am-3pm 4400 Commerce Parkway Ste 210 (29)
Line 2 (blank) Dock 7 (6)
City Springfield Jctn Springfield Junction (20)
Commercial flag (none; customer type is "Business") Commercial, checked November 11, 2026
Notes field (none) Receiving 7am to 3pm, rear entrance

Every "After" field fits 35 characters. The city is spelled out because UPS accepts 30 characters; only the first 15 print, so the UPS label reads "Springfield Jun". That is expected, not an error.

The same customer's owner also receives samples at home. That address gets its own ship-to record flagged residential, even though the customer type is still "Business". When the morning export runs, both rows carry the right flag without anyone editing the CSV.

How do you keep new ship-to records clean?

You keep them clean by making the ship-to form enforce the rules at entry and by auditing on a fixed schedule. A one-time cleanup decays as soon as a rep adds the next customer.

  1. Set a 35-character maximum on the company, attention and each street line field, if your ERP supports field length limits.
  2. Make company mandatory, and make attention mandatory for any ship-to outside your origin country.
  3. Replace free-text unit entry with a pick list of designators (STE, FL, BLDG, RM, DEPT, UNIT) plus a number field, and add a separate dock or door field.
  4. Add a required commercial or residential field on the ship-to with no default, so someone has to choose.
  5. Move receiving hours and instructions into a notes field excluded from the label export.
  6. Once a quarter, run a saved report of ship-tos with any field over 35 characters, a "#" in a street line, or a blank flag, and fix them at the source.
  7. When a label tool or carrier flags an address, correct the ERP record, not just the CSV row. The guide to fixing address validation errors walks through the common error types.

Where GoatLabels fits

GoatLabels checks the destination address before purchase and can apply the carrier's standardized form or warn that it could not verify it, and each destination has a Residential yes/no toggle that feeds the quote. That is a second check on your ERP export, through bulk CSV import (up to 500 rows per file, each row checked separately with its errors named in plain words, so one bad ship-to does not fail the batch) or the shipping API, where test keys on the v1 API can validate addresses. GoatLabels also finds and drafts carrier refund claims for disputed address-correction and residential surcharges.

The limits: GoatLabels has no native ERP connector and does not write corrections back into your ERP, so every fix still happens in the ship-to record. Its address check is not a ruling on residential or commercial status; the toggle is what you set, and the carrier's terms decide the surcharge. The Free plan covers 50 shipments a month.