Customers file

The accounts reps sell to: who they are, where their orders go, what they pay and how much credit they have. Reps see them in the customer list, on the account page and at checkout.

File name: Customers.csv, Customers_2026-11-01.json or Customers-export.xml. The name starts with the record type, in any case, and anything after a _ or - is yours.

Required: AccountId. Everything else may be left out or left blank.

Example

One complete record, in each format. All three import as the same record. The CSV is the sample file for customers.

CSV
AccountId,OriginalAccountId,CompanyName,ContactName,Email,Phone,Mobile,Website,VatRegistration,EoriNumber,TaxCode,PriceList,Currency,CreditLimit,CreditBalance,AccountStatus,CarriageCode,Tags,Notes,CustomData,ShippingAddresses,BillingName,BillingLine1,BillingLine2,BillingCity,BillingCounty,BillingPostcode,BillingCountry,AssignedUserId
C1002,,Example Wine Bar Ltd,Alex Example,[email protected],01632 960002,07700 900002,https://example.com,GB123456789,GB123456789000,,TRADE,GBP,5000.00,1250.50,Active,CARR1,BAR|PREMIUM,Deliveries before 10am only.,"{""Route"": ""North""}","[{""name"": ""Warehouse"", ""line1"": ""Unit 4 Example Park"", ""city"": ""Anytown"", ""postcode"": ""AB1 3EF"", ""country"": ""GB""}]",Example Wine Bar Ltd,2 Market Square,Market Hall,Anytown,Exampleshire,AB1 2CG,GB,REP01
JSON
[
  {
    "id": "C1002",
    "company": "Example Wine Bar Ltd",
    "contact": "Alex Example",
    "email": "[email protected]",
    "phone": "01632 960002",
    "mobile": "07700 900002",
    "website": "https://example.com",
    "vat": "GB123456789",
    "eori": "GB123456789000",
    "price_tier": "TRADE",
    "currency": "GBP",
    "credit_limit": 5000.0,
    "balance": 1250.5,
    "status": "Active",
    "carriage": "CARR1",
    "tags": [
      "BAR",
      "PREMIUM"
    ],
    "notes": "Deliveries before 10am only.",
    "custom_data": {
      "Route": "North"
    },
    "shipping": [
      {
        "name": "Warehouse",
        "line1": "Unit 4 Example Park",
        "city": "Anytown",
        "postcode": "AB1 3EF",
        "country": "GB"
      }
    ],
    "billing": {
      "name": "Example Wine Bar Ltd",
      "line1": "2 Market Square",
      "line2": "Market Hall",
      "city": "Anytown",
      "county": "Exampleshire",
      "postcode": "AB1 2CG",
      "country": "GB"
    },
    "assigned_user_id": "REP01"
  }
]
XML
<?xml version="1.0" encoding="UTF-8"?>
<Feed>
  <Customer>
    <ID>C1002</ID>
    <Company>Example Wine Bar Ltd</Company>
    <Contact>Alex Example</Contact>
    <Email>[email protected]</Email>
    <Phone>01632 960002</Phone>
    <Mobile>07700 900002</Mobile>
    <Website>https://example.com</Website>
    <VAT>GB123456789</VAT>
    <EORI>GB123456789000</EORI>
    <PriceTier>TRADE</PriceTier>
    <Currency>GBP</Currency>
    <CreditLimit>5000.00</CreditLimit>
    <Balance>1250.50</Balance>
    <Status>Active</Status>
    <Carriage>CARR1</Carriage>
    <Tags>BAR|PREMIUM</Tags>
    <Notes>Deliveries before 10am only.</Notes>
    <CustomData>{"Route": "North"}</CustomData>
    <Shipping>[{"name": "Warehouse", "line1": "Unit 4 Example Park", "city": "Anytown", "postcode": "AB1 3EF", "country": "GB"}]</Shipping>
    <Billing>
      <Name>Example Wine Bar Ltd</Name>
      <Line1>2 Market Square</Line1>
      <Line2>Market Hall</Line2>
      <City>Anytown</City>
      <County>Exampleshire</County>
      <Postcode>AB1 2CG</Postcode>
      <Country>GB</Country>
    </Billing>
    <AssignedUserId>REP01</AssignedUserId>
  </Customer>
