Create Location
Creates a new store or branch (“location”) under an existing merchant.
The call returns a locationId
that you will reference when you create terminals or pull reporting data.
Endpoint
POST /Merchants/{id}/locations
Purpose
Attach a new location to the merchant identified by {id}
and return its unique identifier.
Path parameters
id
string
✔︎
The merchantId
that will own the new location
Request headers
Authorization
Bearer <access-token>
Content-Type
application/json
Accept
application/json
Request body
address
object
✔︎
Must include at least address1
, city
, country
, postalCode
name
string
✘
Friendly label shown in dashboards (e.g., “Downtown Flagship”)
tenderTypes
array<string>
✘
Allowed rails; omit to inherit merchant defaults
maxTransactionAmount
integer
✘
Hard ceiling (minor units) for a single sale; 0
= no limit
Example request
curl -X POST "https://api.test.devs.beadpay.io/Merchants/mer_4e5a13aa/locations" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Downtown Flagship",
"address": {
"address1": "123 Main St",
"address2": "Suite 200",
"city": "Springfield",
"region": "MA",
"country": "US",
"postalCode": "01109"
},
"maxTransactionAmount": 1000000,
"tenderTypes": ["ethereum"]
}'
Successful response — 200
{
"id": "loc_bfdc6a7f",
"created": "2025-06-04T16:08:03.226Z",
"updated": "2025-06-04T16:08:03.226Z",
"merchantId": "mer_4e5a13aa",
"name": "Downtown Flagship",
"tenderTypes": ["ethereum"],
"maxTransactionAmount": 1000000,
"address": {
"address1": "123 Main St",
"address2": "Suite 200",
"city": "Springfield",
"region": "MA",
"country": "US",
"postalCode": "01109"
},
"terminals": []
}
id
New locationId
; store for later calls
created
, updated
ISO-8601 timestamps (UTC)
tenderTypes
Effective tender list after inheritance rules
terminals
Empty until you create terminals
Error responses
400
Missing required address fields or invalid values
404
Merchant {id}
does not exist or is not visible to your token
409
Duplicate location (same address already registered for this merchant)
Best practices
Create under the right merchant – pass the correct
merchantId
so dashboards aggregate correctlyConsistent naming – adopt a clear pattern (city + store #) to ease support look-ups
Disable before delete – always disable production locations before deleting to prevent accidental transactions
Address accuracy – provide the full address up front; correcting it later may affect tax or compliance data
Next steps
Confirm the store appears with
GET /Merchants/{id}/locations
Create one or more terminals under the new
locationId
(POST /Terminals
)
Last updated