Skip to content

Vendors ​

Part of the Accounts API. Base URL https://your-domain.com/admin/api/v1 — replace the host with your own installation and the token placeholder with a real Bearer token (see Authentication).

List vendors ​

GET /admin/api/v1/accounts/vendors

Retrieve a paginated list of vendors with filtering and sorting

🔒 Requires a valid Bearer token.

Query parameters

ParameterTypeRequiredDescriptionExample
includestringNoComma-separated list of relationships to include. Available options: parent, country, state, title, company, industry, user, creator, addresses, contacts, bankAccounts, tags, propertyAccountPayable, propertyAccountReceivable, propertyAccountPosition, propertyPaymentTerm, propertySupplierPaymentTerm, propertyOutboundPaymentMethodLine, propertyInboundPaymentMethodLinepropertyAccountPayable,propertySupplierPaymentTerm
filter[id]stringNoComma-separated list of IDs to filter by
filter[name]stringNoFilter by vendor name (partial match)
filter[email]stringNoFilter by email (partial match)
filter[phone]stringNoFilter by phone (partial match)
filter[parent_id]stringNoComma-separated list of parent IDs to filter by
filter[company_id]stringNoComma-separated list of company IDs to filter by
filter[country_id]stringNoComma-separated list of country IDs to filter by
filter[trashed]stringNoFilter by trashed status. Available options: with, without, only
sortstringYesSort fieldname
pageintegerYesPage number1
bash
curl -X GET "https://your-domain.com/admin/api/v1/accounts/vendors?include=propertyAccountPayable%2CpropertySupplierPaymentTerm&sort=name&page=1" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/accounts/vendors?include=propertyAccountPayable%2CpropertySupplierPaymentTerm&sort=name&page=1", {
  method: "GET",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://your-domain.com/admin/api/v1/accounts/vendors?include=propertyAccountPayable%2CpropertySupplierPaymentTerm&sort=name&page=1', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/accounts/vendors?include=propertyAccountPayable%2CpropertySupplierPaymentTerm&sort=name&page=1"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

response = requests.get(url, headers=headers)

data = response.json()
print(data)

Example response 200

