Skip to content

Update the company

View as Markdown
PUT
/company
  • Production and sandbox. The token decides the environment.https://api.beautyrouter.com/v1/company
curl --request PUT \
--url https://api.beautyrouter.com/v1/company \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "businessType": "salon", "displayName": "Golden Hour Hair Studio", "legalName": "Golden Hour Salon LLC", "ein": "847102938" }'

This endpoint accepts a partial update. Send only the fields you change, and fields you leave out stay as they are.

A company can change its delivery address at any time, in any status. It needs a license in that state only to order: without one, the order fails with address_state_without_license in its problems. The address still saves, and the response has warnings. A warning comes only with the call that saved that address.

For an unverified or declined company, a change saves and shows directly in GET /v1/company.

When an in_review, prequalified, or verified company changes legalName, ein, displayName, or businessType, the change goes to review. The status stays the same, and the new values show in pendingChanges until the review ends.

A prequalified company’s license counts as soon as it is uploaded. A verified company’s license must be reviewed before an order can go to that state, and uploading the license creates the review task.

Media typeapplication/json

Send only the fields you change.

object
businessType

salon for a salon or spa, professional for an individual licensed professional, store for a beauty supply store. Beauty Router does not support stores yet, so verification for a store always fails.

string
Allowed values: salon professional store
displayName

The name the company goes by.

string
legalName

The registered legal name. Not used for professional.

string
ein

The Employer Identification Number, 9 digits. Not used for professional.

string
/^[0-9]{9}$/
deliveryAddress
object
line1
required

Street address.

string
line2

Suite, unit, or floor.

string
city
required
string
state
required

A two-letter US state code.

string
/^[A-Z]{2}$/
postalCode
required

ZIP code.

string
country
required
string
Allowed value: US
phone

Phone number for the delivery. Required on the company. Optional on an order, which then uses the company’s phone.

string

Examples

{
"businessType": "salon",
"displayName": "Golden Hour Hair Studio",
"legalName": "Golden Hour Salon LLC",
"ein": "847102938"
}

The updated company.

Media typeapplication/json
object
id
required

The company ID.

string
businessType
required
One of:

salon for a salon or spa, professional for an individual licensed professional, store for a beauty supply store. Beauty Router does not support stores yet, so verification for a store always fails.

string
Allowed values: salon professional store
displayName
required

The name the company goes by.

string | null
legalName
required

The registered legal name. Not used for professional.

string | null
ein
required

The Employer Identification Number, 9 digits. Not used for professional.

string | null
/^[0-9]{9}$/
deliveryAddress
required
One of:
object
line1
required

Street address.

string
line2

Suite, unit, or floor.

string
city
required
string
state
required

A two-letter US state code.

string
/^[A-Z]{2}$/
postalCode
required

ZIP code.

string
country
required
string
Allowed value: US
phone

Phone number for the delivery. Required on the company. Optional on an order, which then uses the company’s phone.

string
verificationStatus
required

unverified: not submitted yet. in_review: Beauty Router is reviewing the company. prequalified: the initial check passed, and the detailed verification is still pending. The company can order, its orders wait until that verification ends, and no charge happens until then. verified: the company passed the review. declined: the company did not pass the review.

string
Allowed values: unverified in_review prequalified verified declined
buyingSuspended
required

true when Beauty Router suspended the company’s buying. The company can still read its data and manage its orders, but it cannot place a new order.

boolean
pendingChanges
required
One of:

New values of an in_review, prequalified, or verified company that wait for review. null when no change waits for review.

object
businessType

salon for a salon or spa, professional for an individual licensed professional, store for a beauty supply store. Beauty Router does not support stores yet, so verification for a store always fails.

string
Allowed values: salon professional store
displayName
string
legalName
string
ein
string
/^[0-9]{9}$/
warnings

address_state_without_license: the address saved, but the company has no license in that state, so an order to it fails. Only on the call that saved that address.

Array<string>
Allowed values: address_state_without_license

Examples

