For AI agents: markdown of this page — /docs-content-en/entities/crm-payments/list.md documentation index — /llms.txt
List CRM payments
GET /v1/crm-payments
Returns all payments of one CRM item, such as a deal, with filtering and sorting by payment fields.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ParameterentityTypeId (query) |
Typenumber | Requiredyes | DescriptionCRM item type. For a deal — 2 |
ParameterentityId (query) |
Typenumber | Requiredyes | DescriptionCRM item ID. For a deal — the ID from GET /v1/deals |
Parameterfilter (query) |
Typeobject | Requiredno | DescriptionFilter by payment fields from the "Response fields" table — exact value match only; keys cannot contain comparison operators. Filtering syntax. Example: ?filter[paid]=Y |
Parameterorder (query) |
Typeobject | Requiredno | DescriptionSort by payment fields from the "Response fields" table: asc, desc, ASC or DESC. Example: ?order[id]=desc |
There is no pagination: the response contains all payments of the item in a single call. The method accepts no other query parameters, including limit and offset.
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/crm-payments?entityTypeId=2&entityId=8761&order[id]=asc" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/crm-payments?entityTypeId=2&entityId=8761&order[id]=asc" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const params = new URLSearchParams({ entityTypeId: '2', entityId: '8761', 'order[id]': 'asc' })
const res = await fetch(`https://vibecode.bitrix24.com/v1/crm-payments?${params}`, {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { data, meta } = await res.json()
console.log(`Payments: ${meta.total}`, data.map(p => `${p.accountNumber} — ${p.paid}`))
JavaScript — OAuth application
const params = new URLSearchParams({ entityTypeId: '2', entityId: '8761', 'order[id]': 'asc' })
const res = await fetch(`https://vibecode.bitrix24.com/v1/crm-payments?${params}`, {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data, meta } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | Descriptiontrue on success |
Fielddata |
Typearray | DescriptionPayments of the item. An empty array if the item has no payments |
Fielddata[].id |
Typenumber | DescriptionPayment ID |
Fielddata[].accountNumber |
Typestring | DescriptionPayment number: the linked order number and the payment sequence number separated by /, for example 1029/2 |
Fielddata[].paid |
Typestring | DescriptionPaid mark: Y — paid, N — not paid |
Fielddata[].datePaid |
Typestring | null | DescriptionTime of the last "paid" mark, ISO 8601 with a time zone offset. null if the payment was never marked |
Fielddata[].empPaidId |
Typenumber | null | DescriptionID of the employee who last marked the payment. List: GET /v1/users |
Fielddata[].paySystemId |
Typenumber | DescriptionPayment system ID. List: GET /v1/pay-systems |
Fielddata[].sum |
Typenumber | DescriptionPayment amount. The sum of the payment's items; 0 for a new payment |
Fielddata[].currency |
Typestring | DescriptionCurrency code. List: GET /v1/currencies |
Fielddata[].paySystemName |
Typestring | DescriptionPayment system name |
Fieldmeta.total |
Typenumber | DescriptionNumber of payments in data |
Response example
{
"success": true,
"data": [
{
"id": 563,
"accountNumber": "1029/1",
"paid": "N",
"datePaid": null,
"empPaidId": null,
"paySystemId": 19,
"sum": 3000,
"currency": "USD",
"paySystemName": "Card payment"
},
{
"id": 565,
"accountNumber": "1029/2",
"paid": "Y",
"datePaid": "2026-10-05T09:29:34+00:00",
"empPaidId": 1317,
"paySystemId": 3,
"sum": 0,
"currency": "USD",
"paySystemName": "Bank transfer (Contacts)"
}
],
"meta": {
"total": 2
}
}
Error response example
400 — filtering or sorting by a field that is not in the response:
{
"success": false,
"error": {
"code": "UNKNOWN_FILTER_FIELD",
"message": "Filter and order support only payment response fields."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP400 | CodeMISSING_REQUIRED_FIELDS |
DescriptionentityTypeId or entityId is missing, or the value is not a positive integer |
| HTTP400 | CodeUNKNOWN_FILTER_FIELD |
Descriptionfilter or order contains a field that is not in the "Response fields" table, a key with a comparison operator, or a sort direction other than asc, desc, ASC, DESC; or another query parameter was passed |
| HTTP404 | CodeENTITY_NOT_FOUND |
DescriptionNo CRM item exists with this entityTypeId and entityId |
| HTTP422 | CodeBITRIX_ERROR |
DescriptionBitrix24 rejected the request; the reason is in error.message |
| HTTP403 | CodeBITRIX_ACCESS_DENIED |
DescriptionThe key's user has no access to the CRM item or the payment in Bitrix24 |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe API key does not have the crm scope |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe API key has no configured tokens |
| HTTP401 | CodeMISSING_API_KEY |
DescriptionX-Api-Key is not provided |
Full list of common API errors — Errors.
Known specifics
Removing the mark does not clear the time and author of the last mark. After the mark is removed, the datePaid and empPaidId fields keep the values of the last mark. Only paid reflects the current state.