json
{
  "data": [
    {
      "id": 1,
      "account_type": "individual",
      "sub_type": "company",
      "name": "My Company",
      "email": "info@mycompany.local",
      "phone": "1234567890",
      "mobile": "1234567890",
      "avatar": null,
      "avatar_url": null,
      "job_title": null,
      "website": "https://mycompany.local",
      "tax_id": "MYC123456",
      "company_registry": "MYCREG001",
      "reference": null,
      "is_active": true,
      "color": "#AAAAAA",
      "street1": null,
      "street2": null,
      "city": null,
      "zip": null,
      "country_id": 104,
      "state_id": null,
      "parent_id": null,
      "title_id": null,
      "company_id": 1,
      "industry_id": null,
      "user_id": null,
      "creator_id": 1,
      "created_at": "2026-10-09T07:12:47.000000Z",
      "updated_at": "2026-10-09T08:18:15.000000Z",
      "deleted_at": null,
      "country": {
        "id": 104,
        "name": "India",
        "code": "IN",
        "phone_code": "91",
        "state_required": true,
        "zip_required": true,
        "currency_id": 20,
        "created_at": "2026-10-09T07:12:47.000000Z",
        "updated_at": "2026-10-09T07:12:47.000000Z"
      },
      "state": null,
      "message_bounce": null,
      "supplier_rank": 0,
      "customer_rank": 0,
      "invoice_warning": null,
      "autopost_bills": null,
      "credit_limit": null,
      "ignore_abnormal_invoice_date": null,
      "ignore_abnormal_invoice_amount": null,
      "invoice_sending_method": null,
      "invoice_edi_format_store": null,
      "trust": null,
      "invoice_warn_msg": null,
      "debit_limit": null,
      "peppol_endpoint": null,
      "peppol_eas": null,
      "sale_warn": null,
      "comment": null,
      "sale_warn_msg": null,
      "property_account_payable_id": null,
      "property_account_receivable_id": null,
      "property_account_position_id": null,
      "property_payment_term_id": null,
      "property_supplier_payment_term_id": null,
      "property_outbound_payment_method_line_id": null,
      "property_inbound_payment_method_line_id": null
    },
    {
      "id": 1,
      "account_type": "individual",
      "sub_type": "company",
      "name": "My Company",
      "email": "info@mycompany.local",
      "phone": "1234567890",
      "mobile": "1234567890",
      "avatar": null,
      "avatar_url": null,
      "job_title": null,
      "website": "https://mycompany.local",
      "tax_id": "MYC123456",
      "company_registry": "MYCREG001",
      "reference": null,
      "is_active": true,
      "color": "#AAAAAA",
      "street1": null,
      "street2": null,
      "city": null,
      "zip": null,
      "country_id": 104,
      "state_id": null,
      "parent_id": null,
      "title_id": null,
      "company_id": 1,
      "industry_id": null,
      "user_id": null,
      "creator_id": 1,
      "created_at": "2026-10-09T07:12:47.000000Z",
      "updated_at": "2026-10-09T08:18:15.000000Z",
      "deleted_at": null,
      "country": {
        "id": 104,
        "name": "India",
        "code": "IN",
        "phone_code": "91",
        "state_required": true,
        "zip_required": true,
        "currency_id": 20,
        "created_at": "2026-10-09T07:12:47.000000Z",
        "updated_at": "2026-10-09T07:12:47.000000Z"
      },
      "state": null,
      "message_bounce": null,
      "supplier_rank": 0,
      "customer_rank": 0,
      "invoice_warning": null,
      "autopost_bills": null,
      "credit_limit": null,
      "ignore_abnormal_invoice_date": null,
      "ignore_abnormal_invoice_amount": null,
      "invoice_sending_method": null,
      "invoice_edi_format_store": null,
      "trust": null,
      "invoice_warn_msg": null,
      "debit_limit": null,
      "peppol_endpoint": null,
      "peppol_eas": null,
      "sale_warn": null,
      "comment": null,
      "sale_warn_msg": null,
      "property_account_payable_id": null,
      "property_account_receivable_id": null,
      "property_account_position_id": null,
      "property_payment_term_id": null,
      "property_supplier_payment_term_id": null,
      "property_outbound_payment_method_line_id": null,
      "property_inbound_payment_method_line_id": null
    }
  ],
  "links": {
    "first": "/?page=1",
    "last": "/?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "links": [
      {
        "url": null,
        "label": "&laquo; Previous",
        "page": null,
        "active": false
      },
      {
        "url": "/?page=1",
        "label": "1",
        "page": 1,
        "active": true
      },
      {
        "url": null,
        "label": "Next &raquo;",
        "page": null,
        "active": false
      }
    ],
    "path": "/",
    "per_page": 10,
    "to": 2,
    "total": 2
  }
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Create vendor ​

POST /admin/api/v1/accounts/vendors

Create a new vendor

🔒 Requires a valid Bearer token.

Body parameters

