Boards a new location (merchant profile). This is the foundational record that users, terminals, processors, menus, and transactions all attach to.
Request Headers
| Header | Required | Description |
|---|---|---|
| Authorization | Yes | Bearer YOUR_ACCESS_TOKEN |
| Content-Type | Yes | application/json |
Request Parameters
Request Body Fields:
| Field | Type | Required | Description |
|---|---|---|---|
| name | string(64) | Yes | Display name of the location (store name). |
| legal_business_name | string(64) | Yes | Registered legal entity name. |
| status | integer | No | Location status. Defaults to 1. Values: 1 = Active (default), 2 = Inactive, 3 = Cancelled, 4 = Closed, 5 = Boarding (or pending installation). |
| phone | string | Yes | Contact phone number. |
| address | string(255) | Yes | Street address. |
| city | string | Yes | City. |
| global_state_id | integer | Yes | State ID. Resolve from the Get States lookup. |
| global_country_id | integer | Yes | Country ID. Resolve from the Get Countries lookup. |
| zip | string | Yes | Postal / ZIP code. |
| string | Yes | Location contact email. | |
| website | string | No | Location website. |
| owner_first_name | string(45) | Yes | Owner's first name. |
| owner_last_name | string(45) | Yes | Owner's last name. |
| owner_email | string(150) | Yes | Owner's email. |
| primary_contact_first_name | string | No | Primary contact's first name. |
| primary_contact_last_name | string | No | Primary contact's last name. |
| primary_contact_email | string | No | Primary contact's email (someone connected to the location). |
| user_id | integer | Yes | The acting user creating the location. |
| location_id_external | string | No | Your external identifier for the location (e.g., the ID in Iris CRM). |
| eod_time | string | No | End-of-day / batch-out cutoff time, local to the location expressed in UTC. Format HH:MM:SS. Defaults to 11:00:00. |
| logo | string | No | Product thumbnail shown on the customer receipt. |
| pos | integer | No | POS identifier. |
| manufacture | integer | No | Manufacturer identifier. |
| tax_rate | integer | No | Tax rate for the location, expressed in hundredths (e.g., 100 = 1.00%). |
| corporate_id | integer | No | Must be associated to new locations for proper billing association. |
| corporate_category_id | integer | No | Must be provided to associate the correct products and services. |
| closed_check_receipts | integer | No | Whether 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
| Field | Type | Description |
|---|---|---|
| id | integer | Internal record ID. |
| location_id | integer | Platform location identifier used by most other endpoints. |
| location_id_external | string | null |
| status | integer | Location status. |
| name | string | Display name. |
| legal_business_name | string | Legal entity name. |
| address / city / zip | string | Address components. |
| global_state_id / global_country_id | integer | Resolved location IDs. |
| state | string | Human-readable state name. |
| email / phone | string | Contact details (phone normalized). |
| owner | integer | Owner record ID. |
| owner_name | string | Owner's full name. |
| eod_time | string | End-of-day cutoff time. |
| tax_rate | object | Default tax-rate object (id, name, rate, exclusive). |
| created_datetime | string (ISO 8601) | Creation timestamp. |
| timezone_code | string | Resolved 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
| Code | Description |
|---|---|
| 200 | Location created |
| 400 | Required parameters missing or invalid |
Workflow Placement
The first resource you create during boarding:
-
Get Countries / Get States
-
Create A Location
-
Create User, Create Terminal, Configure Processing
Notes
-
Resolve
global_state_idandglobal_country_idfrom 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_rateis created automatically and can be adjusted later via Update A Location. -
eod_timeis the batch-out time local to the location, expressed in UTC, inHH:MM:SSformat; it defaults to11:00:00. -
corporate_idandcorporate_category_idshould be supplied when boarding a location so that billing and the correct products/services are associated.
Common Mistakes
-
Omitting required fields, which triggers
10109with the missing fields indetails. -
Sending state or country names instead of their numeric IDs.
-
Confusing the returned
id(internal) withlocation_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 the10109detailslist when missing.processor_cp/processor_cnpare part of processor configuration (workflow step 3) rather than the core location body.

