Skip to navigation

Manage business entities with the API

Beta
Learn how to create, read, update, and deactivate boarding business entities with the Payabli API
View as MarkdownOpen in Claude
Applies to:Developers

Intelligent boarding is in beta. To opt in, reach out to your Payabli contact.

A business is the legal entity behind a paypoint: the company you’re boarding, with its legal details, people, and payment methods. Use the businesses API to create and manage those records as you board a paypoint. For how businesses fit into the wider model, see the boarding overview.

Considerations

  • The boarding API uses OAuth2. Send a Bearer token on every request. See OAuth2 authentication.
  • A business belongs to an organization. Set parentReference to the organization’s entrypoint to place the business there, or omit it to use the organization your credential belongs to.
  • Reads mask sensitive fields such as taxReference (only the last four digits are shown). Use the unmasked endpoint when you need the raw values.

Create a business

Send a POST request to /v2/businesses with the business’s legal details. New businesses start in Draft. See the API reference for this endpoint for full documentation.

POST
/api/v2/businesses
curl -X POST https://api-sandbox.payabli.com/api/v2/businesses \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"legalName": "Rose Gardens LLC",
"externalId": "rg-001",
"legalStructure": "llc",
"website": "https://example.com",
"merchantCatCode": "5814",
"phone": [
"3055551212"
],
"emails": [
"ops@example.com"
],
"paymentMethods": [
{
"type": "bank_account",
"name": "Operating account",
"financialInstitution": "Bank of Example",
"ownerType": "business",
"accountType": "checking",
"accountNumber": "123456789",
"routingNumber": "021000021",
"usage": [
"deposits",
"billing"
],
"isDefault": true
},
{
"type": "bank_account",
"name": "Payout account",
"financialInstitution": "Bank of Example",
"ownerType": "business",
"accountType": "checking",
"accountNumber": "987654321",
"routingNumber": "021000021",
"usage": [
"payOutFunding"
],
"isDefault": false
}
],
"taxReference": "477498993",
"parentReference": "8cfec329267"
}'

The response returns the new business’s reference and initial status:

Response
{
"success": true,
"message": "Business created successfully",
"traceId": "0HNNKQIN7BJO1:00000015",
"data": {
"businessUuid": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"businessStatus": "Draft",
"createdAt": "2026-08-10T19:15:47.6946557Z",
"_links": {
"self": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55"
}
}
}

The businessUuid in the response is the reference you use to read and manage the business.

Payabli normalizes legalStructure to a canonical value. If you send llc, reads return LimitedLiabilityCompany.

Get a business

Send a GET request to /v2/businesses/{businessReference}. Sensitive fields such as taxReference are masked. See the API reference for this endpoint for full documentation.

GET
/api/v2/businesses/:businessReference
curl https://api-sandbox.payabli.com/api/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55 \
-H "Authorization: Bearer <token>"

The response returns the business’s detail with sensitive fields masked:

Response
{
"success": true,
"message": "Business retrieved successfully",
"traceId": "0HNNKQIN7BJO3:00000008",
"data": {
"businessUuid": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"legalName": "Rose Gardens LLC",
"legalStructure": "LimitedLiabilityCompany",
"incorporationState": "GA",
"taxIdCountry": "US",
"taxExemptClassification": null,
"license": "LIC-48213",
"licenseState": "GA",
"taxReference": "****8993",
"businessStatus": "Draft",
"parentReference": "8cfec329267",
"createdAt": "2026-08-10T19:15:47.694655",
"lastUpdated": "2026-08-10T19:15:47.694655",
"_links": {
"self": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55"
},
"externalId": "rg-001",
"website": "https://example.com",
"merchantCatCode": "5814",
"phone": [
"3055551212"
],
"emails": [
"ops@example.com"
],
"addressDetails": [],
"paymentMethods": [
{
"type": "bank_account",
"name": "Operating account",
"financialInstitution": "Bank of Example",
"ownerType": "business",
"accountType": "checking",
"accountNumber": "****6789",
"routingNumber": "****0021",
"usage": [
"deposits",
"billing"
],
"isDefault": true
},
{
"type": "bank_account",
"name": "Payout account",
"financialInstitution": "Bank of Example",
"ownerType": "business",
"accountType": "checking",
"accountNumber": "****4321",
"routingNumber": "****0021",
"usage": [
"payOutFunding"
],
"isDefault": false
}
],
"isTaxExempt": false,
"certificationDetails": []
}
}