{
"id": "loc-7Hk2pQx9Lm",
"businessType": "salon",
"displayName": "Golden Hour Hair Studio",
"legalName": "Golden Hour Salon LLC",
"ein": "847102938",
"deliveryAddress": {
"line1": "1450 Larimer St",
"line2": "Suite 200",
"city": "Denver",
"state": "CO",
"postalCode": "80202",
"country": "US",
"phone": "+13035550142"
},
"verificationStatus": "verified",
"buyingSuspended": false,
"pendingChanges": null
}

validation_failed: a field is missing or has a wrong value. field names it.

Media typeapplication/json

The body of every error response.

object
error
required
object
code
required

A stable error code.

string
Allowed values: invalid_app_token invalid_user_token user_token_expired origin_not_allowed ip_not_allowed user_cannot_manage_company user_cannot_order company_blocked company_not_verified app_setup_incomplete not_found validation_failed email_invalid_format email_domain_not_found email_mailbox_not_found address_state_without_license hazmat_destination ship_to_restricted verification_data_missing document_locked document_already_uploaded file_too_large file_type_not_supported reply_not_expected order_action_not_allowed supplier_refused_cancel order_total_changed order_has_problems idempotency_key_reused idempotency_key_in_use rate_limit_exceeded internal_error
message
required

A sentence for developers. It can change, so do not match on it.

string
field

The request field that caused the error. Only some errors have it.

string
missing

Only on verification_data_missing and app_setup_incomplete. What still needs to be set.

Array<string>
quote

Only on order_total_changed and order_has_problems. A fresh quote.

object
groups
required

One group per supplier. Each group becomes one order.

Array<object>
object
supplierId
required
string
lines
required
Array<object>
object
productId
required
string
quantity
required
integer
unitPrice
required

An amount in dollars, with up to two decimal places.

number
discount
required

The discount on the whole line, in US dollars.

number
total
required

An amount in dollars, with up to two decimal places.

number
productsTotal
required

The total of the lines, in US dollars.

number
orderDiscount
required

The discount on the whole order, in US dollars.

number
shipping
required
object
amount
required

The shipping charge in US dollars, or null when it cannot be worked out.

number | null
kind
required
string
Allowed values: free flat carrier
freeShippingRemaining
required

How much more to order for free shipping, or null when it does not apply.

number | null
salesTax
required

The sales tax in US dollars, or null when it cannot be worked out.

number | null
taxExemption
required
object
certificateId
required

The exemption certificate used, or null.

string | null
notAppliedReason
required

Why no certificate applies, or null when one does.

string | null
Allowed values: no_certificate other_state not_reviewed
total
required

The amount the salon pays for this group in US dollars, or null when it cannot be worked out. Send it back as expectedTotal. A group with problems has no expectedTotal.

number | null
chargeTiming
required

now: Beauty Router charges the card when the order is created. after_verification: the company is prequalified, so the charge waits until its verification ends.

string
Allowed values: now after_verification
problems
required
Array<object>
object
code
required

What stops a group or the whole request. See Problems.

string
Allowed values: buying_suspended supplier_unavailable address_state_without_license ship_to_restricted hazmat_destination address_not_deliverable connection_required connection_blocked insufficient_stock product_unavailable shipping_unavailable tax_unavailable delivery_address_required delivery_phone_required payment_card_required payment_card_unusable quantity_limit_exceeded order_limit_exceeded order_below_minimum
message
required

A sentence you can show. It can change, so do not match on it.

string
productId

The product. Only on problems with one product.

string
supplierId

The supplier. Only on problems with one supplier.

string
available

How many units can be ordered. Only on insufficient_stock.

integer
unresolvedLines
required

The lines no supplier can take.

Array<object>
object
productId
required
string
quantity
required
integer
problems
required
Array<object>
object
code
required

What stops a group or the whole request. See Problems.

string
Allowed values: buying_suspended supplier_unavailable address_state_without_license ship_to_restricted hazmat_destination address_not_deliverable connection_required connection_blocked insufficient_stock product_unavailable shipping_unavailable tax_unavailable delivery_address_required delivery_phone_required payment_card_required payment_card_unusable quantity_limit_exceeded order_limit_exceeded order_below_minimum
message
required

