## Bank detail fields

`GET /v1/bank-details/fields`

Returns the schema of all bank detail fields: type, read-only flag, required-on-create flag, label, and description.

## Examples

### curl — personal key

```bash
curl "https://vibecode.bitrix24.com/v1/bank-details/fields" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth application

```bash
curl "https://vibecode.bitrix24.com/v1/bank-details/fields" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — personal key

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/bank-details/fields', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data } = await res.json()
console.log('All fields:', Object.keys(data.fields))
```

### JavaScript — OAuth application

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/bank-details/fields', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { success, data } = await res.json()
```

## Response fields

| Field | Type | Description |
|------|-----|---------|
| `success` | boolean | `true` on success |
| `data.fields` | object | Field schema: the key is the field name, the value is an object describing the field. The fields are listed in the tables below |
| `data.fields.<field>.type` | string | Value type: `number`, `string`, `boolean`, `datetime` |
| `data.fields.<field>.readonly` | boolean | `true` — the field is not accepted on create or update |
| `data.fields.<field>.required` | boolean | `true` — the field is required on create. The key is present only with the value `true` |
| `data.fields.<field>.notReturned` | boolean | `true` — the field is accepted on write but does not come back in responses. The key is present only with the value `true` |
| `data.fields.<field>.multiple` | boolean | `true` — the field holds multiple values. A missing key does not mean the field is single-valued |
| `data.fields.<field>.label` | string | Field name in English |
| `data.fields.<field>.description` | string | Field description in English |
| `data.batch` | array | Write operations available in [batch calls](/docs/batch): `create`, `update`, `delete` |
| `meta.warnings` | array | Present when the Bitrix24 account's user fields could not be retrieved: `meta.warnings[].code` is `fields_partial`, and `data.fields` contains only the fields from the tables below |

Request headers do not switch the language of labels and descriptions.

The `entityTypeId` field is marked `notReturned: true`: it is accepted on write but does not come back in responses. An explicit `select=entityTypeId` returns an `UNKNOWN_SELECT_FIELD` warning, and the field is absent from the response. Do not include it in `select`.

### Service

| Field | Type | RO | Description |
|------|-----|:--:|---------|
| `id` | number | yes | Bank detail ID |
| `entityTypeId` | number | no | Owner entity type. Always `8` (requisite). Write-only, not returned in the `get` response |
| `entityId` | number | no | ID of the owner requisite. List: [`GET /v1/requisites`](/docs/entities/requisites/list) |
| `countryId` | number | no | Country ID. `0` — country not set. List: [`GET /v1/requisite-presets/countries`](/docs/entities/requisite-presets/countries) |
| `name` | string | no | Bank detail name |
| `code` | string | no | Symbolic code for external integrations |
| `xmlId` | string | no | External identifier for synchronization |
| `originatorId` | string | no | Source system ID |
| `active` | boolean | no | Whether the record is active |
| `sort` | number | no | Sort order |
| `comments` | string | no | Comment on the record |
| `createdAt` | datetime | yes | Creation date in ISO 8601 format |
| `updatedAt` | datetime | yes | Last modification date in ISO 8601 format |
| `createdBy` | number | yes | Creator ID |
| `modifyBy` | number | yes | Last editor ID |

### Bank details

| Field | Type | RO | Description |
|------|-----|:--:|---------|
| `rqBankName` | string | no | Bank name |
| `rqBankAddr` | string | no | Bank address |
| `rqBankRouteNum` | string | no | Bank routing number |
| `rqBankCode` | string | no | Bank code |
| `rqBik` | string | no | BIK |
| `rqMfo` | string | no | MFO, Ukraine |
| `rqAccName` | string | no | Account name |
| `rqAccNum` | string | no | Current account |
| `rqAccType` | string | no | Account type |
| `rqCorAccNum` | string | no | Correspondent account |
| `rqAccCurrency` | string | no | Account currency |
| `rqIik` | string | no | IIK, Kazakhstan |
| `rqAgencyName` | string | no | Agency name |

### International details

| Field | Type | RO | Description |
|------|-----|:--:|---------|
| `rqIban` | string | no | IBAN |
| `rqSwift` | string | no | SWIFT code |

### French details

| Field | Type | RO | Description |
|------|-----|:--:|---------|
| `rqBic` | string | no | BIC in the French form. A separate field, not `rqBik` |
| `rqCodeb` | string | no | Bank code |
| `rqCodeg` | string | no | Bank branch code |
| `rqRib` | string | no | RIB — bank account identifier |

## Response example