Get unmasked business detail

To read the raw values of masked fields, send a GET request to /v2/businesses/{businessReference}/unmasked. See the API reference for this endpoint for full documentation.

GET
/api/v2/businesses/:businessReference/unmasked
curl https://api-sandbox.payabli.com/api/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55/unmasked \
-H "Authorization: Bearer <token>"

The response returns the same detail with sensitive fields unmasked:

Response
{
"success": true,
"message": "Business retrieved successfully",
"traceId": "0HNNKQIN7BJO3:00000009",
"data": {
"businessUuid": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"legalName": "Rose Gardens LLC",
"legalStructure": "LimitedLiabilityCompany",
"incorporationState": "GA",
"taxIdCountry": "US",
"taxExemptClassification": null,
"license": "LIC-48213",
"licenseState": "GA",
"taxReference": "477498993",
"businessStatus": "Draft",
"parentReference": "8cfec329267",
"createdAt": "2026-08-10T19:15:47.694655",
"lastUpdated": "2026-08-10T19:15:47.694655",
"_links": {
"self": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55"
},
"externalId": "rg-001",
"website": "https://example.com",
"merchantCatCode": "5814",
"phone": [
"3055551212"
],
"emails": [
"ops@example.com"
],
"addressDetails": [],
"paymentMethods": [
{
"type": "bank_account",
"name": "Operating account",
"financialInstitution": "Bank of Example",
"ownerType": "business",
"accountType": "checking",
"accountNumber": "123456789",
"routingNumber": "021000021",
"usage": [
"deposits",
"billing"
],
"isDefault": true
},
{
"type": "bank_account",
"name": "Payout account",
"financialInstitution": "Bank of Example",
"ownerType": "business",
"accountType": "checking",
"accountNumber": "987654321",
"routingNumber": "021000021",
"usage": [
"payOutFunding"
],
"isDefault": false
}
],
"isTaxExempt": false,
"certificationDetails": []
}
}

List businesses

Send a GET request to /v2/businesses. Filter and page the results with the query parameters: status, name, merchantCatCode, legalStructure, limit, page, sortBy, and sortOrder. See the API reference for this endpoint for full documentation.

GET
/api/v2/businesses
curl -G https://api-sandbox.payabli.com/api/v2/businesses \
-H "Authorization: Bearer <token>" \
-d limit=1 \
-d page=1

The response returns a page of businesses with pagination metadata:

Response
{
"success": true,
"message": "Businesses retrieved successfully",
"traceId": "0HNNKQIN7BJO2:00000024",
"data": {
"data": [
{
"businessUuid": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"legalName": "Rose Gardens LLC",
"businessStatus": "Draft",
"parentReference": "8cfec329267",
"createdAt": "2026-08-10T19:15:47.694655",
"lastUpdated": "2026-08-10T19:15:47.694655",
"_links": {
"self": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55"
}
}
],
"pagination": {
"page": 1,
"totalPages": 1,
"totalRecords": 1,
"pageSize": 1,
"hasNext": false,
"hasPrevious": false
}
}
}

Update a business

Send a PATCH request to /v2/businesses/{businessReference} with only the fields you want to change. See the API reference for this endpoint for full documentation.

PATCH
/api/v2/businesses/:businessReference
curl -X PATCH https://api-sandbox.payabli.com/api/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55 \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"website": "https://example.org"
}'

The response confirms the update and returns the new timestamp:

Response
{
"success": true,
"message": "Business updated successfully",
"traceId": "0HNNKQIN7BJO1:00000016",
"data": {
"businessUuid": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"lastUpdated": "2026-08-10T19:15:47.9553337Z",
"_links": {
"self": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55"
}
}
}

Deactivate a business

Send a DELETE request to /v2/businesses/{businessReference}. This is a soft delete: the business moves to Deactivated and the record is kept. See the API reference for this endpoint for full documentation.

DELETE
/api/v2/businesses/:businessReference
curl -X DELETE https://api-sandbox.payabli.com/api/v2/businesses/019fed33-615d-77b6-afaa-46e7ac9bf36e \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"reason": "Duplicate record"
}'