A sentence you can show. It can change, so do not match on it.

string
productId

The product. Only on problems with one product.

string
supplierId

The supplier. Only on problems with one supplier.

string
available

How many units can be ordered. Only on insufficient_stock.

integer
companyProblems
required

What stops every group.

Array<object>
object
code
required

What stops a group or the whole request. See Problems.

string
Allowed values: buying_suspended supplier_unavailable address_state_without_license ship_to_restricted hazmat_destination address_not_deliverable connection_required connection_blocked insufficient_stock product_unavailable shipping_unavailable tax_unavailable delivery_address_required delivery_phone_required payment_card_required payment_card_unusable quantity_limit_exceeded order_limit_exceeded order_below_minimum
message
required

A sentence you can show. It can change, so do not match on it.

string
productId

The product. Only on problems with one product.

string
supplierId

The supplier. Only on problems with one supplier.

string
available

How many units can be ordered. Only on insufficient_stock.

integer
total
required

The sum of all the groups in US dollars, or null when a group’s total is.

number | null
currency
required

Always usd.

string
Allowed value: usd

Examples

Examplevalidation_failed
{
"error": {
"code": "validation_failed",
"message": "ein must have 9 digits.",
"field": "ein"
}
}

invalid_user_token: the user token is missing or wrong. user_token_expired: the user token expired. Log the user in again with POST /v1/login.

Media typeapplication/json

The body of every error response.

object
error
required
object
code
required

A stable error code.

string
Allowed values: invalid_app_token invalid_user_token user_token_expired origin_not_allowed ip_not_allowed user_cannot_manage_company user_cannot_order company_blocked company_not_verified app_setup_incomplete not_found validation_failed email_invalid_format email_domain_not_found email_mailbox_not_found address_state_without_license hazmat_destination ship_to_restricted verification_data_missing document_locked document_already_uploaded file_too_large file_type_not_supported reply_not_expected order_action_not_allowed supplier_refused_cancel order_total_changed order_has_problems idempotency_key_reused idempotency_key_in_use rate_limit_exceeded internal_error
message
required

A sentence for developers. It can change, so do not match on it.

string
field

The request field that caused the error. Only some errors have it.

string
missing

Only on verification_data_missing and app_setup_incomplete. What still needs to be set.

Array<string>
quote

Only on order_total_changed and order_has_problems. A fresh quote.

object
groups
required

One group per supplier. Each group becomes one order.

Array<object>
object
supplierId
required
string
lines
required
Array<object>
object
productId
required
string
quantity
required
integer
unitPrice
required

An amount in dollars, with up to two decimal places.

number
discount
required

The discount on the whole line, in US dollars.

number
total
required

An amount in dollars, with up to two decimal places.

number
productsTotal
required

The total of the lines, in US dollars.

number
orderDiscount
required

The discount on the whole order, in US dollars.

number
shipping
required
object
amount
required

The shipping charge in US dollars, or null when it cannot be worked out.

number | null
kind
required
string
Allowed values: free flat carrier
freeShippingRemaining
required

How much more to order for free shipping, or null when it does not apply.

number | null
salesTax
required

The sales tax in US dollars, or null when it cannot be worked out.

number | null
taxExemption
required
object
certificateId
required

The exemption certificate used, or null.

string | null
notAppliedReason
required

Why no certificate applies, or null when one does.

string | null
Allowed values: no_certificate other_state not_reviewed
total
required

The amount the salon pays for this group in US dollars, or null when it cannot be worked out. Send it back as expectedTotal. A group with problems has no expectedTotal.

number | null
chargeTiming
required

now: Beauty Router charges the card when the order is created. after_verification: the company is prequalified, so the charge waits until its verification ends.

string
Allowed values: now after_verification
problems
required
Array<object>
object
code
required

What stops a group or the whole request. See Problems.

