Connecting Channel Codes to Your ERP
Contents
- 1. What the scenario is
- 2. How it works in the system
- 3. What day-to-day operation looks like
- 4. Boundaries and related features
1. What the scenario is
A merchant runs its own ERP, and every sales channel in that ERP has its own identifier — typically a customer code such as C00123. The channel names used in the warehouse are written for people ("Shopee Official Store"), so the two sides never line up. Every time shipping or billing data has to go into the ERP, someone has to translate channel names into ERP codes by hand.
The Channel Code exists so that nobody has to. Each sales channel carries an external code alongside the human-facing Channel Name, and exports carry that code out, so the merchant can assemble the import format the ERP expects.
| Business situation | Where it gets stuck | How the channel code solves it |
|---|---|---|
| Shipment details need to go into the ERP | The ERP recognizes customer codes; the export only carries channel names | Set the channel code to the ERP customer code and the order export carries that column |
| Monthly invoices feed ERP accounts payable | The billing export's "channel code" column actually contains the name | The column now outputs the real code; column count and headers are unchanged |
| The merchant generates import files from its own system | Files can only carry channel names, so a rename breaks the whole batch | Import matches the code first and still accepts the channel name |
2. How it works in the system
Jump to: Map the codes first | Fill in the channel codes | Update export templates | Replace your import files
2.1 Map the codes first
Before touching the system, write out a mapping between the ERP identifiers and the warehouse channels. This decides the contents of every export from then on; changing it midway leaves data already sent to the ERP out of sync.
Three constraints apply together: a code must be unique within the merchant, case is ignored (SHOPEE and shopee are the same code), and the maximum length is 50 characters. There is no character restriction — Chinese is accepted — but since the value is meant for the ERP, most merchants simply reuse the ERP's own coding rules.
One combination is worth noting: setting a code to another channel's name within the same merchant. The system allows it, and import stays deterministic — the code is matched first, so that string always resolves to the channel that carries it as a code. But any older import file that still uses that name will start resolving to the other channel, so it is simpler to avoid the overlap when naming.
2.2 Fill in the channel codes
When the feature goes live, every existing channel's code is pre-filled with its channel name, so nothing about import or export behavior changes until you edit it.
On the merchant side go to "Merchant Settings" → "Merchant Channels"; on the warehouse side go to "Sales Channels", and update each code to the value on your mapping. For the field layout and the other settings, see Sales channel settings.
Changing one channel and immediately checking one export file is far easier to recover from than changing everything and then discovering the mapping was wrong.
2.3 Update export templates
If the merchant has saved order export templates, existing templates do not automatically gain the "Channel Code" column. A template's columns and headers are frozen when it is created, so that a system change never alters the file format agreed between the merchant and its ERP.
To carry the code in the export, open the template editor and add the column, or create a separate template dedicated to the ERP.
2.4 Replace your import files
Older import files keep working after codes change, because channel names are still accepted. Even so, it is worth switching them to codes now: from this point on, renaming a channel breaks files that carry names, and never breaks files that carry codes.
Download a fresh import template from the system. The channel column header is already "Channel Code", and the workbook includes a reference sheet listing every available code, which the channel column's dropdown reads from, so whoever fills in the file does not have to look them up.
3. What day-to-day operation looks like
3.1 How the system identifies a channel on import
For the channel column in order import and contact address import, the system matches the value against channel codes first and falls back to channel names; neither comparison is case-sensitive. All three of the following are accepted:
| What the file contains | Result |
|---|---|
A channel code (for example C00123) | Matches that channel |
| A channel name (for example "Shopee Official Store") | Matches that channel |
| An older file whose header reads "Sales Channel" | The legacy header is still recognized; the value is read using the two rules above |
A row fails only when neither matches, and the error message points to the sales channel settings page. The channel column in contact address import remains optional — leaving it blank does not affect the import.
3.2 Which exports carry the code
| Export | Code column | Can it be turned off |
|---|---|---|
| Order export, allocation detail export | A new column, alongside a channel name column | Yes, by selecting it in an export template |
| Picking list export | A new column; for multi-channel lists, values are comma-separated in the same order as the name column | Always present |
| Contact address export | A new "default channel code" column; blank for addresses with no default channel | Always present |
| Billing export (outbound / return fees) | The existing "channel code" column now outputs the real code | Column count and headers unchanged |
The order export's former "Sales Channel" header is now "Channel Name"; its contents are unchanged.
3.3 After a code changes
The code is read live rather than snapshotted at invoicing time. After you change a channel's code, re-exporting an invoice for a past month shows the new code in the channel code column, not the value in force at the time. This matches the other reference information in exports (recipient, shipping method) — only amounts and quantities are snapshotted.
If the ERP already holds records keyed on the old code, agree the reconciliation approach with your finance team before changing it.
4. Boundaries and related features
What this feature does not do
- It does not produce the ERP import format itself. The system only carries the code into the export files; the actual column order, encoding, and file naming remain the merchant's to assemble.
- The API does not identify channels quite the same way import does. When the legacy API creates an order, the channel value is matched against the code first and then the Channel Name — the same rule import uses — so an integration that switches to sending ERP codes still resolves. Order-query channel filters, however, still accept only the channel name. Changing a code does not break order creation for existing integrations; renaming a channel still affects queries, exactly as before.
- Picking list, contact address, and billing exports have no column selection, so their code column is always present. These three exports are not covered by export templates.
- Existing export templates are never modified automatically; the merchant has to edit them.
Related features