Skip to content
Developer preview: the API may change before general availability. Request access

Update the merchant

PATCH
/merchant
curl --request PATCH \
--url https://sandbox.partners.loops.sa/v1/merchant \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Loops-Merchant-Id: mer_7Hq2Lw8Z' \
--data '{ "external_ref": "BR-01", "name": { "en": "example", "ar": "example" } }'

Changes the merchant’s display name or your reference for it. Send only the fields to change.

Loops-Merchant-Id
string

The merchant you are acting for (mer_…). Required for platform applications; optional for direct integrations, which have a single merchant.

Media typeapplication/json
object
external_ref

Your own ID for this object, from your system. Unique within its type for the merchant (for menu items, within the brand). Letters, digits, -, _, . and :.

string
>= 1 characters <= 64 characters /^[A-Za-z0-9._:-]+$/
name

Text in English and Arabic. Delivery apps in Saudi Arabia show both, so both are required.

object
en
required
string
>= 1 characters <= 120 characters
ar
required
string
>= 1 characters <= 120 characters

The updated merchant.

Media typeapplication/json
object
id
required
string
external_ref
string | null
name
required

Text in English and Arabic.

object
en
string | null
ar
string | null
status
required
string
Allowed values: active suspended
owner
object
name
string
email
string
phone
string
invitation

Whether the owner has accepted the invitation to sign in to Loops.

string
Allowed values: sent accepted
business_profile_status
required

draft: being filled in. in_review: submitted, Loops is reviewing it. approved: locations can go live on delivery apps. rejected: fix what the review says and submit again.

string
Allowed values: draft in_review approved rejected
created_at
required
string format: date-time
Example
{
"id": "mer_7Hq2Lw8Z",
"external_ref": "CUST-10021",
"status": "active",
"owner": {
"invitation": "sent"
},
"business_profile_status": "draft"
}

The request is invalid. errors lists each problem.

Media typeapplication/problem+json

RFC 9457 Problem Details with a stable code.

object
type
required
string format: uri
title
required
string
status
required
integer
code
required

Stable machine-readable error code. Switch on this, not on title.

string
Allowed values: invalid_request invalid_file merchant_required unauthorized insufficient_scope scope_not_granted connection_not_active application_suspended not_found merchant_not_found merchant_exists external_ref_conflict business_profile_locked idempotency_key_reused rate_limited upstream_unavailable
detail
string
request_id
required
string
existing_id

For external_ref_conflict, the ID of the object that already uses the reference.

string
errors

Field errors, for invalid_request.

Array<object>
object
field
string
message
string
Example
{
"type": "https://docs.partners.loops.sa/errors/external_ref_conflict",
"title": "External reference already used",
"status": 409,
"code": "invalid_request",
"detail": "A location with external_ref BR-01 already exists.",
"request_id": "req_01J9X7P2QK",
"existing_id": "loc_2Xf9K",
"errors": [
{
"field": "products[3].price",
"message": "Required unless the product has variants."
}
]
}

The access token is missing, expired or invalid.

Media typeapplication/problem+json

RFC 9457 Problem Details with a stable code.

object
type
required
string format: uri
title
required
string
status
required
integer
code
required

Stable machine-readable error code. Switch on this, not on title.

string
Allowed values: invalid_request invalid_file merchant_required unauthorized insufficient_scope scope_not_granted connection_not_active application_suspended not_found merchant_not_found merchant_exists external_ref_conflict business_profile_locked idempotency_key_reused rate_limited upstream_unavailable
detail
string
request_id
required
string
existing_id

For external_ref_conflict, the ID of the object that already uses the reference.

string
errors

Field errors, for invalid_request.

Array<object>
object
field
string
message
string
Example
{
"type": "https://docs.partners.loops.sa/errors/external_ref_conflict",
"title": "External reference already used",
"status": 409,
"code": "invalid_request",
"detail": "A location with external_ref BR-01 already exists.",
"request_id": "req_01J9X7P2QK",
"existing_id": "loc_2Xf9K",
"errors": [
{
"field": "products[3].price",
"message": "Required unless the product has variants."
}
]
}

Not allowed: the scope isn’t approved or granted, the connection is not active, or your application is suspended. See code.

Media typeapplication/problem+json

RFC 9457 Problem Details with a stable code.

object
type
required
string format: uri
title
required
string
status
required
integer
code
required

Stable machine-readable error code. Switch on this, not on title.

string
Allowed values: invalid_request invalid_file merchant_required unauthorized insufficient_scope scope_not_granted connection_not_active application_suspended not_found merchant_not_found merchant_exists external_ref_conflict business_profile_locked idempotency_key_reused rate_limited upstream_unavailable
detail
string
request_id
required
string
existing_id

For external_ref_conflict, the ID of the object that already uses the reference.

string
errors

Field errors, for invalid_request.

Array<object>
object
field
string
message
string
Example
{
"type": "https://docs.partners.loops.sa/errors/external_ref_conflict",
"title": "External reference already used",
"status": 409,
"code": "invalid_request",
"detail": "A location with external_ref BR-01 already exists.",
"request_id": "req_01J9X7P2QK",
"existing_id": "loc_2Xf9K",
"errors": [
{
"field": "products[3].price",
"message": "Required unless the product has variants."
}
]
}

The request conflicts with the current state, for example an external_ref already in use, or a business profile that is in review. See code.

Media typeapplication/problem+json

RFC 9457 Problem Details with a stable code.

object
type
required
string format: uri
title
required
string
status
required
integer
code
required

Stable machine-readable error code. Switch on this, not on title.

string
Allowed values: invalid_request invalid_file merchant_required unauthorized insufficient_scope scope_not_granted connection_not_active application_suspended not_found merchant_not_found merchant_exists external_ref_conflict business_profile_locked idempotency_key_reused rate_limited upstream_unavailable
detail
string
request_id
required
string
existing_id

For external_ref_conflict, the ID of the object that already uses the reference.

string
errors

Field errors, for invalid_request.

Array<object>
object
field
string
message
string
Example
{
"type": "https://docs.partners.loops.sa/errors/external_ref_conflict",
"title": "External reference already used",
"status": 409,
"code": "invalid_request",
"detail": "A location with external_ref BR-01 already exists.",
"request_id": "req_01J9X7P2QK",
"existing_id": "loc_2Xf9K",
"errors": [
{
"field": "products[3].price",
"message": "Required unless the product has variants."
}
]
}