string
Allowed values: buying_suspended supplier_unavailable address_state_without_license ship_to_restricted hazmat_destination address_not_deliverable connection_required connection_blocked insufficient_stock product_unavailable shipping_unavailable tax_unavailable delivery_address_required delivery_phone_required payment_card_required payment_card_unusable quantity_limit_exceeded order_limit_exceeded order_below_minimum
message
required

A sentence you can show. It can change, so do not match on it.

string
productId

The product. Only on problems with one product.

string
supplierId

The supplier. Only on problems with one supplier.

string
available

How many units can be ordered. Only on insufficient_stock.

integer
unresolvedLines
required

The lines no supplier can take.

Array<object>
object
productId
required
string
quantity
required
integer
problems
required
Array<object>
object
code
required

What stops a group or the whole request. See Problems.

string
Allowed values: buying_suspended supplier_unavailable address_state_without_license ship_to_restricted hazmat_destination address_not_deliverable connection_required connection_blocked insufficient_stock product_unavailable shipping_unavailable tax_unavailable delivery_address_required delivery_phone_required payment_card_required payment_card_unusable quantity_limit_exceeded order_limit_exceeded order_below_minimum
message
required

A sentence you can show. It can change, so do not match on it.

string
productId

The product. Only on problems with one product.

string
supplierId

The supplier. Only on problems with one supplier.

string
available

How many units can be ordered. Only on insufficient_stock.

integer
companyProblems
required

What stops every group.

Array<object>
object
code
required

What stops a group or the whole request. See Problems.

string
Allowed values: buying_suspended supplier_unavailable address_state_without_license ship_to_restricted hazmat_destination address_not_deliverable connection_required connection_blocked insufficient_stock product_unavailable shipping_unavailable tax_unavailable delivery_address_required delivery_phone_required payment_card_required payment_card_unusable quantity_limit_exceeded order_limit_exceeded order_below_minimum
message
required

A sentence you can show. It can change, so do not match on it.

string
productId

The product. Only on problems with one product.

string
supplierId

The supplier. Only on problems with one supplier.

string
available

How many units can be ordered. Only on insufficient_stock.

integer
total
required

The sum of all the groups in US dollars, or null when a group’s total is.

number | null
currency
required

Always usd.

string
Allowed value: usd

Examples

{
"error": {
"code": "invalid_user_token",
"message": "The user token is missing or not valid."
}
}

user_cannot_manage_company: the user was logged in with canManageCompany: false.

Media typeapplication/json

The body of every error response.

object
error
required
object
code
required

A stable error code.

string
Allowed values: invalid_app_token invalid_user_token user_token_expired origin_not_allowed ip_not_allowed user_cannot_manage_company user_cannot_order company_blocked company_not_verified app_setup_incomplete not_found validation_failed email_invalid_format email_domain_not_found email_mailbox_not_found address_state_without_license hazmat_destination ship_to_restricted verification_data_missing document_locked document_already_uploaded file_too_large file_type_not_supported reply_not_expected order_action_not_allowed supplier_refused_cancel order_total_changed order_has_problems idempotency_key_reused idempotency_key_in_use rate_limit_exceeded internal_error
message
required

A sentence for developers. It can change, so do not match on it.

string
field

The request field that caused the error. Only some errors have it.

string
missing

Only on verification_data_missing and app_setup_incomplete. What still needs to be set.

Array<string>
quote

Only on order_total_changed and order_has_problems. A fresh quote.

object
groups
required

One group per supplier. Each group becomes one order.

Array<object>
object
supplierId
required
string
lines
required
Array<object>
object
productId
required
string
quantity
required
integer
unitPrice
required

An amount in dollars, with up to two decimal places.

number
discount
required

The discount on the whole line, in US dollars.

number
total
required

An amount in dollars, with up to two decimal places.

number
productsTotal
required

The total of the lines, in US dollars.

number
orderDiscount
required

The discount on the whole order, in US dollars.

number
shipping
required
object
amount
required

The shipping charge in US dollars, or null when it cannot be worked out.

number | null
kind
required
string
Allowed values: free flat carrier
freeShippingRemaining
required

How much more to order for free shipping, or null when it does not apply.

