For AI agents: markdown of this page — /docs-content-en/entities/requisites.md documentation index — /llms.txt
Requisites
CRM requisite management: create, get, update, delete, filter. Requisites are always tied to a contact or company and hold legal information (name, tax IDs, director, accountant, etc.).
Bitrix24 API: crm.requisite.*
Scope: crm
Look up requisites by number
POST /v1/requisites/lookup
Finds an organization's requisites by tax ID or a bank's details by bank code in a Bitrix24 external directory and returns fields ready for creating a requisite. The country and the directory are set by the requisite preset in options.presetId.
Request fields (body)
| Field | Type | Required | Description |
|---|---|---|---|
FieldsearchQuery |
Typestring | Requiredyes | DescriptionThe number to look up. The string must contain 8–12 consecutive digits: tax ID — 10–12 digits, bank code — 9 digits, number in the register of self-regulatory organizations (SRO) — 8 digits |
Fieldoptions.presetId |
Typenumber | Requiredyes | DescriptionRequisite preset ID, an integer greater than zero. The preset sets the lookup country. List: GET /v1/requisite-presets |
Fieldoptions.typeId |
Typestring | Requiredno | DescriptionWhat to look up: ITIN — tax ID, BIC — bank code, SRO — number in the SRO register. The type must match the preset's country, see the table below |
The body and options accept no other fields: an unknown field is rejected with 400 INVALID_PARAMS.
The search type depends on the preset's countryId. GET /v1/requisite-presets/:id returns the preset's country, and Requisite preset countries lists the country names.
Preset countryId |
Allowed typeId |
Without typeId |
|---|---|---|
Preset countryId1 |
Allowed typeIdITIN, BIC |
Without typeIdsearch by tax ID |
Preset countryId14 |
Allowed typeIdSRO |
Without typeIdsearch by SRO number |
| Preset countryIdother countries | Allowed typeIddo not pass | Without typeIdsearch without a specific type |
Examples
curl — personal key
curl -X POST "https://vibecode.bitrix24.com/v1/requisites/lookup" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"searchQuery": "1234567890",
"options": { "presetId": 1 }
}'
curl — OAuth application
curl -X POST "https://vibecode.bitrix24.com/v1/requisites/lookup" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQuery": "1234567890",
"options": { "presetId": 1 }
}'
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/requisites/lookup', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
searchQuery: '1234567890',
options: { presetId: 1 },
}),
})
const { data } = await res.json()
for (const item of data) console.log(item.title, item.fields.rqInn)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/requisites/lookup', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
searchQuery: '1234567890',
options: { presetId: 1 },
}),
})
const { data } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | Descriptiontrue on success |
Fielddata |
Typearray | DescriptionDirectory records found. An empty array means the directory found nothing |
Fielddata[].title |
Typestring | DescriptionName of the organization or bank |
Fielddata[].subTitle |
Typestring | DescriptionThe number the record was found by, for example Tax ID 1234567890 |
Fielddata[].fields |
Typeobject | DescriptionRequisite fields in camelCase, for example rqInn, rqKpp, rqCompanyName. For a bank — bank detail fields: rqBik, rqCorAccNum, rqSwift. The set depends on the country and the directory. Field schemas: GET /v1/requisites/fields, GET /v1/bank-details/fields |
Fielddata[].fields.presetId |
Typestring | DescriptionPreset ID suggested by the directory. It may differ from options.presetId in the request |
Fielddata[].address |
Typeobject | DescriptionOrganization addresses. The key is the address type typeId, for example 6 — legal address. Absent when the directory returns no address |
Fielddata[].address.<typeId>.fieldCollection |
Typeobject | DescriptionAddress parts under numeric codes, for example 50 — postal code, 100 — country, 200 — city, 410 — street and building |
Response example
Organization lookup by tax ID with a preset of a country that has a directory, countryId 1:
{
"success": true,
"data": [
{
"title": "Acme LLC",
"subTitle": "Tax ID 1234567890",
"fields": {
"rqInn": "1234567890",
"rqKpp": "123456789",
"rqOgrn": "1234567890123",
"rqCompanyName": "Acme",
"rqCompanyFullName": "Acme LLC",
"presetId": "1",
"rqCompanyRegDate": "06/20/1991",
"rqDirector": "John Smith"
},
"address": {
"6": {
"id": 0,
"latitude": "",
"longitude": "",
"languageId": "en",
"fieldCollection": {
"50": "10001",
"100": "USA",
"200": "New York",
"410": "1 Main St."
}
}
}
}
]
}
Bank lookup by bank code, request body {"searchQuery": "123456789", "options": {"presetId": 1, "typeId": "BIC"}}:
{
"success": true,
"data": [
{
"title": "Acme Bank",
"subTitle": "Bank code 123456789",
"fields": {
"name": "Acme Bank",
"rqBankName": "Acme Bank",
"rqBik": "123456789",
"rqBankAddr": "1 Main St., New York, 10001",
"rqCorAccNum": "12345678901234567890",
"rqSwift": "CHASUS33"
}
}
]
}
Error response example
400 — the search type does not match the preset's country:
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "typeId is not supported for this preset country"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP400 | CodeMISSING_REQUIRED_FIELDS |
Descriptionoptions is missing or options.presetId is not an integer greater than zero |
| HTTP400 | CodeINVALID_PARAMS |
DescriptionsearchQuery does not contain 8–12 consecutive digits, including when searchQuery is not passed. Checked before the lookup |
| HTTP400 | CodeINVALID_PARAMS |
Descriptionoptions.typeId is not ITIN, BIC or SRO |
| HTTP400 | CodeINVALID_PARAMS |
Descriptionoptions.typeId does not match the preset's country |
| HTTP400 | CodeINVALID_PARAMS |
DescriptionThe number of digits in searchQuery does not match the search type, for example 8 digits with typeId: "BIC" |
| HTTP400 | CodeINVALID_PARAMS |
DescriptionUnknown field in the body or in options |
| HTTP404 | CodeENTITY_NOT_FOUND |
DescriptionNo preset with this options.presetId |
| HTTP403 | CodeBITRIX_ACCESS_DENIED |
DescriptionBitrix24 denied CRM access to the key's user |
| HTTP422 | CodeBITRIX_ERROR |
DescriptionBitrix24 rejected the lookup. The error text is in error.message |
| HTTP502 | CodeBITRIX_RESPONSE_INVALID |
DescriptionBitrix24 returned a lookup response in an unexpected format |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe key lacks the crm scope |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe key has no connection to Bitrix24 |
Full list of common API errors — Errors.
Known specifics
An empty data array does not always mean the organization does not exist. For a preset of a country without a directory, for example Germany or Kazakhstan, the response is 200 with an empty array and no error. The built-in Company and Person presets of an international Bitrix24 account have countryId 122: lookup runs for them without a search type and can return an empty array.
How to create a requisite from the result. Pass the fields from data[].fields to POST /v1/requisites together with entityTypeId, entityId, name and the same presetId that was in options.presetId. Do not take presetId from the response: the directory may suggest a different preset. Check the fields against GET /v1/requisites/fields: the directory may return fields that the preset does not include.
The address is created separately. POST /v1/requisites does not accept an address. Create it with POST /v1/addresses using the typeId from the data[].address key, entityTypeId: 8 and the id of the created requisite.
A lookup by bank code returns a bank detail. Create it with POST /v1/bank-details using the fields from data[].fields and the entityId of the owner requisite.
A read-only key is accepted. The lookup writes nothing to the Bitrix24 account.