</Feed>

In XML each record is a <Customer> element; the element around them can be called anything.

Fields

AccountId

Your account code. A row with a code already on the tablet updates that customer.

CSV columnJSONXML
AccountIdidID
  • Format: Text, matched exactly, capitals included.
  • Required: Yes.
  • Example: C1002

OriginalAccountId

For a customer a rep added on the tablet: the NEW- code it was sent out with. Blank otherwise.

CSV columnJSONXML
OriginalAccountIdoriginal_idOriginalID
  • Format: Text, matched exactly, capitals included.
  • Required: No.
  • Tip: Sending it back with your own AccountId replaces the tablet’s NEW- code, so the customer’s orders follow it.

CompanyName

The business name reps see.

CSV columnJSONXML
CompanyNamecompanyCompany
  • Format: Text.
  • Required: No.
  • Example: Example Wine Bar Ltd
  • Tip: A new customer with no name is shown by its AccountId.

ContactName

Who to ask for.

CSV columnJSONXML
ContactNamecontactContact
  • Format: Text.
  • Required: No.
  • Example: Alex Example

Email

Email address.

CSV columnJSONXML
EmailemailEmail

Phone

Phone number.

CSV columnJSONXML
PhonephonePhone
  • Format: Text.
  • Required: No.
  • Example: 01632 960002

Mobile

Mobile number.

CSV columnJSONXML
MobilemobileMobile
  • Format: Text.
  • Required: No.
  • Example: 07700 900002

Website

Web address.

CSV columnJSONXML
WebsitewebsiteWebsite
  • Format: Text.
  • Required: No.
  • Example: https://example.com

VatRegistration

Their VAT number.

CSV columnJSONXML
VatRegistrationvatVAT
  • Format: Text, matched exactly, capitals included.
  • Required: No.
  • Example: GB123456789
  • Tip: With a delivery address in another country, their orders are zero-rated. Without a VAT or EORI number on file, they are not.

EoriNumber

Their EORI number, for exports.

CSV columnJSONXML
EoriNumbereoriEORI
  • Format: Text, matched exactly, capitals included.
  • Required: No.
  • Example: GB123456789000

TaxCode

Blank for normal VAT.

CSV columnJSONXML
TaxCodetax_codeTaxCode
  • Format: Text, matched exactly, capitals included.
  • Required: No.
  • Tip: A code here can only reduce tax, never add it: EXEMPT, or T0 for a charity’s zero rate.

PriceList

Which price list they pay, matching a name in the products PriceLists. Blank pays the list price.

CSV columnJSONXML
PriceListprice_tierPriceTier
  • Format: Text, matched exactly, capitals included.
  • Required: No.
  • Example: TRADE
  • Tip: Matched whatever the case: Trade and TRADE are one list.

Currency

The currency they buy in, as a three-letter code such as GBP or EUR.

CSV columnJSONXML
CurrencycurrencyCurrency
  • Format: Text, matched exactly, capitals included.
  • Required: No.
  • Example: GBP
  • Tip: Money is never converted on the tablet. A customer in another currency is priced from a price list in that currency.

CreditLimit

Their credit limit, checked before an order is placed.

CSV columnJSONXML
CreditLimitcredit_limitCreditLimit
  • Format: A number such as 9.99. A currency symbol, thousands separators and a decimal comma are read too.
  • Required: No.
  • Example: 5000.00
  • Tip: Blank means no limit. What 0 means is a Business Rules setting.

CreditBalance

What they owe you now.

CSV columnJSONXML
CreditBalancebalanceBalance
  • Format: A number such as 9.99. A currency symbol, thousands separators and a decimal comma are read too.
  • Required: No.
  • Example: 1250.50

AccountStatus

Active, or a status that warns the rep before they take an order.

CSV columnJSONXML
AccountStatusstatusStatus
  • Format: Text.
  • Required: No.
  • Example: Active
  • Tip: Reps are warned, never blocked. The words read as on hold and as closed are listed below.

CarriageCode

Your own carriage or delivery code for them.