number | null
salesTax
required

The sales tax in US dollars, or null when it cannot be worked out.

number | null
taxExemption
required
object
certificateId
required

The exemption certificate used, or null.

string | null
notAppliedReason
required

Why no certificate applies, or null when one does.

string | null
Allowed values: no_certificate other_state not_reviewed
total
required

The amount the salon pays for this group in US dollars, or null when it cannot be worked out. Send it back as expectedTotal. A group with problems has no expectedTotal.

number | null
chargeTiming
required

now: Beauty Router charges the card when the order is created. after_verification: the company is prequalified, so the charge waits until its verification ends.

string
Allowed values: now after_verification
problems
required
Array<object>
object
code
required

What stops a group or the whole request. See Problems.

string
Allowed values: buying_suspended supplier_unavailable address_state_without_license ship_to_restricted hazmat_destination address_not_deliverable connection_required connection_blocked insufficient_stock product_unavailable shipping_unavailable tax_unavailable delivery_address_required delivery_phone_required payment_card_required payment_card_unusable quantity_limit_exceeded order_limit_exceeded order_below_minimum
message
required

A sentence you can show. It can change, so do not match on it.

string
productId

The product. Only on problems with one product.

string
supplierId

The supplier. Only on problems with one supplier.

string
available

How many units can be ordered. Only on insufficient_stock.

integer
unresolvedLines
required

The lines no supplier can take.

Array<object>
object
productId
required
string
quantity
required
integer
problems
required
Array<object>
object
code
required

What stops a group or the whole request. See Problems.

string
Allowed values: buying_suspended supplier_unavailable address_state_without_license ship_to_restricted hazmat_destination address_not_deliverable connection_required connection_blocked insufficient_stock product_unavailable shipping_unavailable tax_unavailable delivery_address_required delivery_phone_required payment_card_required payment_card_unusable quantity_limit_exceeded order_limit_exceeded order_below_minimum
message
required

A sentence you can show. It can change, so do not match on it.

string
productId

The product. Only on problems with one product.

string
supplierId

The supplier. Only on problems with one supplier.

string
available

How many units can be ordered. Only on insufficient_stock.

integer
companyProblems
required

What stops every group.

Array<object>
object
code
required

What stops a group or the whole request. See Problems.

string
Allowed values: buying_suspended supplier_unavailable address_state_without_license ship_to_restricted hazmat_destination address_not_deliverable connection_required connection_blocked insufficient_stock product_unavailable shipping_unavailable tax_unavailable delivery_address_required delivery_phone_required payment_card_required payment_card_unusable quantity_limit_exceeded order_limit_exceeded order_below_minimum
message
required

A sentence you can show. It can change, so do not match on it.

string
productId

The product. Only on problems with one product.

string
supplierId

The supplier. Only on problems with one supplier.

string
available

How many units can be ordered. Only on insufficient_stock.

integer
total
required

The sum of all the groups in US dollars, or null when a group’s total is.

number | null
currency
required

Always usd.

string
Allowed value: usd

Examples

Exampleuser_cannot_manage_company
{
"error": {
"code": "user_cannot_manage_company",
"message": "This user cannot change company settings."
}
}

internal_error: something failed on Beauty Router’s side. Try again later.

Media typeapplication/json

The body of every error response.

object
error
required
object
code
required

A stable error code.

string
Allowed values: invalid_app_token invalid_user_token user_token_expired origin_not_allowed ip_not_allowed user_cannot_manage_company user_cannot_order company_blocked company_not_verified app_setup_incomplete not_found validation_failed email_invalid_format email_domain_not_found email_mailbox_not_found address_state_without_license hazmat_destination ship_to_restricted verification_data_missing document_locked document_already_uploaded file_too_large file_type_not_supported reply_not_expected order_action_not_allowed supplier_refused_cancel order_total_changed order_has_problems idempotency_key_reused idempotency_key_in_use rate_limit_exceeded internal_error
message
required

A sentence for developers. It can change, so do not match on it.

string
field

The request field that caused the error. Only some errors have it.

