API error handling

Read an error response, find the field to fix and send the request again

If a request fails, the Priority Commerce Engine (PCE) rejects the whole request and doesn't create the business. The response lists each problem in errors, one entry per field. Fix those fields and send the request again.

Read an error response

A failed request returns the problem in this shape. The HTTP status names the kind of failure, and errors lists each field to fix.

{
  "traceId": "5c2e8f14-7a3b-4d91-b6c5-9e1f3a7d2b48",
  "timestamp": "2026-09-15T14:32:08.214Z",
  "errorCode": "REQUEST_VALIDATION_FAILED",
  "message": "Validation failed",
  "errors": [
    {
      "field": "legalName",
      "code": "REQUIRED",
      "message": "legalName is required"
    },
    {
      "field": "owners[0].ownershipPercentage",
      "code": "OUT_OF_RANGE",
      "message": "ownershipPercentage must be between 0 and 100"
    }
  ]
}
FieldWhat it tells you
traceIdThe ID of this request. Give it to Priority support if you need help.
timestampWhen the error happened (ISO 8601, UTC).
errorCodeThe kind of problem. See the table below.
errors[].fieldWhere the problem is. For example, owners[0].ownershipPercentage means the ownershipPercentage of the first owner.
errors[].codeA short code for the field problem, such as REQUIRED or INVALID_ENUM_VALUE.
errors[].messageWhat's wrong, in words.

Each errorCode tells you the kind of problem:

errorCodeWhat it means
REQUEST_VALIDATION_FAILED, VALIDATION_FAILEDA required value is missing or not allowed.
UNPROCESSABLE_INPUTA value is there but is too long, too short or badly formatted.
NOT_FOUNDThe ID in the path doesn't exist.
DUPLICATE_EXTERNAL_IDYou already used this externalId on another record. Send a different value to create a new one.
RESOURCE_CONFLICTA value that must be unique, such as an SSN or government ID, is already linked to another person. Link the person who already exists instead of adding them again.

Some checks can't run at submit time. Priority also verifies who the business is and who owns it (KYB, or Know Your Business). A KYB problem can surface after a successful create. It appears on the service's errors list, with a level and a fieldPath:

{
  "fieldPath": "owners[].isControlPerson or signatories[].isControlPerson",
  "level": "mandatory",
  "message": "Exactly one owner or signatory must be marked as the Control Person."
}

To read and resolve a problem that surfaces after create, see Underwriting exceptions.

Common messages

These messages appear exactly as the API returns them. Search this page for the text you received.

The business

MessageWhat went wrong
legalName is requiredThe legal name is missing.
legalName must be shorter than or equal to 255 charactersThe legal name is longer than 255 characters.
businessDescription must be shorter than or equal to 512 charactersThe description is longer than 512 characters.
email must be an emailThe email address isn't valid.
externalId must be shorter than or equal to 255 charactersYour externalId is longer than 255 characters.
taxIds.0.value must be a valid 9-digit ITIN beginning with 9 (e.g. 9XX-XX-XXXX)The ITIN (a US tax number for people without an SSN) isn't 9 digits starting with 9.
Tax ID type must be EIN for corporations, S-corporations, LLCs, LLPs and partnerships.This kind of business must use an EIN (the US tax number for a company).

Which tax ID each kind of business needs is on Business validation and KYB rules.

Owners and signatories

Owners are the people who own part of the business. Signatories can sign for it. The control person is the one person who runs the business day to day, such as the CEO. In these messages, "signatory" means every person Priority must identify.

MessageWhat went wrong
Exactly one owner or signatory must be marked as the Control Person.Nobody is marked as the person who runs the business.
Beneficial-owner ownership must be 0 for government, non-profit and 501(c)(3) tax exempt.A non-profit or government business lists owners with a share above 0%.
Total beneficial-owner ownership must be at least 50% for partnerships.A partnership's owners add up to less than 50%.
Every signatory (control person, owner and guarantor) requires a primary identification (SSN) for acquiring.A person has no SSN or ITIN.
Every signatory (control person, owner and guarantor) requires a secondary identification (government id) for acquiring.A person has no government ID, such as a driver license.
SSN or Government ID is already associated with another owner.An SSN or government ID is already linked to another owner (returns 409).
Duplicate signatory detected. The same SSN or government ID cannot be used for more than one signatory.The same SSN or government ID is used for two signatories (returns 409).
ownershipPercentage must be a non-negative amount with at most 2 decimal placesAn ownership share has more than 2 decimal places.

Locations and addresses

A location is a place where the business sells. Accept Payments needs details about how it takes cards at each location.

MessageWhat went wrong
An industry MCC code is required for acquiring.The MCC (the code for what the business sells) is missing.
An industry category or description is required for acquiring.The industry category or description is missing.
MOTO, eCommerce and card-present percentages are required and must total 100% for acquiring.The card mix (how card payments split between phone or mail orders, online and in person) doesn't add up to 100%.
addresses.0.type must be one of the following: registered, mailing, physical, headquarters, home, workThe address type isn't one of the allowed values.
addresses.0.postalCode must be a valid postal codeThe postal code isn't valid.

Bank accounts

MessageWhat went wrong
bankAccounts.0.routingNumber must be a valid 9-digit routing numberThe routing number isn't 9 digits.
accountType must be one of: checking, savingsThe account type isn't checking or savings.
Duplicate externalId '…' provided for multiple bank accounts in the same requestTwo bank accounts in one request have the same externalId.

The request itself

StatusMessageWhat went wrong
400Body is not valid JSON but content-type is set to 'application/json'The body isn't valid JSON.
400Body cannot be empty when content-type is set to 'application/json'The body is empty.
401UnauthorizedThe API key is missing or not valid.
404business with ID "…" not foundNo business has that ID.
409externalId "…" is already in use / SSN or Government ID is already associated with another owner.A value that must be unique is already in use: an externalId, or an SSN or government ID linked to another person.
422property … should not existYou sent a query parameter PCE doesn't know.
422limit must be an integer between 1 and 250limit is outside 1 to 250.

If you send a record back exactly as you read it, PCE rejects it. A read includes fields only PCE sets, such as masked numbers. Send only the fields you're changing.

For what each status code means, see HTTP response codes.

Next steps


Did this page help you?