Create A Location

Boards a new location (merchant profile). This is the foundational record that users, terminals, processors, menus, and transactions all attach to.

Request Headers

HeaderRequiredDescription
AuthorizationYesBearer YOUR_ACCESS_TOKEN
Content-TypeYesapplication/json

Request Parameters

Request Body Fields:

FieldTypeRequiredDescription
namestring(64)YesDisplay name of the location (store name).
legal_business_namestring(64)YesRegistered legal entity name.
statusintegerNoLocation status. Defaults to 1. Values: 1 = Active (default), 2 = Inactive, 3 = Cancelled, 4 = Closed, 5 = Boarding (or pending installation).
phonestringYesContact phone number.
addressstring(255)YesStreet address.
citystringYesCity.
global_state_idintegerYesState ID. Resolve from the Get States lookup.
global_country_idintegerYesCountry ID. Resolve from the Get Countries lookup.
zipstringYesPostal / ZIP code.
emailstringYesLocation contact email.
websitestringNoLocation website.
owner_first_namestring(45)YesOwner's first name.
owner_last_namestring(45)YesOwner's last name.
owner_emailstring(150)YesOwner's email.
primary_contact_first_namestringNoPrimary contact's first name.
primary_contact_last_namestringNoPrimary contact's last name.
primary_contact_emailstringNoPrimary contact's email (someone connected to the location).
user_idintegerYesThe acting user creating the location.
location_id_externalstringNoYour external identifier for the location (e.g., the ID in Iris CRM).
eod_timestringNoEnd-of-day / batch-out cutoff time, local to the location expressed in UTC. Format HH:MM:SS. Defaults to 11:00:00.
logostringNoProduct thumbnail shown on the customer receipt.
posintegerNoPOS identifier.
manufactureintegerNoManufacturer identifier.
tax_rateintegerNoTax rate for the location, expressed in hundredths (e.g., 100 = 1.00%).
corporate_idintegerNoMust be associated to new locations for proper billing association.
corporate_category_idintegerNoMust be provided to associate the correct products and services.
closed_check_receiptsintegerNoWhether closed-check receipts are enabled (1 / 0).

Request Example

{
  "name": "Sunset Bistro",
  "legal_business_name": "Sunset Bistro LLC",
  "status": 1,
  "phone": "3345261375",
  "global_state_id": "763",
  "global_country_id": "3",
  "address": "203 Highland Avenue",
  "city": "Selma",
  "zip": "36701",
  "email": "[email protected]",
  "owner_first_name": "Miranda",
  "owner_last_name": "Tate",
  "owner_email": "[email protected]",
  "eod_time": "21:00:00",
  "user_id": 7
}

cURL Example

curl --request POST \
  --url https://sandbox-api.softpoint.io/interface/v1/locations \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "name": "Sunset Bistro",
    "legal_business_name": "Sunset Bistro LLC",
    "status": 1,
    "phone": "3345261375",
    "global_state_id": "763",
    "global_country_id": "3",
    "address": "203 Highland Avenue",
    "city": "Selma",
    "zip": "36701",
    "email": "[email protected]",
    "owner_first_name": "Miranda",
    "owner_last_name": "Tate",
    "owner_email": "[email protected]",
    "eod_time": "21:00:00",
    "user_id": 7
  }'

Success Response

The created location is returned in full (abridged here to the most useful fields).

{
  "id": 553,
  "status": 1,
  "location_id": 4000549,
  "location_id_external": "16280",
  "name": "Sunset Bistro",
  "address": "203 Highland Avenue",
  "city": "Selma",
  "zip": "36701",
  "global_state_id": 4,
  "global_country_id": 3,
  "email": "[email protected]",
  "phone": "(686) 280-0447",
  "owner": 197,
  "eod_time": "05:00:00",
  "created_datetime": "2024-02-29T19:46:15.000000Z",
  "timezone_code": "America/Los_Angeles",
  "legal_business_name": "Sunset Bistro LLC",
  "tax_rate": { "id": 594, "name": "default", "rate": 0, "exclusive": 0 },
  "state": "California",
  "owner_name": "Miranda Tate"
}

Response Fields

FieldTypeDescription
idintegerInternal record ID.
location_idintegerPlatform location identifier used by most other endpoints.
location_id_externalstringnull
statusintegerLocation status.
namestringDisplay name.
legal_business_namestringLegal entity name.
address / city / zipstringAddress components.
global_state_id / global_country_idintegerResolved location IDs.
statestringHuman-readable state name.
email / phonestringContact details (phone normalized).
ownerintegerOwner record ID.
owner_namestringOwner's full name.
eod_timestringEnd-of-day cutoff time.
tax_rateobjectDefault tax-rate object (id, name, rate, exclusive).
created_datetimestring (ISO 8601)Creation timestamp.
timezone_codestringResolved IANA timezone (e.g., America/Los_Angeles). A timezone_name may also be returned.

Error Responses

Missing Required Parameters

{
  "error": {
    "code": 10109,
    "message": "The request is missing one or more required parameter(s).",
    "details": ["pos", "manufacture", "processor_cp", "processor_cnp"]
  }
}

Status Codes

CodeDescription
200Location created
400Required parameters missing or invalid

Workflow Placement

The first resource you create during boarding:

  1. Get Countries / Get States

  2. Create A Location

  3. Create User, Create Terminal, Configure Processing

Notes

  • Resolve global_state_id and global_country_id from the reference lookups first. The endpoint accepts them as numeric IDs (sent as numbers or numeric strings), not as state/country names.

  • The platform assigns location_id; record it, since downstream calls use it in the path.

  • A default tax_rate is created automatically and can be adjusted later via Update A Location.

  • eod_time is the batch-out time local to the location, expressed in UTC, in HH:MM:SS format; it defaults to 11:00:00.

  • corporate_id and corporate_category_id should be supplied when boarding a location so that billing and the correct products/services are associated.

Common Mistakes

  • Omitting required fields, which triggers 10109 with the missing fields in details.

  • Sending state or country names instead of their numeric IDs.

  • Confusing the returned id (internal) with location_id (used in paths).

  • Assuming pos, manufacture, and the processor fields (processor_cp, processor_cnp) are always optional. Depending on your boarding/processor configuration they can be required and will appear in the 10109 details list when missing. processor_cp / processor_cnp are part of processor configuration (workflow step 3) rather than the core location body.

Body Params
Responses

Language
Credentials
Bearer
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json