Фильтрация сделок компании
Метод предназначен для поиска и получения списка сделок организации с использованием фильтров и постраничной навигации.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/deals/filter
Общая структура запроса описана в разделе Фильтрация: общая структура.
Доступные фильтры (filters)
| Имя (name) | Тип значения (value) | Пример значения | Описание |
|---|
| STATUS | array[string] | ["COMPLETED", "PAYMENT_IN_PROGRESS"] | Возвращает сделки с указанными статусами (см. справочник ниже) |
| ANNOUNCEMENT_ID | array[number] | [812, 759] | Поиск сделок, привязанных к конкретным ID объявлений |
| GROUP_ID | array[string] | ["6942bde29c4ba8df5b14653f"] | Фильтрация по ID тэга сделки (Mongo ObjectId) |
| GROUP_PRESENCE | boolean | true | true — только сделки с хотя бы одним тэгом; false — только без тэгов |
| INDIVIDUAL_INN | array[string] | ["160285864492"] | Фильтрация по ИНН исполнителей |
| CREATED_AT | диапазон дат | {"from": "2026-02-01T00:00:00.000Z", "to": "2026-02-28T23:59:59.999Z"} | Диапазон дат создания сделки |
| UPDATED_AT | диапазон дат | {"from": "2026-02-01T00:00:00.000Z", "to": "2026-02-28T23:59:59.999Z"} | Диапазон дат последнего изменения сделки |
| AMOUNT | диапазон чисел | {"from": 10000, "to": 100000} | Диапазон суммы сделки в копейках |
| LAST_PAYMENT_STATUS | array[string] | ["SUCCESS"] | Фильтрация по статусу последней выплаты: IN_PROGRESS, SUCCESS, FAILED |
| LAST_PAYMENT_SUBSTATUS | array[string] | ["BALANCE_ERROR"] | Фильтрация по субстатусу последней выплаты (см. «Субстатусы выплаты» ниже) |
| WORK_TIME | string | "Пн–Пт, 9:00–18:00" | Отбор по времени выполнения задачи из объявления (поле advertisementWorkTime); при массиве берётся первое значение |
Доступные сортировки
| Поле (field) | Описание |
|---|
| STATUS | Статус сделки |
| ANNOUNCEMENT_ID | ID объявления |
| CREATED_AT | Дата создания сделки |
| UPDATED_AT | Дата последнего изменения сделки |
| AMOUNT | Сумма сделки |
| FULL_NAME | ФИО исполнителя |
Поля, обрабатываемые по query
Текстовый поиск (query) выполняет поиск частичного совпадения по полю назначение платежа.
Доступные статусы сделок (STATUS)
| Статус | Описание |
|---|
| WORK_IN_PROGRESS | Исполнитель выполняет работу |
| AWAITING_PAYMENT | Работа завершена, сделка ожидает подтверждения оплаты со стороны компании |
| PAYMENT_IN_PROGRESS | Платеж отправлен в банк и находится в процессе обработки |
| COMPLETED | Выплата успешно проведена, сделка закрыта |
| REJECTED | Сделка была отклонена или произошла ошибка при оплате |
| PROPOSED | Этап предварительного предложения условий сделки |
| CANCELLED | Сделка отменена |
| PAYMENT_FAILED_CRITICAL | Критическая ошибка при проведении платежа |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/deals/filter" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"filters": [
{ "name": "STATUS", "value": ["PAYMENT_IN_PROGRESS", "COMPLETED"] },
{ "name": "ANNOUNCEMENT_ID", "value": [812, 810] }
],
"pagination": { "limit": 20, "lastId": null }
}'
Пример ответа
{
"requestId": "1739132245678-abc-123",
"success": true,
"result": {
"lastId": "65b2a1f8e4b0a1234567890b",
"items": [
{
"id": "65b2a1f8e4b0a1234567890a",
"offerId": "offer_98765",
"announcementId": 812,
"status": "COMPLETED",
"amount": 150000,
"firstName": "Иван",
"inn": "770102030405",
"updatedAt": "2026-02-09T14:30:00.000Z"
},
{
"id": "65b29f12e4b0b9876543210c",
"offerId": "offer_98766",
"announcementId": 810,
"status": "PAYMENT_IN_PROGRESS",
"amount": 275050,
"firstName": "Алексей",
"inn": "500100200300",
"updatedAt": "2026-02-09T15:00:00.000Z"
}
]
}
}
Таблица значений полей ответа
| Поле | Описание |
|---|
| requestId | Уникальный ID запроса |
| success | Статус выполнения |
| result | Контейнер данных |
| lastId | ID последней записи |
| items | Список сделок |
| items.id | ID сделки |
| items.offerId | ID предложения |
| items.announcementId | ID объявления |
| items.status | Статус сделки |
| items.amount | Сумма сделки |
| items.firstName | Имя исполнителя |
| items.inn | ИНН исполнителя |
| items.updatedAt | Дата обновления |
Получение сделки по ID
Метод API предназначен для получения детальной информации о конкретной сделке (выплате) компании по её уникальному идентификатору.
Запрос
Метод: GET URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/deals/{dealId}
Path Parameters
| Параметр | Описание |
|---|
| organisationId | Идентификатор организации |
| dealId | Идентификатор сделки |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/deals/58735973801a37083e40b33c" \
--header "accept: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ"
Пример ответа
{
"requestId": "8f7f6bfb-fd46-4048-ae6f-cb20f7b5dcaa",
"result": {
"id": "58735973801a37083e40b33c",
"offerId": "69846072912b38194f51c430",
"announcementId": 123,
"organisationId": "6942bde29c4ba8df5b14653f",
"executorId": "6968d0e58adb5d56f5420178",
"status": "AWAITING_PAYMENT",
"amount": 200000,
"paymentPurpose": "Pay",
"stateChangedBy": {
"_id": "6968d0e58adb5d56f5420178",
"name": "Иван",
"lastName": "Иванов",
"phone": "+79998887766",
"type": "selfworker"
},
"declineComment": null,
"createdAt": "2026-02-05T09:19:00.449Z",
"updatedAt": "2026-02-05T09:21:12.230Z",
"phone": "+79998887766",
"firstName": "Иван",
"lastName": "Иванов",
"middleName": "",
"inn": "111122223333",
"advertisementName": "тттт",
"lastPaymentStatus": "FAILED",
"lastPaymentSubstatus": "BALANCE_ERROR",
"payments": [
{
"id": "6984a1c2e4b0a12345678901",
"createdAt": "2026-02-05T09:20:01.120Z",
"updatedAt": "2026-02-05T09:21:12.230Z",
"platformPaymentId": "0b8f6a52-3c1d-4e7a-9f2b-6d4c8e1a7b35",
"platformPaymentNumber": 1001,
"dealId": "58735973801a37083e40b33c",
"amount": 200000,
"purpose": "Pay",
"status": "FAILED",
"substatus": "BALANCE_ERROR",
"contractor": {
"platformId": "3f2a9c4e-7b1d-4a6e-8c5f-1e9d2b7a4c60",
"inn": "111122223333",
"name": "Иванов Иван",
"phone": "+79998887766"
},
"paymentMethod": {
"type": "BANK_CARD",
"details": {
"first4": "1111",
"last4": "4444"
}
},
"processedAt": "2026-02-05T09:21:12.230Z"
}
]
},
"success": true
}
Ответ (Response Body)
| Поле | Описание |
|---|
| requestId | Уникальный ID транзакции запроса |
| success | Статус выполнения запроса (true/false) |
| result | Объект с подробными данными сделки |
| id | Уникальный системный ID сделки |
| offerId | ID оффера, на базе которого создана сделка |
| announcementId | Числовой ID связанного объявления |
| organisationId | ID организации-заказчика |
| executorId | Внутренний ID исполнителя в Маркетплейсе (только для чтения). С исполнителями организации сопоставлять по inn |
| status | Текущий статус сделки |
| amount | Сумма сделки в копейках |
| paymentPurpose | Назначение платежа |
| stateChangedBy | Кто последним изменил статус: объект _id, name, lastName, phone, type (selfworker — исполнитель, organisation — организация, customer); null — статус изменила система |
| declineComment | null |
| createdAt | Дата и время создания сделки |
| updatedAt | Дата последнего обновления сделки |
| phone | Контактный телефон исполнителя |
| firstName | Имя исполнителя |
| lastName | Фамилия исполнителя |
| inn | ИНН исполнителя |
| advertisementName | Название услуги из объявления |
| lastPaymentStatus | Статус последней выплаты: IN_PROGRESS, SUCCESS, FAILED; null — выплат не было |
| lastPaymentSubstatus | Субстатус последней выплаты (см. «Субстатусы выплаты» ниже); null — нет |
| payments | Массив выплат по сделке (см. ниже) |
В примере выше выплата отклонена финансовым сервисом из-за нехватки средств на счёте (BALANCE_ERROR), и сделка вернулась в статус AWAITING_PAYMENT: после пополнения счёта оплату можно повторить.
Поля объекта выплаты (payments[])
| Поле | Тип | Описание |
|---|
| id | string | ID записи о выплате в сделке |
| createdAt | string | Дата создания записи (ISO 8601) |
| updatedAt | string | Дата последнего обновления записи (ISO 8601) |
| platformPaymentId | string (uuid) | ID выплаты — совпадает с id операции в разделе «Операции»; у исторических выплат отсутствует |
| platformPaymentNumber | number | Номер выплаты для отображения (number операции); у исторических выплат отсутствует |
| externalPaymentId | number | ID исторической выплаты; у новых выплат отсутствует |
| externalRegistryId | number | ID реестра исторической выплаты; у новых выплат отсутствует |
| dealId | string | Ссылка на сделку |
| amount | number | Сумма выплаты в копейках |
| purpose | string | Назначение платежа |
| status | string | Упрощённый статус выплаты: IN_PROGRESS, SUCCESS, FAILED |
| substatus | string | Причина ошибки выплаты (опционально, см. «Субстатусы выплаты» ниже) |
| taxRatePercent | number | Налоговая ставка НПД в процентах |
| serviceCommission | number | Комиссия сервиса «Самозанятые» в копейках |
| contract | object | Снимок договора (см. «Поля объекта договора/акта» ниже) |
| act | object | Снимок акта выполненных работ (см. «Поля объекта договора/акта» ниже) |
| receipt | object | Снимок чека (см. «Поля объекта чека» ниже) |
| contractor | object | Снимок данных исполнителя (см. «Поля снимка исполнителя» ниже) |
| paymentMethod | object | Снимок способа выплаты (см. «Поля способа выплаты» ниже) |
| processedAt | string | Дата обработки выплаты (ISO 8601) |
Поля объекта договора/акта (payments[].contract, payments[].act)
| Поле | Тип | Описание |
|---|
| uuid | string | UUID документа |
| name | string | Название документа |
| hash | string | SHA256 хеш документа |
| status | string | Статус документа |
| url | string | URL документа |
| signedUrl | string | URL подписанного документа |
| signedAt | string | Дата подписания (ISO 8601) |
| createdAt | string | Дата создания (ISO 8601) |
| externalDocumentId | number | Числовой идентификатор документа в ЭДО |
Поля объекта чека (payments[].receipt)
| Поле | Тип | Описание |
|---|
| id | number | Числовой ID исторического чека; у чеков, зарегистрированных платформой, отсутствует (чек определяется по fnsReceiptId) |
| service | string | Название сервиса |
| amount | number | Сумма в копейках |
| quantity | number | Количество предоставленных услуг |
| fnsReceiptId | string | ID чека в ФНС |
| url | string | URL чека на внешнем ресурсе (ФНС) |
| localUrl | string | URL оффлайн-чека в системе |
| date | string | Дата чека |
| contractorInn | string | ИНН получателя платежа |
| inn | string | ИНН компании или плательщика |
| incomeType | string | Источник/тип дохода |
| message | string | Сообщение по чеку |
| attributes | array | Атрибуты чека (name, value, title, views) |
Поля снимка исполнителя (payments[].contractor)
| Поле | Тип | Описание |
|---|
| platformId | string (uuid) | ID исполнителя в организации (как в разделе «Исполнители»); у исторических выплат отсутствует |
| inn | string | ИНН исполнителя |
| name | string | ФИО или название |
| phone | string | Телефон |
| externalId | number | ID исполнителя исторической выплаты; у новых выплат отсутствует |
Поля способа выплаты (payments[].paymentMethod)
| Поле | Тип | Описание |
|---|
| type | string | Тип способа оплаты: BANK_CARD, BANK_ACCOUNT, BANK_FPS |
| details | object | Реквизиты, состав зависит от type (см. ниже) |
Состав details в зависимости от type:
| type | Поля details |
|---|
BANK_CARD | first4 — первые 4 цифры карты, last4 — последние 4 цифры карты |
BANK_ACCOUNT | accountNumber — номер счёта, bik — БИК банка |
BANK_FPS | phone — телефон в СБП, bankName — банк, bankId — ID банка в СБП |
Субстатусы выплаты (substatus, lastPaymentSubstatus)
Субстатус заполняется у неуспешной выплаты и объясняет причину ошибки. Основные значения:
| Субстатус | Описание |
|---|
| BALANCE_ERROR | Финансовый сервис отказал в выплате: на счёте организации не хватило средств |
| PAYOUT_LIMIT_EXCEEDED | Финансовый сервис отказал в выплате: превышен лимит тарифа |
| SELFEMPLOYED_MAX_LIMIT_ERROR | Финансовый сервис отказал в выплате: превышен годовой лимит дохода самозанятого |
| PROVIDER_REJECTED | Финансовый сервис отказал в выплате по иной причине |
| RECEIPT_REGISTRATION_REJECTED | ФНС окончательно отказала в регистрации дохода (не самозанятый, нет привязки, лимит, данные); выплата не отправлялась |
| RECEIPT_REGISTRATION_TIMEOUT | Доход не удалось зарегистрировать в ФНС за отведённый срок; выплата не отправлялась |
| REQUISITE_RESTRICTED | Реквизит выплаты в стоп-листе платформы; выплата не отправлялась |
| CONTRACTOR_NOT_FOUND | Исполнитель не найден в организации |
| CONTRACTOR_HAS_WRONG_STATUS | Исполнитель не активен в организации |
| SELFEMPLOYED_NOT_BOUND | Исполнитель не привязал платформу как партнёра в «Мой налог» |
| PAYMENT_METHOD_NOT_FOUND | У исполнителя нет реквизитов для выплаты |
| CONTRACTOR_REQUISITE_IS_WRONG | Тип реквизитов исполнителя не поддерживается |
| CONTRACT_NOT_FOUND | Нет подписанного договора с исполнителем |
| ACT_NOT_SIGNED | Акт не подписан исполнителем в срок |
| CONNECT_DEAL_TO_PAYMENT_ERROR | Не удалось связать выплату со сделкой до запуска оплаты |
| CREATE_REGISTRY_WITH_PAYOUT_ERROR | Не удалось создать или запустить реестр с выплатой |
| PAY_REGISTRY_ERROR | Исход запуска оплаты реестра неизвестен; требуется ручная проверка |
Прочие значения перечисления (SERVICE_ERROR, FNS_ERROR, ACT_REJECT_ERROR, SELFEMPLOYED_LIMIT_ERROR, LEGAL_IS_BLOCKED_ERROR, SUPPORT_CANCEL, BLOCKED_BY_FROD, PROVIDER_NOT_SUPPORT_PHYSICAL_PAYMENT, NOT_SELFEMPLOYED, AMOUNT_NOT_SPECIFIED, PURPOSE_NOT_SPECIFIED, REGISTRY_UNSUPPORTED_CONTRACTOR_TYPE, COMPANY_DISABLED_EDO, CREATE_PAY_REGISTRY_TASK_ERROR) встречаются у исторических выплат.
После неуспешной выплаты сделка возвращается в статус AWAITING_PAYMENT, и оплату можно повторить. Исключение — PAY_REGISTRY_ERROR и CREATE_PAY_REGISTRY_TASK_ERROR: оплата могла быть запущена, поэтому сделка остаётся в PAYMENT_IN_PROGRESS до ручной проверки.
Доступные статусы сделок (STATUS)
| Статус | Описание |
|---|
| WORK_IN_PROGRESS | Исполнитель выполняет работу |
| AWAITING_PAYMENT | Работа завершена, сделка ожидает подтверждения оплаты со стороны компании |
| PAYMENT_IN_PROGRESS | Платеж отправлен в банк и находится в процессе обработки |
| COMPLETED | Выплата успешно проведена, сделка закрыта |
| REJECTED | Сделка была отклонена или произошла ошибка при оплате |
| PROPOSED | Этап предварительного предложения условий сделки |
Формирование предложения по выплате (Акт)
Метод позволяет компании предложить исполнителю финальные условия оплаты за выполненную работу.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/deals/{dealId}/act/send
Path Parameters
| Параметр | Описание |
|---|
| organisationId | Идентификатор организации |
| dealId | Идентификатор сделки |
Request Body
| Поле | Тип | Обязательно | Описание |
|---|
| amount | number | Да | Сумма выплаты в копейках |
| paymentPurpose | string | Да | Назначение платежа |
Правила валидации
| Параметр | Правило |
|---|
| amount | Целое положительное число, максимум 100 000 000 копеек (1 000 000 рублей) |
| paymentPurpose | Непустая строка |
Таблица ограничений по статусам
| Статус сделки | Разрешено отправлять акт | Описание причины |
|---|
| PROPOSED | Нет | Была уже предложена сумма |
| WORK_IN_PROGRESS | Да | Работа выполняется или завершена, можно фиксировать сумму |
| AWAITING_PAYMENT | Нет | Сделка уже в процессе оплаты |
| PAYMENT_IN_PROGRESS | Нет | Деньги уже отправлены в банк. Изменение суммы невозможно |
| COMPLETED | Нет | Сделка успешно выплачена и закрыта |
| REJECTED | Да | Сделка была отклонена |
Пример
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/deals/6985de55458a10588ab84c73/act/send" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"amount": 10000,
"paymentPurpose": "Оплата по счету 456"
}'
Пример успешного ответа
{
"requestId": "29d7d5e3-3132-4e0d-afa2-025a2ffcb25d",
"result": {
"id": "6978cb90155e1f62d5150a73",
"offerId": "6978cb83155e1f62d5150a56",
"announcementId": 568,
"organisationId": "6942bde29c4ba8df5b14653f",
"executorId": "6964d3202c5f0714d4ef6c0e",
"status": "PROPOSED",
"amount": 10000,
"paymentPurpose": "Оплата по счету 456",
"stateChangedBy": "6942bde29c4ba8df5b14653f",
"declineComment": null,
"createdAt": "2026-01-27T14:28:32.634Z",
"updatedAt": "2026-02-10T11:38:42.929Z",
"phone": "+79998887766",
"firstName": "Иван",
"lastName": "Петров",
"middleName": "",
"inn": "111222333",
"advertisementName": "Test solum"
},
"success": true
}
Ответ (Response Body)
| Поле | Описание |
|---|
| requestId | Уникальный идентификатор запроса |
| success | Статус выполнения запроса |
| result | Объект, содержащий актуальные данные сделки после обновления |
| id | Уникальный системный идентификатор сделки |
| offerId | Идентификатор отклика (предложения), на основании которого была создана эта сделка |
| announcementId | Числовой ID объявления (задачи), к которому привязана данная сделка |
| organisationId | Уникальный идентификатор организации (заказчика), создавшей сделку |
| executorId | Внутренний ID исполнителя в Маркетплейсе (только для чтения). С исполнителями организации сопоставлять по inn |
| status | Текущий статус сделки. В данном контексте PROPOSED или AWAITING_PAYMENT после отправки акта |
| amount | Сумма выплаты, указанная в копейках |
| paymentPurpose | Текстовое назначение платежа, которое будет отображено в официальном акте и банковской выписке |
| stateChangedBy | Идентификатор пользователя или системного компонента, который последним изменил статус сделки |
| declineComment | Комментарий к причине отклонения сделки. Заполняется только в случае отказа |
| createdAt | Дата и время создания сделки |
| updatedAt | Дата и время последнего изменения сделки |
| phone | Контактный номер телефона исполнителя |
| firstName | Имя исполнителя |
| lastName | Фамилия исполнителя |
| middleName | Отчество исполнителя |
| inn | ИНН исполнителя |
| advertisementName | Краткое название (заголовок) услуги из исходного объявления |
Отправка сделок в оплату
Метод переводит сделку из статуса "Ожидает оплаты" в статус "Платеж в обработке" и запускает выплату исполнителю со счёта компании. Требует доступ org.deals.pay.
Для сделки создаётся реестр выплат (source: "DEALS", комментарий «Оплата сделок по задачам») с одной выплатой; реестр и выплата видны в разделе «Операции». Итог выплаты приходит асинхронно — см. «Итог выплаты» ниже.
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/deals/{dealId}/pay
Path Parameters
| Параметр | Описание |
|---|
| organisationId | Идентификатор организации |
| dealId | ID сделки, которую нужно оплатить |
Пример успешного запроса
curl --location --request POST "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/deals/698c28a82963623c3188c748/pay" \
--header "accept: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ"
Пример успешного ответа
{
"requestId": "87a5cbe2-2c67-45ad-a183-59fe9cbe71f2",
"result": {
"registry": {
"id": "6a1f3c2e-8b4d-4f7a-9e21-3c5d7b9a1f04",
"number": "17",
"isEdiEnabled": true,
"status": "PROCESSING",
"comment": "Оплата сделок по задачам",
"recipientType": "SELFEMPLOYED",
"totalSum": 10000,
"totalCommission": 0,
"paidSum": 0,
"paidCommission": 0,
"paymentsCount": 1,
"paymentsSuccessCount": 0,
"paymentsErrorCount": 0,
"paymentsProcessingCount": 1,
"createdAt": "2026-02-11T15:38:43.000Z",
"updatedAt": "2026-02-11T15:38:43.000Z",
"paidAt": "2026-02-11T15:38:43.000Z",
"source": "DEALS",
"createdBy": {
"id": "c7d2e1f0-4a3b-4c5d-8e9f-0a1b2c3d4e5f",
"name": "Иванов Иван Иванович"
}
},
"payout": {
"id": "0b8f6a52-3c1d-4e7a-9f2b-6d4c8e1a7b35",
"number": 1001,
"registryId": "6a1f3c2e-8b4d-4f7a-9e21-3c5d7b9a1f04",
"contractor": {
"id": "3f2a9c4e-7b1d-4a6e-8c5f-1e9d2b7a4c60",
"lastName": "Иванов",
"name": "Иван",
"middleName": "Петрович",
"inn": "842495811296"
},
"amount": 10000,
"purpose": "Оплата по счету 456",
"paymentMethod": {
"type": "BANK_CARD",
"details": {
"first4": "1111",
"last4": "4444"
}
},
"status": "CHECKED",
"paymentStatus": "IN_PROGRESS",
"failureReason": null,
"failureMessage": null,
"contract": {
"id": "9d4e2b1a-6c3f-4e8d-a7b5-2f1c0e9d8a76",
"name": "Договор оказания услуг",
"status": "SIGNED",
"url": "https://example.com/contract.pdf",
"signedUrl": "https://example.com/contract-signed.pdf",
"signedAt": "2026-02-01T10:00:00.000Z",
"createdAt": "2026-02-01T09:00:00.000Z"
},
"taxRetention": null,
"subjectType": "TASK_DEAL",
"subjectId": "698c28a82963623c3188c748",
"registrationAt": "2026-02-11T15:38:43.000Z",
"createdAt": "2026-02-11T15:38:43.000Z"
}
},
"success": true
}
Ответ (Response Body)
Основные поля ответа
| Поле | Описание |
|---|
| requestId | Уникальный идентификатор запроса |
| success | Общий статус выполнения операции |
| result | Контейнер, содержащий данные о реестре и выплате |
Поля объекта registry
| Поле | Тип | Описание |
|---|
| id | string (uuid) | Идентификатор реестра |
| number | string | Номер реестра в организации |
| isEdiEnabled | boolean | Требовать подписанный договор и выпускать акт по каждой выплате |
| status | string | Статус реестра: NEW, PREPROCESSED, CHECKED_SUCCESS, CHECKED_ERROR, PROCESSED_SUCCESS, PROCESSED_WITH_ERROR, ERROR, CHECKED_NO_PAYOUTS, PROCESSING |
| comment | string | Комментарий к реестру (опционально) |
| recipientType | string | Тип получателей: SELFEMPLOYED, PHYSICAL |
| totalSum | number | Сумма всех выплат реестра в копейках |
| totalCommission | number | Комиссия, удержанная финансовым сервисом по выплатам реестра с итогом, в копейках |
| paidSum | number | Сумма успешных выплат в копейках |
| paidCommission | number | Комиссия успешных выплат в копейках |
| paymentsCount | number | Количество выплат в реестре |
| paymentsSuccessCount | number | Количество успешных выплат |
| paymentsErrorCount | number | Количество выплат с ошибкой |
| paymentsProcessingCount | number | Количество выплат в обработке |
| createdAt / updatedAt | string | Дата создания и последнего обновления реестра (ISO 8601) |
| paidAt | string | Дата запуска оплаты (ISO 8601, опционально) |
| processedAt | string | Дата получения итогового статуса (ISO 8601, опционально) |
| sourceRegistryId | string (uuid) | Реестр, неуспешные выплаты которого повторяет этот (опционально) |
| source | string | Кто управляет реестром: MANUAL — кабинет, DEALS — оплата сделок. Реестр DEALS из кабинета не оплачивают, не правят и не удаляют |
| repeatedRegistryId | string (uuid) | Реестр-повтор этого реестра (опционально) |
| createdBy | object | Автор реестра: id — идентификатор пользователя (null — реестр создан системой), name — имя пользователя на момент создания |
Поля объекта payout
| Поле | Тип | Описание |
|---|
| id | string (uuid) | Идентификатор выплаты; совпадает с platformPaymentId в выплатах сделки |
| number | number | Числовой номер выплаты; совпадает с platformPaymentNumber в выплатах сделки |
| registryId | string (uuid) | Реестр выплаты |
| contractor | object | Исполнитель: id (UUID исполнителя в организации), lastName, name, middleName, inn |
| amount | number | Сумма выплаты (до удержания налога) в копейках |
| purpose | string | Назначение платежа |
| paymentMethod | object, null | Способ выплаты: type и details (состав зависит от типа, см. «Поля способа выплаты» выше); null — реквизит не выбран |
| status | string | Статус выплаты: NEW, CHECKED, ERROR, PAYING, PAYED_SUCCESS, PAYED_ERROR, PAYED_LIMITS_ERROR, MANUAL_PAY, NETWORK_ERROR, ON_SIGN, SIGNED, DECLINED, REPEATED_PAYMENT, NOT_HAVE_MONEY, CANCELLATION, CANCELED |
| substatus | string | Детализация статуса выплаты (опционально) |
| paymentStatus | string | Упрощённый статус: DRAFT, IN_PROGRESS, SUCCESS, FAILED |
| failureReason | string, null | Причина ошибки выплаты (значения — как в «Субстатусах выплаты» выше); null — ошибки нет |
| failureMessage | string, null | Текст ошибки — от проверки перед оплатой или от финансового сервиса |
| contract | object | Договор (опционально): id, name, status, url, signedUrl, signedAt, createdAt |
| taxRatePercent | number | Налоговая ставка в процентах (у исторических выплат, опционально) |
| partnerCommission | number | Комиссия платформы по тарифу в копейках (опционально) |
| taxRetention | number, null | Налог, удержанный в копилку исполнителя, в копейках; null — без удержания |
| subjectType | string | Предмет выплаты; для оплаты сделки — TASK_DEAL |
| subjectId | string | Идентификатор предмета выплаты — ID сделки |
| registrationAt | string | Дата проведения выплаты (итогового статуса), а до неё — дата создания (ISO 8601) |
| createdAt | string | Дата создания выплаты (ISO 8601) |
Итог выплаты
Успешный ответ означает, что выплата прошла проверки и отправлена в обработку (paymentStatus: "IN_PROGRESS"), а не что деньги уже перечислены. Баланс счёта и лимиты тарифа проверяет финансовый сервис при проведении операции, поэтому отказы по ним (BALANCE_ERROR — не хватило средств, PAYOUT_LIMIT_EXCEEDED — превышен лимит тарифа) в ответе метода не приходят: они становятся итогом выплаты.
Итог отслеживайте по сделке: получите сделку по ID и проверьте status, lastPaymentStatus, lastPaymentSubstatus и выплату в payments[], либо найдите выплату в разделе «Операции» по payout.id. При успехе сделка переходит в COMPLETED. При неуспешной выплате сделка, как правило, возвращается в AWAITING_PAYMENT, и оплату можно повторить (см. «Субстатусы выплаты» выше).
Таблица возможных ошибок
Если сделку не удалось отправить в оплату, метод отвечает ошибкой 400 с кодом OPERATION_FAILED, а сделка остаётся в статусе AWAITING_PAYMENT (откат статуса может занять несколько секунд). Исключение — сбой, при котором исход запуска оплаты неизвестен: сделка остаётся в PAYMENT_IN_PROGRESS, пока сверка не установит исход.
| Категория проблемы | Текст ошибки в поле message | Причина |
|---|
| Сделка | Сделка не найдена | Сделки с таким ID нет в организации |
| Неверный статус | Сделка имеет неверный статус для данной операции: PROPOSED (ожидается: AWAITING_PAYMENT) | Сделка ещё на согласовании |
| Неверный статус | Сделка имеет неверный статус для данной операции: WORK_IN_PROGRESS (ожидается: AWAITING_PAYMENT) | Исполнитель ещё не закончил работу |
| Неверный статус | Сделка имеет неверный статус для данной операции: PAYMENT_IN_PROGRESS (ожидается: AWAITING_PAYMENT) | Оплата уже запущена |
| Неверный статус | Сделка имеет неверный статус для данной операции: COMPLETED (ожидается: AWAITING_PAYMENT) | Оплата по этой сделке уже успешно завершена |
| Сумма | Сумма сделки {dealId} не задана или равна нулю | В сделке нет суммы к оплате |
| Ограничение | ИНН {inn} - сотрудничество с исполнителем ограничено | На исполнителя заведено ограничение сотрудничества |
| Исполнитель | Исполнитель не найден в организации | Исполнитель не подключён к организации |
| Исполнитель | Исполнитель не активен в организации | Связь организации с исполнителем не активна |
| Налоги / НПД | Исполнитель не привязал платформу как партнёра в «Мой налог» | Нет привязки платформы в «Мой налог» |
| Реквизиты | У исполнителя нет реквизитов для выплаты | У исполнителя не привязана карта, счёт или СБП |
| Реквизиты | Тип реквизитов не поддерживается | Выбранный тип реквизитов не поддерживается |
| Договор | Нет подписанного договора с исполнителем | Реестр с ЭДО требует подписанного договора |
| Повтор | Сделка {dealId} не переведена в оплату: время на оплату пачки истекло (...), повторите оплату | Оплату нужно повторить |
Все ошибки приходят в стандартном формате
{
"requestId": "74a00162-35fd-4a7f-bb38-8d358e1eb457",
"error": {
"code": "OPERATION_FAILED",
"message": "ID: 698ccdd.... - [ТЕКСТ ОШИБКИ ИЗ ТАБЛИЦЫ]",
"params": []
},
"success": false
}
Отмена сделки
Метод позволяет компании отменить одну сделку по её уникальному идентификатору. После успешного выполнения запроса возвращается актуальное состояние сделки со статусом CANCELLED.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/deals/{dealId}/cancel
Path Parameters
| Параметр | Описание |
|---|
| organisationId | Идентификатор организации |
| dealId | Идентификатор сделки |
Request Body
| Поле | Тип | Обязательно | Описание |
|---|
| declineComment | string | Нет | Комментарий к причине отмены сделки |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/deals/6985de55458a10588ab84c73/cancel" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"declineComment": "Произошла непредвиденная ситуация"
}'
Пример успешного ответа
{
"requestId": "f55c9e1f-9d4f-4f2d-8a6a-b6f3e89f4621",
"result": {
"id": "6985de55458a10588ab84c73",
"offerId": "6978cb83155e1f62d5150a56",
"announcementId": 568,
"organisationId": "6942bde29c4ba8df5b14653f",
"executorId": "6964d3202c5f0714d4ef6c0e",
"status": "CANCELLED",
"amount": 10000,
"paymentPurpose": "Оплата по счету 456",
"stateChangedBy": "6942bde29c4ba8df5b14653f",
"declineComment": "Произошла непредвиденная ситуация",
"createdAt": "2026-01-27T14:28:32.634Z",
"updatedAt": "2026-02-10T12:05:18.929Z",
"phone": "+79998887766",
"firstName": "Иван",
"lastName": "Петров",
"middleName": "",
"inn": "111222333",
"advertisementName": "Test solum"
},
"success": true
}
Ответ (Response Body)
| Поле | Описание |
|---|
| requestId | Уникальный идентификатор запроса |
| success | Статус выполнения запроса |
| result | Объект, содержащий актуальные данные сделки после отмены |
| id | Уникальный системный идентификатор сделки |
| offerId | Идентификатор отклика (предложения), на основании которого была создана сделка |
| announcementId | Числовой ID объявления (задачи), к которому привязана данная сделка |
| organisationId | Уникальный идентификатор организации (заказчика), создавшей сделку |
| executorId | Внутренний ID исполнителя в Маркетплейсе (только для чтения). С исполнителями организации сопоставлять по inn |
| status | Текущий статус сделки. После успешной отмены принимает значение CANCELLED |
| amount | Сумма выплаты, указанная в копейках |
| paymentPurpose | Назначение платежа |
| stateChangedBy | Идентификатор пользователя или системного компонента, который последним изменил статус сделки |
| declineComment | Комментарий к причине отмены сделки |
| createdAt | Дата и время создания сделки |
| updatedAt | Дата и время последнего изменения сделки |
| phone | Контактный номер телефона исполнителя |
| firstName | Имя исполнителя |
| lastName | Фамилия исполнителя |
| middleName | Отчество исполнителя |
| inn | ИНН исполнителя |
| advertisementName | Краткое название (заголовок) услуги из исходного объявления |