string
missing

Only on verification_data_missing and app_setup_incomplete. What still needs to be set.

Array<string>
quote

Only on order_total_changed and order_has_problems. A fresh quote.

object
groups
required

One group per supplier. Each group becomes one order.

Array<object>
object
supplierId
required
string
lines
required
Array<object>
object
productId
required
string
quantity
required
integer
unitPrice
required

An amount in dollars, with up to two decimal places.

number
discount
required

The discount on the whole line, in US dollars.

number
total
required

An amount in dollars, with up to two decimal places.

number
productsTotal
required

The total of the lines, in US dollars.

number
orderDiscount
required

The discount on the whole order, in US dollars.

number
shipping
required
object
amount
required

The shipping charge in US dollars, or null when it cannot be worked out.

number | null
kind
required
string
Allowed values: free flat carrier
freeShippingRemaining
required

How much more to order for free shipping, or null when it does not apply.

number | null
salesTax
required

The sales tax in US dollars, or null when it cannot be worked out.

number | null
taxExemption
required
object
certificateId
required

The exemption certificate used, or null.

string | null
notAppliedReason
required

Why no certificate applies, or null when one does.

string | null
Allowed values: no_certificate other_state not_reviewed
total
required

The amount the salon pays for this group in US dollars, or null when it cannot be worked out. Send it back as expectedTotal. A group with problems has no expectedTotal.

number | null
chargeTiming
required

now: Beauty Router charges the card when the order is created. after_verification: the company is prequalified, so the charge waits until its verification ends.

string
Allowed values: now after_verification
problems
required
Array<object>
object
code
required

What stops a group or the whole request. See Problems.

string
Allowed values: buying_suspended supplier_unavailable address_state_without_license ship_to_restricted hazmat_destination address_not_deliverable connection_required connection_blocked insufficient_stock product_unavailable shipping_unavailable tax_unavailable delivery_address_required delivery_phone_required payment_card_required payment_card_unusable quantity_limit_exceeded order_limit_exceeded order_below_minimum
message
required

A sentence you can show. It can change, so do not match on it.

string
productId

The product. Only on problems with one product.

string
supplierId

The supplier. Only on problems with one supplier.

string
available

How many units can be ordered. Only on insufficient_stock.

integer
unresolvedLines
required

The lines no supplier can take.

Array<object>
object
productId
required
string
quantity
required
integer
problems
required
Array<object>
object
code
required

What stops a group or the whole request. See Problems.

string
Allowed values: buying_suspended supplier_unavailable address_state_without_license ship_to_restricted hazmat_destination address_not_deliverable connection_required connection_blocked insufficient_stock product_unavailable shipping_unavailable tax_unavailable delivery_address_required delivery_phone_required payment_card_required payment_card_unusable quantity_limit_exceeded order_limit_exceeded order_below_minimum
message
required

A sentence you can show. It can change, so do not match on it.

string
productId

The product. Only on problems with one product.

string
supplierId

The supplier. Only on problems with one supplier.

string
available

How many units can be ordered. Only on insufficient_stock.

integer
companyProblems
required

What stops every group.

Array<object>
object
code
required

What stops a group or the whole request. See Problems.

string
Allowed values: buying_suspended supplier_unavailable address_state_without_license ship_to_restricted hazmat_destination address_not_deliverable connection_required connection_blocked insufficient_stock product_unavailable shipping_unavailable tax_unavailable delivery_address_required delivery_phone_required payment_card_required payment_card_unusable quantity_limit_exceeded order_limit_exceeded order_below_minimum
message
required

A sentence you can show. It can change, so do not match on it.

string
productId

The product. Only on problems with one product.

string
supplierId

The supplier. Only on problems with one supplier.

string
available

How many units can be ordered. Only on insufficient_stock.

integer
total
required

The sum of all the groups in US dollars, or null when a group’s total is.

number | null
currency
required

Always usd.

string
Allowed value: usd

Examples

Exampleinternal_error
{
"error": {
"code": "internal_error",
"message": "Something went wrong. Try again later."
}
}