The response confirms the deactivation:

Response
{
"success": true,
"message": "Business deactivated successfully",
"traceId": "0HNNKQIN7BJQM:0000003D",
"data": {
"businessUuid": "019fed33-615d-77b6-afaa-46e7ac9bf36e",
"businessStatus": "Deactivated",
"deactivatedAt": "2026-08-10T19:43:15.3804295Z",
"reason": "Duplicate record",
"_links": {
"self": "/v2/businesses/019fed33-615d-77b6-afaa-46e7ac9bf36e"
}
}
}

Manage the people on a business

A business’s people (owners, directors, signers, contacts, authorized users, and employees) connect to it through links. A person can have links to more than one business, and each link carries its own role, ownership, job title, and contact details. This section covers the link. To create a person or manage their own details, see Manage people with the API.

The link’s contact fields (primaryEmail, secondaryEmail, primaryPhoneNumber, secondaryPhoneNumber) and addresses belong to the relationship, not the person. Use them for how to reach the person about this business. They don’t change the person’s own contact details.

The link also sets whether the person signs the business’s boarding applications, with isSigner. Only an owner can be the signer. A business has one signer, and every application needs one before you validate or submit it. Setting isSigner to true on one person removes it from everyone else on the business.

Link people who don’t own part of the business as Employee. Application validation holds every other role to the owner requirements.

Send a POST request to /v2/businesses/{businessReference}/people with the personReference of a person you’ve already created and their role in personType. For an owner, ownershipPercentage is required, from 0 to 100. If the business’s combined ownership would go over 100%, the request fails with 400. See the API reference for this endpoint for full documentation.

POST
/api/v2/businesses/:businessReference/people
curl -X POST https://api-sandbox.payabli.com/api/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55/people \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"personReference": "01a0014d-ce1a-7110-9bac-c4c59647a88d",
"personType": "Owner",
"ownershipPercentage": 100,
"isPrimaryController": true,
"isSigner": true,
"title": "CEO",
"primaryEmail": "contact@example.com",
"secondaryEmail": "contact.alt@example.net",
"primaryPhoneNumber": "3055551212",
"secondaryPhoneNumber": "3055559876",
"billingAddress": {
"addressLine1": "123 Main Street",
"cityLocality": "Miami",
"stateProvince": "FL",
"postalCode": "33101",
"country": "US",
"type": "billing"
},
"mailingAddress": {
"addressLine1": "456 Oak Avenue",
"cityLocality": "Miami",
"stateProvince": "FL",
"postalCode": "33102",
"country": "US",
"type": "mailing"
}
}'

The response returns the new link:

Response
{
"success": true,
"message": "Person linked to business successfully",
"traceId": "0HNOIMDG0IS4U:00000147",
"data": {
"businessReference": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"personReference": "01a0014d-ce1a-7110-9bac-c4c59647a88d",
"personType": "owner",
"beneficialOwner": true,
"isPrimaryController": true,
"isSigner": true,
"title": "CEO",
"primaryEmail": "contact@example.com",
"secondaryEmail": "contact.alt@example.net",
"primaryPhoneNumber": "3055551212",
"secondaryPhoneNumber": "3055559876",
"createdAt": "2026-08-14T17:24:31.3877241Z",
"updatedAt": "2026-08-14T17:24:31.3877241Z",
"_links": {
"self": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55/people/01a0014d-ce1a-7110-9bac-c4c59647a88d",
"business": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"person": "/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d"
},
"ownershipPercentage": 100,
"billingAddressUuid": "019fed1a-6e41-7194-84c8-98ae0219799a",
"mailingAddressUuid": "019fed1a-6e43-7768-b3b4-607c374f7730"
}
}

Reads return personType in lowercase, so Owner comes back as owner. Payabli sets beneficialOwner for you. The link returns its addresses as billingAddressUuid and mailingAddressUuid references rather than the full addresses.

To create a person and link them in one request, include a businessRelationship object when you create the person.

List a business’s people

Send a GET request to /v2/businesses/{businessReference}/people. See the API reference for this endpoint for full documentation.

GET
/api/v2/businesses/:businessReference/people
curl https://api-sandbox.payabli.com/api/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55/people \
-H "Authorization: Bearer <token>"