```json
{
  "success": true,
  "data": {
    "fields": {
      "id": { "type": "number", "readonly": true, "label": "Bank detail ID", "description": "Bank detail ID." },
      "entityTypeId": { "type": "number", "readonly": false, "notReturned": true, "label": "Owner entity type", "description": "Owner entity type. Always 8 (requisite). Write-only — not returned in the get response." },
      "entityId": { "type": "number", "readonly": false, "required": true, "label": "Owner requisite ID", "description": "ID of the owner requisite." },
      "countryId": { "type": "number", "readonly": false, "label": "Country ID", "description": "Country ID. 0 means the country is not set." },
      "name": { "type": "string", "readonly": false, "required": true, "label": "Bank detail name", "description": "Bank detail name." },
      "code": { "type": "string", "readonly": false, "label": "Symbolic code", "description": "Symbolic code for external integrations." },
      "xmlId": { "type": "string", "readonly": false, "label": "External ID", "description": "External identifier for synchronization." },
      "originatorId": { "type": "string", "readonly": false, "label": "Source system ID", "description": "Source system ID." },
      "active": { "type": "boolean", "readonly": false, "label": "Active", "description": "Whether the record is active." },
      "sort": { "type": "number", "readonly": false, "label": "Sort order", "description": "Sort order." },
      "comments": { "type": "string", "readonly": false, "label": "Comment", "description": "Comment on the record." },
      "createdAt": { "type": "datetime", "readonly": true, "label": "Created at", "description": "Creation date (ISO 8601)." },
      "updatedAt": { "type": "datetime", "readonly": true, "label": "Updated at", "description": "Last modification date (ISO 8601)." },
      "createdBy": { "type": "number", "readonly": true, "label": "Created by", "description": "Creator ID." },
      "modifyBy": { "type": "number", "readonly": true, "label": "Modified by", "description": "Last editor ID." },
      "rqBankName": { "type": "string", "readonly": false, "label": "Bank name", "description": "Bank name." },
      "rqBankAddr": { "type": "string", "readonly": false, "label": "Bank address", "description": "Bank address." },
      "rqBankRouteNum": { "type": "string", "readonly": false, "label": "Bank routing number", "description": "Bank routing number." },
      "rqBankCode": { "type": "string", "readonly": false, "label": "Bank code", "description": "Bank code." },
      "rqAccNum": { "type": "string", "readonly": false, "label": "Current account", "description": "Current account number." },
      "rqCorAccNum": { "type": "string", "readonly": false, "label": "Correspondent account", "description": "Correspondent account number." },
      "rqIik": { "type": "string", "readonly": false, "label": "IIK (Kazakhstan)", "description": "IIK — the Kazakhstan account identifier." },
      "rqMfo": { "type": "string", "readonly": false, "label": "MFO (Ukraine)", "description": "MFO — the Ukrainian bank code." },
      "rqAccName": { "type": "string", "readonly": false, "label": "Account name", "description": "Account name." },
      "rqAccCurrency": { "type": "string", "readonly": false, "label": "Account currency", "description": "Account currency." },
      "rqBik": { "type": "string", "readonly": false, "label": "BIC", "description": "BIC — the Russian bank identification code." },
      "rqSwift": { "type": "string", "readonly": false, "label": "SWIFT code", "description": "SWIFT code." },
      "rqIban": { "type": "string", "readonly": false, "label": "IBAN", "description": "IBAN — the international bank account number." },
      "rqAgencyName": { "type": "string", "readonly": false, "label": "Agency name", "description": "Agency name." },
      "rqAccType": { "type": "string", "readonly": false, "label": "Account type", "description": "Account type." },
      "rqBic": { "type": "string", "readonly": false, "label": "BIC (French form)", "description": "BIC in the French form; a separate field from rqBik." },
      "rqCodeb": { "type": "string", "readonly": false, "label": "Bank code (France)", "description": "Bank code in the French banking system." },
      "rqCodeg": { "type": "string", "readonly": false, "label": "Branch code (France)", "description": "Branch code in the French banking system." },
      "rqRib": { "type": "string", "readonly": false, "label": "RIB (France)", "description": "RIB — the French bank account identifier." }
    },
    "batch": ["create", "update", "delete"]
  }
}
```

## Error response example

401 — key not provided:

```json
{
  "success": false,
  "error": {
    "code": "MISSING_API_KEY",
    "message": "API key required. Pass via X-Api-Key header."
  }
}
```

## Errors

| HTTP | Code | Description |
|------|-----|---------|
| 401 | `MISSING_API_KEY` | The `X-Api-Key` header is not provided |
| 403 | `SCOPE_DENIED` | The API key lacks the `crm` scope. Message: `This endpoint requires 'crm' scope` |
| 401 | `TOKEN_MISSING` | The API key has no configured tokens |
| 429 | `RATE_LIMITED` | Rate limit exceeded: 300 requests per minute per portal. All API keys of the portal share one limit. The current limit is returned in the `x-ratelimit-limit` header. Retry after the delay in the `Retry-After` header |

For the full list of common API errors, see [Errors](/docs/errors).

## See also

- [Get bank detail](/docs/entities/bank-details/get)
- [List bank details](/docs/entities/bank-details/list)
- [Create bank detail](/docs/entities/bank-details/create)
- [Requisites](/docs/entities/requisites)