CSV columnJSONXML
CarriageCodecarriageCarriage
  • Format: Text, matched exactly, capitals included.
  • Required: No.
  • Example: CARR1

Tags

Labels for grouping customers.

CSV columnJSONXML
TagstagsTags
  • Format: Codes separated by |, each matched exactly. In JSON, a list.
  • Required: No.
  • Example: BAR|PREMIUM
  • Tip: A promotion can be aimed at customers with a tag.

Notes

Notes reps see on the account.

CSV columnJSONXML
NotesnotesNotes
  • Format: Text.
  • Required: No.
  • Example: Deliveries before 10am only.

CustomData

Anything else you want kept with the customer.

CSV columnJSONXML
CustomDatacustom_dataCustomData
  • Format: A JSON object. In a CSV the cell is quoted and its own quotes doubled; in JSON, a real object; in XML, the JSON as text.
  • Required: No.
  • Example: {"Route": "North"}

ShippingAddresses

Their delivery addresses, each with name, line1, line2, city, county, postcode and country.

CSV columnJSONXML
ShippingAddressesshippingShipping
  • Format: A JSON list of objects. In a CSV the cell is quoted and its own quotes doubled; in JSON, a real list; in XML, the JSON as text.
  • Required: No.
  • Example: [{"name": "Warehouse", "line1": "Unit 4 Example Park", "city": "Anytown", "postcode": "AB1 3EF", "country": "GB"}]
  • Tip: Blank delivers to the billing address. A list that is not valid JSON is ignored, so check it before the first sync.

BillingName

Name on the billing address.

CSV columnJSONXML
BillingNamebilling.nameBilling/Name
  • Format: Text.
  • Required: No.
  • Example: Example Wine Bar Ltd

BillingLine1

First line of the billing address.

CSV columnJSONXML
BillingLine1billing.line1Billing/Line1
  • Format: Text.
  • Required: No.
  • Example: 2 Market Square

BillingLine2

Second line.

CSV columnJSONXML
BillingLine2billing.line2Billing/Line2
  • Format: Text.
  • Required: No.
  • Example: Market Hall

BillingCity

Town or city.

CSV columnJSONXML
BillingCitybilling.cityBilling/City
  • Format: Text.
  • Required: No.
  • Example: Anytown

BillingCounty

County, state or region.

CSV columnJSONXML
BillingCountybilling.countyBilling/County
  • Format: Text.
  • Required: No.
  • Example: Exampleshire

BillingPostcode

Postcode or ZIP.

CSV columnJSONXML
BillingPostcodebilling.postcodeBilling/Postcode
  • Format: Text.
  • Required: No.
  • Example: AB1 2CG

BillingCountry

Country name or two-letter code.

CSV columnJSONXML
BillingCountrybilling.countryBilling/Country
  • Format: Text.
  • Required: No.
  • Example: GB
  • Tip: Tax follows the delivery address, and with no delivery address that is this one.

AssignedUserId

The UserId of the rep whose customer this is, from the users file.

CSV columnJSONXML
AssignedUserIdassigned_user_idAssignedUserId
  • Format: Text, matched exactly, capitals included.
  • Required: No.
  • Example: REP01
  • Tip: A rep sees their own customers, and unassigned ones too when an administrator allows it. Blank keeps the current rep.

Account status words

Read without case, spaces or punctuation. Anything else is an open account.

  • On hold: onhold, hold, held, stop, stopped, onstop, suspended, credithold, blocked
  • Closed: closed, dormant, inactive, deactivated, terminated

Rules for every field

  • A blank cell keeps what the tablet has, with Ignore blank cells on, as it ships. Switched off, a blank clears the field.
  • A column the file does not have always keeps what the tablet has, whatever that setting says.
  • A value that cannot be read, such as a date, number or yes/no in a shape the app does not know, stops that record importing. The sync log names the field and the value, and the record keeps what it had. A field whose tip says otherwise is the exception.
  • Column names are matched without case and ignoring surrounding spaces.

Yes and no

In any case:

  • Yes: true, t, yes, y, 1, -1, x, on, active, enabled
  • No: false, f, no, n, 0, off, inactive, disabled