The response returns every link on the business:

Response
{
"success": true,
"message": "Business people retrieved successfully",
"traceId": "0HNOIME81PD14:00000004",
"data": [
{
"businessReference": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"personReference": "01a0014d-ce1a-7110-9bac-c4c59647a88d",
"personType": "owner",
"beneficialOwner": true,
"isPrimaryController": true,
"isSigner": true,
"title": "CEO",
"primaryEmail": "contact@example.com",
"secondaryEmail": "contact.alt@example.net",
"primaryPhoneNumber": "3055551212",
"secondaryPhoneNumber": "3055559876",
"createdAt": "2026-08-14T17:24:31.3877241Z",
"updatedAt": "2026-08-14T17:24:31.3877241Z",
"_links": {
"self": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55/people/01a0014d-ce1a-7110-9bac-c4c59647a88d",
"business": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"person": "/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d"
},
"ownershipPercentage": 100
}
]
}

Send a GET request to /v2/businesses/{businessReference}/people/{personReference}. See the API reference for this endpoint for full documentation.

GET
/api/v2/businesses/:businessReference/people/:personReference
curl https://api-sandbox.payabli.com/api/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55/people/01a0014d-ce1a-7110-9bac-c4c59647a88d \
-H "Authorization: Bearer <token>"

The response returns the link:

Response
{
"success": true,
"message": "Business person retrieved successfully",
"traceId": "0HNOIME81PCS8:00000410",
"data": {
"businessReference": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"personReference": "01a0014d-ce1a-7110-9bac-c4c59647a88d",
"personType": "owner",
"beneficialOwner": true,
"isPrimaryController": true,
"isSigner": true,
"title": "CEO",
"primaryEmail": "contact@example.com",
"secondaryEmail": "contact.alt@example.net",
"primaryPhoneNumber": "3055551212",
"secondaryPhoneNumber": "3055559876",
"createdAt": "2026-08-14T17:24:31.3877241Z",
"updatedAt": "2026-08-14T17:24:31.3877241Z",
"_links": {
"self": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55/people/01a0014d-ce1a-7110-9bac-c4c59647a88d",
"business": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"person": "/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d"
},
"ownershipPercentage": 100
}
}

Send a PATCH request to /v2/businesses/{businessReference}/people/{personReference} with only the fields you want to change. Omitted fields keep their values. See the API reference for this endpoint for full documentation.

PATCH
/api/v2/businesses/:businessReference/people/:personReference
curl -X PATCH https://api-sandbox.payabli.com/api/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55/people/01a0014d-ce1a-7110-9bac-c4c59647a88d \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"isPrimaryController": true,
"primaryEmail": "updated.contact@example.com"
}'

The response returns the updated link:

Response
{
"success": true,
"message": "Business person updated successfully",
"traceId": "0HNOIME81PCS8:00000582",
"data": {
"businessReference": "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"personReference": "01a0014d-ce1a-7110-9bac-c4c59647a88d",
"personType": "owner",
"beneficialOwner": true,
"isPrimaryController": true,
"isSigner": true,
"title": "CEO",
"primaryEmail": "updated.contact@example.com",
"secondaryEmail": "contact.alt@example.net",
"primaryPhoneNumber": "3055551212",
"secondaryPhoneNumber": "3055559876",
"createdAt": "2026-08-14T17:24:31.3877241Z",
"updatedAt": "2026-08-14T17:26:08.9110000Z",
"_links": {
"self": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55/people/01a0014d-ce1a-7110-9bac-c4c59647a88d",
"business": "/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55",
"person": "/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d"
},
"ownershipPercentage": 100
}
}

Send a DELETE request to /v2/businesses/{businessReference}/people/{personReference}. This removes the link but keeps the person record. A successful unlink returns 204 with no body. See the API reference for this endpoint for full documentation.

DELETE
/api/v2/businesses/:businessReference/people/:personReference
curl -X DELETE https://api-sandbox.payabli.com/api/v2/businesses/019fed1a-3d6e-75d3-a81e-cba3874b0a55/people/01a0014d-ce1a-7110-9bac-c4c59647a88d \
-H "Authorization: Bearer <token>"

See these related resources to help you get the most out of Payabli.