ParameterTypeRequiredDescription
account_typestringYesAccount type.
namestringYesPartner name (max 255 characters). Must not be greater than 255 characters.
emailstringNoEmail address (max 255 characters). Must be a valid email address. Must not be greater than 255 characters.
phonestringNoPhone number (max 20 characters). Must not be greater than 20 characters.
mobilestringNoMobile number (max 20 characters). Must not be greater than 20 characters.
avatarstringNoAvatar file path (max 255 characters). Must not be greater than 255 characters.
job_titlestringNoJob title (max 255 characters). Must not be greater than 255 characters.
websitestringNoWebsite URL (max 255 characters). Must be a valid URL. Must not be greater than 255 characters.
tax_idstringNoTax identification number (max 255 characters). Must not be greater than 255 characters.
company_registrystringNoCompany registry number (max 255 characters). Must not be greater than 255 characters.
referencestringNoReference code (max 255 characters). Must not be greater than 255 characters.
colorstringNoColor in hex format (max 7 characters). Must not be greater than 7 characters.
street1stringNoStreet address line 1 (max 255 characters). Must not be greater than 255 characters.
street2stringNoStreet address line 2 (max 255 characters). Must not be greater than 255 characters.
citystringNoCity (max 255 characters). Must not be greater than 255 characters.
zipstringNoPostal/ZIP code (max 20 characters). Must not be greater than 20 characters.
state_idintegerNoState ID. Must match an existing stored value.
country_idintegerNoCountry ID. Must match an existing stored value.
parent_idintegerNoParent partner ID (for addresses and contacts). Must match an existing stored value.
title_idintegerNoTitle ID. Must match an existing stored value.
company_idintegerNoCompany ID. Must match an existing stored value.
industry_idintegerNoIndustry ID. Must match an existing stored value.
user_idintegerNoAssociated user ID/Responsible Sale user. Must match an existing stored value.
autopost_billsbooleanNoAuto-post bills flag.
ignore_abnormal_invoice_datebooleanNoIgnore abnormal invoice date flag.
ignore_abnormal_invoice_amountnumberNoIgnore abnormal invoice amount threshold.
invoice_sending_methodstringNoInvoice sending method. Must not be greater than 255 characters.
invoice_edi_format_storestringNoInvoice EDI format store. Must not be greater than 255 characters.
peppol_endpointstringNoPEPPOL endpoint. Must not be greater than 255 characters.
peppol_easstringNoPEPPOL EAS. Must not be greater than 255 characters.
commentstringNoAdditional comments.
property_account_payable_idintegerNoProperty account payable ID. Must match an existing stored value.
property_account_receivable_idintegerNoProperty account receivable ID. Must match an existing stored value.
property_account_position_idintegerNoProperty account position (fiscal position) ID. Must match an existing stored value.
property_payment_term_idintegerNoProperty payment term ID for customers. Must match an existing stored value.
property_supplier_payment_term_idintegerNoProperty payment term ID for suppliers. Must match an existing stored value.
property_outbound_payment_method_line_idintegerNoProperty outbound payment method line ID. Must match an existing stored value.
property_inbound_payment_method_line_idintegerNoProperty inbound payment method line ID. Must match an existing stored value.
bash
curl -X POST "https://your-domain.com/admin/api/v1/accounts/vendors" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "account_type": "individual",
  "name": "Acme Corporation",
  "email": "contact@acme.com",
  "phone": "+1234567890",
  "mobile": "+1234567890",
  "avatar": "avatars/partner.jpg",
  "job_title": "CEO",
  "website": "https://acme.com",
  "tax_id": "TAX-123456",
  "company_registry": "REG-123456",
  "reference": "PART-001",
  "color": "#FF5733",
  "street1": "123 Main Street",
  "street2": "Suite 100",
  "city": "New York",
  "zip": "10001",
  "state_id": 9,
  "country_id": 233,
  "title_id": 1,
  "company_id": 1,
  "industry_id": 1,
  "user_id": 1,
  "autopost_bills": false,
  "ignore_abnormal_invoice_date": false,
  "ignore_abnormal_invoice_amount": 1000,
  "invoice_sending_method": "email",
  "property_account_payable_id": 1,
  "property_account_receivable_id": 2,
  "property_account_position_id": 1,
  "property_payment_term_id": 1,
  "property_supplier_payment_term_id": 2,
  "property_outbound_payment_method_line_id": 1,
  "property_inbound_payment_method_line_id": 2
}'
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/accounts/vendors", {
  method: "POST",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "account_type": "individual",
  "name": "Acme Corporation",
  "email": "contact@acme.com",
  "phone": "+1234567890",
  "mobile": "+1234567890",
  "avatar": "avatars/partner.jpg",
  "job_title": "CEO",
  "website": "https://acme.com",
  "tax_id": "TAX-123456",
  "company_registry": "REG-123456",
  "reference": "PART-001",
  "color": "#FF5733",
  "street1": "123 Main Street",
  "street2": "Suite 100",
  "city": "New York",
  "zip": "10001",
  "state_id": 9,
  "country_id": 233,
  "title_id": 1,
  "company_id": 1,
  "industry_id": 1,
  "user_id": 1,
  "autopost_bills": false,
  "ignore_abnormal_invoice_date": false,
  "ignore_abnormal_invoice_amount": 1000,
  "invoice_sending_method": "email",
  "property_account_payable_id": 1,
  "property_account_receivable_id": 2,
  "property_account_position_id": 1,
  "property_payment_term_id": 1,
  "property_supplier_payment_term_id": 2,
  "property_outbound_payment_method_line_id": 1,
  "property_inbound_payment_method_line_id": 2
}),
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://your-domain.com/admin/api/v1/accounts/vendors', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
    'json' => [
    'account_type' => 'individual',
    'name' => 'Acme Corporation',
    'email' => 'contact@acme.com',
    'phone' => '+1234567890',
    'mobile' => '+1234567890',
    'avatar' => 'avatars/partner.jpg',
    'job_title' => 'CEO',
    'website' => 'https://acme.com',
    'tax_id' => 'TAX-123456',
    'company_registry' => 'REG-123456',
    'reference' => 'PART-001',
    'color' => '#FF5733',
    'street1' => '123 Main Street',
    'street2' => 'Suite 100',
    'city' => 'New York',
    'zip' => '10001',
    'state_id' => 9,
    'country_id' => 233,
    'title_id' => 1,
    'company_id' => 1,
    'industry_id' => 1,
    'user_id' => 1,
    'autopost_bills' => false,
    'ignore_abnormal_invoice_date' => false,
    'ignore_abnormal_invoice_amount' => 1000,
    'invoice_sending_method' => 'email',
    'property_account_payable_id' => 1,
    'property_account_receivable_id' => 2,
    'property_account_position_id' => 1,
    'property_payment_term_id' => 1,
    'property_supplier_payment_term_id' => 2,
    'property_outbound_payment_method_line_id' => 1,
    'property_inbound_payment_method_line_id' => 2,
  ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/accounts/vendors"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

payload = {
    "account_type": "individual",
    "name": "Acme Corporation",
    "email": "contact@acme.com",
    "phone": "+1234567890",
    "mobile": "+1234567890",
    "avatar": "avatars/partner.jpg",
    "job_title": "CEO",
    "website": "https://acme.com",
    "tax_id": "TAX-123456",
    "company_registry": "REG-123456",
    "reference": "PART-001",
    "color": "#FF5733",
    "street1": "123 Main Street",
    "street2": "Suite 100",
    "city": "New York",
    "zip": "10001",
    "state_id": 9,
    "country_id": 233,
    "title_id": 1,
    "company_id": 1,
    "industry_id": 1,
    "user_id": 1,
    "autopost_bills": False,
    "ignore_abnormal_invoice_date": False,
    "ignore_abnormal_invoice_amount": 1000,
    "invoice_sending_method": "email",
    "property_account_payable_id": 1,
    "property_account_receivable_id": 2,
    "property_account_position_id": 1,
    "property_payment_term_id": 1,
    "property_supplier_payment_term_id": 2,
    "property_outbound_payment_method_line_id": 1,
    "property_inbound_payment_method_line_id": 2,
}

response = requests.post(url, headers=headers, json=payload)

data = response.json()
print(data)

Example response 201

json
{
  "data": {
    "id": 1,
    "account_type": "individual",
    "sub_type": "company",
    "name": "My Company",
    "email": "info@mycompany.local",
    "phone": "1234567890",
    "mobile": "1234567890",
    "avatar": null,
    "avatar_url": null,
    "job_title": null,
    "website": "https://mycompany.local",
    "tax_id": "MYC123456",
    "company_registry": "MYCREG001",
    "reference": null,
    "is_active": true,
    "color": "#AAAAAA",
    "street1": null,
    "street2": null,
    "city": null,
    "zip": null,
    "country_id": 104,
    "state_id": null,
    "parent_id": null,
    "title_id": null,
    "company_id": 1,
    "industry_id": null,
    "user_id": null,
    "creator_id": 1,
    "created_at": "2026-10-09T07:12:47.000000Z",
    "updated_at": "2026-10-09T08:18:15.000000Z",
    "deleted_at": null,
    "country": {
      "id": 104,
      "name": "India",
      "code": "IN",
      "phone_code": "91",
      "state_required": true,
      "zip_required": true,
      "currency_id": 20,
      "created_at": "2026-10-09T07:12:47.000000Z",
      "updated_at": "2026-10-09T07:12:47.000000Z"
    },
    "state": null,
    "message_bounce": null,
    "supplier_rank": 0,
    "customer_rank": 0,
    "invoice_warning": null,
    "autopost_bills": null,
    "credit_limit": null,
    "ignore_abnormal_invoice_date": null,
    "ignore_abnormal_invoice_amount": null,
    "invoice_sending_method": null,
    "invoice_edi_format_store": null,
    "trust": null,
    "invoice_warn_msg": null,
    "debit_limit": null,
    "peppol_endpoint": null,
    "peppol_eas": null,
    "sale_warn": null,
    "comment": null,
    "sale_warn_msg": null,
    "property_account_payable_id": null,
    "property_account_receivable_id": null,
    "property_account_position_id": null,
    "property_payment_term_id": null,
    "property_supplier_payment_term_id": null,
    "property_outbound_payment_method_line_id": null,
    "property_inbound_payment_method_line_id": null
  },
  "message": "Vendor created successfully."
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Show vendor ​

GET /admin/api/v1/accounts/vendors/{id}

Retrieve a specific vendor by its ID

🔒 Requires a valid Bearer token.

Path parameters

ParameterTypeRequiredDescription
idintegerYesThe vendor ID

Query parameters

ParameterTypeRequiredDescriptionExample
includestringNoComma-separated list of relationships to include. Available options: parent, country, state, title, company, industry, user, creator, addresses, contacts, bankAccounts, tags, propertyAccountPayable, propertyAccountReceivable, propertyAccountPosition, propertyPaymentTerm, propertySupplierPaymentTerm, propertyOutboundPaymentMethodLine, propertyInboundPaymentMethodLinepropertyAccountPayable,propertySupplierPaymentTerm
bash
curl -X GET "https://your-domain.com/admin/api/v1/accounts/vendors/{id}?include=propertyAccountPayable%2CpropertySupplierPaymentTerm" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/accounts/vendors/{id}?include=propertyAccountPayable%2CpropertySupplierPaymentTerm", {
  method: "GET",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://your-domain.com/admin/api/v1/accounts/vendors/{id}?include=propertyAccountPayable%2CpropertySupplierPaymentTerm', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/accounts/vendors/{id}?include=propertyAccountPayable%2CpropertySupplierPaymentTerm"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

response = requests.get(url, headers=headers)

data = response.json()
print(data)

Example response 200

json
{
  "data": {
    "id": 1,
    "account_type": "individual",
    "sub_type": "company",
    "name": "My Company",
    "email": "info@mycompany.local",
    "phone": "1234567890",
    "mobile": "1234567890",
    "avatar": null,
    "avatar_url": null,
    "job_title": null,
    "website": "https://mycompany.local",
    "tax_id": "MYC123456",
    "company_registry": "MYCREG001",
    "reference": null,
    "is_active": true,
    "color": "#AAAAAA",
    "street1": null,
    "street2": null,
    "city": null,
    "zip": null,
    "country_id": 104,
    "state_id": null,
    "parent_id": null,
    "title_id": null,
    "company_id": 1,
    "industry_id": null,
    "user_id": null,
    "creator_id": 1,
    "created_at": "2026-10-09T07:12:47.000000Z",
    "updated_at": "2026-10-09T08:18:15.000000Z",
    "deleted_at": null,
    "country": {
      "id": 104,
      "name": "India",
      "code": "IN",
      "phone_code": "91",
      "state_required": true,
      "zip_required": true,
      "currency_id": 20,
      "created_at": "2026-10-09T07:12:47.000000Z",
      "updated_at": "2026-10-09T07:12:47.000000Z"
    },
    "state": null,
    "message_bounce": null,
    "supplier_rank": 0,
    "customer_rank": 0,
    "invoice_warning": null,
    "autopost_bills": null,
    "credit_limit": null,
    "ignore_abnormal_invoice_date": null,
    "ignore_abnormal_invoice_amount": null,
    "invoice_sending_method": null,
    "invoice_edi_format_store": null,
    "trust": null,
    "invoice_warn_msg": null,
    "debit_limit": null,
    "peppol_endpoint": null,
    "peppol_eas": null,
    "sale_warn": null,
    "comment": null,
    "sale_warn_msg": null,
    "property_account_payable_id": null,
    "property_account_receivable_id": null,
    "property_account_position_id": null,
    "property_payment_term_id": null,
    "property_supplier_payment_term_id": null,
    "property_outbound_payment_method_line_id": null,
    "property_inbound_payment_method_line_id": null
  }
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Update vendor ​

PUT /admin/api/v1/accounts/vendors/{id}

Update an existing vendor

🔒 Requires a valid Bearer token.

Path parameters

ParameterTypeRequiredDescription
idintegerYesThe vendor ID

Body parameters

ParameterTypeRequiredDescription
account_typestringNoAccount type.
namestringNoPartner name (max 255 characters). Must not be greater than 255 characters.
emailstringNoEmail address (max 255 characters). Must be a valid email address. Must not be greater than 255 characters.
phonestringNoPhone number (max 20 characters). Must not be greater than 20 characters.
mobilestringNoMobile number (max 20 characters). Must not be greater than 20 characters.
avatarstringNoAvatar file path (max 255 characters). Must not be greater than 255 characters.
job_titlestringNoJob title (max 255 characters). Must not be greater than 255 characters.
websitestringNoWebsite URL (max 255 characters). Must be a valid URL. Must not be greater than 255 characters.
tax_idstringNoTax identification number (max 255 characters). Must not be greater than 255 characters.
company_registrystringNoCompany registry number (max 255 characters). Must not be greater than 255 characters.
referencestringNoReference code (max 255 characters). Must not be greater than 255 characters.
colorstringNoColor in hex format (max 7 characters). Must not be greater than 7 characters.
street1stringNoStreet address line 1 (max 255 characters). Must not be greater than 255 characters.
street2stringNoStreet address line 2 (max 255 characters). Must not be greater than 255 characters.
citystringNoCity (max 255 characters). Must not be greater than 255 characters.
zipstringNoPostal/ZIP code (max 20 characters). Must not be greater than 20 characters.
state_idintegerNoState ID. Must match an existing stored value.
country_idintegerNoCountry ID. Must match an existing stored value.
parent_idintegerNoParent partner ID (for addresses and contacts). Must match an existing stored value.
title_idintegerNoTitle ID. Must match an existing stored value.
company_idintegerNoCompany ID. Must match an existing stored value.
industry_idintegerNoIndustry ID. Must match an existing stored value.
user_idintegerNoAssociated user ID/Responsible Sale user. Must match an existing stored value.
autopost_billsbooleanNoAuto-post bills flag.
ignore_abnormal_invoice_datebooleanNoIgnore abnormal invoice date flag.
ignore_abnormal_invoice_amountnumberNoIgnore abnormal invoice amount threshold.
invoice_sending_methodstringNoInvoice sending method. Must not be greater than 255 characters.
invoice_edi_format_storestringNoInvoice EDI format store. Must not be greater than 255 characters.
peppol_endpointstringNoPEPPOL endpoint. Must not be greater than 255 characters.
peppol_easstringNoPEPPOL EAS. Must not be greater than 255 characters.
commentstringNoAdditional comments.
property_account_payable_idintegerNoProperty account payable ID. Must match an existing stored value.
property_account_receivable_idintegerNoProperty account receivable ID. Must match an existing stored value.
property_account_position_idintegerNoProperty account position (fiscal position) ID. Must match an existing stored value.
property_payment_term_idintegerNoProperty payment term ID for customers. Must match an existing stored value.
property_supplier_payment_term_idintegerNoProperty payment term ID for suppliers. Must match an existing stored value.
property_outbound_payment_method_line_idintegerNoProperty outbound payment method line ID. Must match an existing stored value.
property_inbound_payment_method_line_idintegerNoProperty inbound payment method line ID. Must match an existing stored value.
bash
curl -X PUT "https://your-domain.com/admin/api/v1/accounts/vendors/{id}" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "account_type": "individual",
  "name": "Acme Corporation",
  "email": "contact@acme.com",
  "phone": "+1234567890",
  "mobile": "+1234567890",
  "avatar": "avatars/partner.jpg",
  "job_title": "CEO",
  "website": "https://acme.com",
  "tax_id": "TAX-123456",
  "company_registry": "REG-123456",
  "reference": "PART-001",
  "color": "#FF5733",
  "street1": "123 Main Street",
  "street2": "Suite 100",
  "city": "New York",
  "zip": "10001",
  "state_id": 9,
  "country_id": 233,
  "title_id": 1,
  "company_id": 1,
  "industry_id": 1,
  "user_id": 1,
  "autopost_bills": false,
  "ignore_abnormal_invoice_date": false,
  "ignore_abnormal_invoice_amount": 1000,
  "invoice_sending_method": "email",
  "property_account_payable_id": 1,
  "property_account_receivable_id": 2,
  "property_account_position_id": 1,
  "property_payment_term_id": 1,
  "property_supplier_payment_term_id": 2,
  "property_outbound_payment_method_line_id": 1,
  "property_inbound_payment_method_line_id": 2
}'
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/accounts/vendors/{id}", {
  method: "PUT",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "account_type": "individual",
  "name": "Acme Corporation",
  "email": "contact@acme.com",
  "phone": "+1234567890",
  "mobile": "+1234567890",
  "avatar": "avatars/partner.jpg",
  "job_title": "CEO",
  "website": "https://acme.com",
  "tax_id": "TAX-123456",
  "company_registry": "REG-123456",
  "reference": "PART-001",
  "color": "#FF5733",
  "street1": "123 Main Street",
  "street2": "Suite 100",
  "city": "New York",
  "zip": "10001",
  "state_id": 9,
  "country_id": 233,
  "title_id": 1,
  "company_id": 1,
  "industry_id": 1,
  "user_id": 1,
  "autopost_bills": false,
  "ignore_abnormal_invoice_date": false,
  "ignore_abnormal_invoice_amount": 1000,
  "invoice_sending_method": "email",
  "property_account_payable_id": 1,
  "property_account_receivable_id": 2,
  "property_account_position_id": 1,
  "property_payment_term_id": 1,
  "property_supplier_payment_term_id": 2,
  "property_outbound_payment_method_line_id": 1,
  "property_inbound_payment_method_line_id": 2
}),
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://your-domain.com/admin/api/v1/accounts/vendors/{id}', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
    'json' => [
    'account_type' => 'individual',
    'name' => 'Acme Corporation',
    'email' => 'contact@acme.com',
    'phone' => '+1234567890',
    'mobile' => '+1234567890',
    'avatar' => 'avatars/partner.jpg',
    'job_title' => 'CEO',
    'website' => 'https://acme.com',
    'tax_id' => 'TAX-123456',
    'company_registry' => 'REG-123456',
    'reference' => 'PART-001',
    'color' => '#FF5733',
    'street1' => '123 Main Street',
    'street2' => 'Suite 100',
    'city' => 'New York',
    'zip' => '10001',
    'state_id' => 9,
    'country_id' => 233,
    'title_id' => 1,
    'company_id' => 1,
    'industry_id' => 1,
    'user_id' => 1,
    'autopost_bills' => false,
    'ignore_abnormal_invoice_date' => false,
    'ignore_abnormal_invoice_amount' => 1000,
    'invoice_sending_method' => 'email',
    'property_account_payable_id' => 1,
    'property_account_receivable_id' => 2,
    'property_account_position_id' => 1,
    'property_payment_term_id' => 1,
    'property_supplier_payment_term_id' => 2,
    'property_outbound_payment_method_line_id' => 1,
    'property_inbound_payment_method_line_id' => 2,
  ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/accounts/vendors/{id}"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

payload = {
    "account_type": "individual",
    "name": "Acme Corporation",
    "email": "contact@acme.com",
    "phone": "+1234567890",
    "mobile": "+1234567890",
    "avatar": "avatars/partner.jpg",
    "job_title": "CEO",
    "website": "https://acme.com",
    "tax_id": "TAX-123456",
    "company_registry": "REG-123456",
    "reference": "PART-001",
    "color": "#FF5733",
    "street1": "123 Main Street",
    "street2": "Suite 100",
    "city": "New York",
    "zip": "10001",
    "state_id": 9,
    "country_id": 233,
    "title_id": 1,
    "company_id": 1,
    "industry_id": 1,
    "user_id": 1,
    "autopost_bills": False,
    "ignore_abnormal_invoice_date": False,
    "ignore_abnormal_invoice_amount": 1000,
    "invoice_sending_method": "email",
    "property_account_payable_id": 1,
    "property_account_receivable_id": 2,
    "property_account_position_id": 1,
    "property_payment_term_id": 1,
    "property_supplier_payment_term_id": 2,
    "property_outbound_payment_method_line_id": 1,
    "property_inbound_payment_method_line_id": 2,
}

response = requests.put(url, headers=headers, json=payload)

data = response.json()
print(data)

Example response 200

json
{
  "data": {
    "id": 1,
    "account_type": "individual",
    "sub_type": "company",
    "name": "My Company",
    "email": "info@mycompany.local",
    "phone": "1234567890",
    "mobile": "1234567890",
    "avatar": null,
    "avatar_url": null,
    "job_title": null,
    "website": "https://mycompany.local",
    "tax_id": "MYC123456",
    "company_registry": "MYCREG001",
    "reference": null,
    "is_active": true,
    "color": "#AAAAAA",
    "street1": null,
    "street2": null,
    "city": null,
    "zip": null,
    "country_id": 104,
    "state_id": null,
    "parent_id": null,
    "title_id": null,
    "company_id": 1,
    "industry_id": null,
    "user_id": null,
    "creator_id": 1,
    "created_at": "2026-10-09T07:12:47.000000Z",
    "updated_at": "2026-10-09T08:18:15.000000Z",
    "deleted_at": null,
    "country": {
      "id": 104,
      "name": "India",
      "code": "IN",
      "phone_code": "91",
      "state_required": true,
      "zip_required": true,
      "currency_id": 20,
      "created_at": "2026-10-09T07:12:47.000000Z",
      "updated_at": "2026-10-09T07:12:47.000000Z"
    },
    "state": null,
    "message_bounce": null,
    "supplier_rank": 0,
    "customer_rank": 0,
    "invoice_warning": null,
    "autopost_bills": null,
    "credit_limit": null,
    "ignore_abnormal_invoice_date": null,
    "ignore_abnormal_invoice_amount": null,
    "invoice_sending_method": null,
    "invoice_edi_format_store": null,
    "trust": null,
    "invoice_warn_msg": null,
    "debit_limit": null,
    "peppol_endpoint": null,
    "peppol_eas": null,
    "sale_warn": null,
    "comment": null,
    "sale_warn_msg": null,
    "property_account_payable_id": null,
    "property_account_receivable_id": null,
    "property_account_position_id": null,
    "property_payment_term_id": null,
    "property_supplier_payment_term_id": null,
    "property_outbound_payment_method_line_id": null,
    "property_inbound_payment_method_line_id": null
  },
  "message": "Vendor updated successfully."
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Delete vendor ​

DELETE /admin/api/v1/accounts/vendors/{id}

Soft delete a vendor

🔒 Requires a valid Bearer token.

Path parameters

ParameterTypeRequiredDescription
idintegerYesThe vendor ID
bash
curl -X DELETE "https://your-domain.com/admin/api/v1/accounts/vendors/{id}" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/accounts/vendors/{id}", {
  method: "DELETE",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('DELETE', 'https://your-domain.com/admin/api/v1/accounts/vendors/{id}', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/accounts/vendors/{id}"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

response = requests.delete(url, headers=headers)

data = response.json()
print(data)

Example response 200

json
{
  "message": "Vendor deleted successfully."
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Restore vendor ​

POST /admin/api/v1/accounts/vendors/{id}/restore

Restore a soft deleted vendor

🔒 Requires a valid Bearer token.

Path parameters

ParameterTypeRequiredDescription
idintegerYesThe vendor ID
bash
curl -X POST "https://your-domain.com/admin/api/v1/accounts/vendors/{id}/restore" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/accounts/vendors/{id}/restore", {
  method: "POST",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://your-domain.com/admin/api/v1/accounts/vendors/{id}/restore', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/accounts/vendors/{id}/restore"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

response = requests.post(url, headers=headers)

data = response.json()
print(data)

Example response 200

json
{
  "message": "Vendor restored successfully."
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Force delete vendor ​

DELETE /admin/api/v1/accounts/vendors/{id}/force

Permanently delete a vendor

🔒 Requires a valid Bearer token.

Path parameters

ParameterTypeRequiredDescription
idintegerYesThe vendor ID
bash
curl -X DELETE "https://your-domain.com/admin/api/v1/accounts/vendors/{id}/force" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/accounts/vendors/{id}/force", {
  method: "DELETE",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('DELETE', 'https://your-domain.com/admin/api/v1/accounts/vendors/{id}/force', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/accounts/vendors/{id}/force"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

response = requests.delete(url, headers=headers)

data = response.json()
print(data)

Example response 200

json
{
  "message": "Vendor permanently deleted."
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Released under the MIT License.