Счета и организации
Оплата от юридического лица через API: сохранить реквизиты организации, выставить счёт и скачать его в PDF.
Счёт выставляется одной из сохранённых организаций аккаунта. Сначала сохраните организацию, затем выставляйте ей счета. Баланс пополняется сам, когда банк увидит оплату. Как это выглядит в кабинете — в статье Баланс и оплата.
Методы
| Метод | Право | Что делает |
|---|---|---|
GET /payments/companies | billing:read | Сохранённые организации; та, что использовалась последней, первая |
POST /payments/companies | billing:write | Сохранить организацию |
PUT /payments/companies/{id} | billing:write | Заменить реквизиты сохранённой организации |
DELETE /payments/companies/{id} | billing:write | Удалить организацию из сохранённых |
POST /payments/invoices | billing:write | Выставить счёт организации |
GET /payments/invoices/{id}/pdf | billing:read | Счёт в PDF |
Сохранить организацию
curl -X POST https://api.aitunnel.ru/v1/aitunnel/payments/companies \
-H "Authorization: Bearer sk-aitunnel-mgmt-xxx" \
-H "Content-Type: application/json" \
-d '{
"type": "legal",
"name": "ООО «Ромашка»",
"inn": "7707083893",
"kpp": "773601001",
"email": "buh@romashka.example",
"accountant_phone": "+7 999 123-45-67"
}'Ответ 201 — сохранённая организация:
JSON
{
"id": "3f9c2a71-5b8e-4d0a-9c6f-1e2d7b4a8c05",
"type": "legal",
"name": "ООО «Ромашка»",
"inn": "7707083893",
"kpp": "773601001",
"email": "buh@romashka.example",
"address": "г. Москва, ул. Вавилова, д. 19",
"accountant_phone": "79991234567",
"has_payments": false,
"contract_number": null,
"contract_date": null,
"edo_status": "unknown",
"edo_operator": null,
"edo_requested_at": null,
"edo_invited_at": null
}| Поле | Смысл |
|---|---|
id | Идентификатор организации — строка UUID. Это company_id счёта и оплаты по СБП и {id} в путях |
type | legal — организация, individual — индивидуальный предприниматель. Обязательно |
name | Название, от 2 до 255 символов, без < и >. Обязательно |
inn | ИНН: 10 цифр у организации, 12 у предпринимателя; контрольные цифры проверяются. Обязательно |
kpp | КПП, 9 символов. Обязателен для legal; у предпринимателя его нет — в ответе null |
email | Куда банк пришлёт счёт. Не указан — на почту аккаунта |
address | Адрес, от 5 до 512 символов. Не указан — берётся юридический адрес из реестра |
accountant_phone | Телефон бухгалтера, российский номер в любом привычном написании. В ответе — 11 цифр: 79991234567 |
has_payments | На организацию уже выставляли счёт или ссылку СБП. Только в ответе |
contract_number, contract_date | Договор с этим клиентом, если он заключён: на него ссылаются закрывающие документы. Только в ответе |
edo_status, edo_operator, edo_requested_at, edo_invited_at | Подключение к ЭДО, см. закрывающие документы. Только в ответе |
- Организация с теми же ИНН и КПП не создаётся второй раз:
POSTперезаписывает сохранённую. PUT /payments/companies/{id}принимает те же поля и заменяет реквизиты целиком: необязательное поле, которое не передано, очищается.DELETE /payments/companies/{id}отвечает204. Выставленные счета хранят свою копию реквизитов и не меняются.- В аккаунте — до 20 организаций.
Выставить счёт
curl -X POST https://api.aitunnel.ru/v1/aitunnel/payments/invoices \
-H "Authorization: Bearer sk-aitunnel-mgmt-xxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 20000,
"company_id": "3f9c2a71-5b8e-4d0a-9c6f-1e2d7b4a8c05"
}'Ответ 201:
JSON
{
"payment": {
"id": 530118264,
"status": "pending",
"provider": "tbank_invoice",
"source": "checkout",
"amount": 20000,
"bonus_amount": 0,
"refunded_amount": 0,
"card_pan": null,
"payment_url": "https://business.tbank.ru/invoice/530118264.pdf",
"payer_name": "ООО «Ромашка»",
"payer_inn": "7707083893",
"created_at": "2026-11-14T13:16:00.000Z",
"paid_at": null,
"receipt_url": null
},
"incoming_invoice_url": "https://business.tbank.ru/incoming-invoice/abc",
"sent_to": "buh@romashka.example"
}| Поле | Смысл |
|---|---|
payment | Платёж, которым счёт будет оплачен. Его id — номер счёта, payment_url — PDF счёта от банка |
incoming_invoice_url | Где клиент Т-Банка оплачивает счёт в один клик. null, если банк такой ссылки не дал |
sent_to | На какой адрес банк отправил счёт |
amount— целые рубли, от 10 000 до 100 000 000.company_id—idсохранённой организации, строка UUID. Не UUID — ошибка400по полюcompany_id; UUID чужой или удалённой организации —404.- Банк отправляет счёт на почту организации. Счёт сам денег не списывает: баланс пополнится, когда организация оплатит его переводом.
- Оплачен ли счёт, показывает
GET /payments/{id}с номером изpayment.id: статус станетsucceeded. - Бонус за пополнение на оплату от организации не начисляется: сумма на балансе равна сумме в счёте и в закрывающих документах.
- Оплата по СБП от организации —
POST /paymentsс"method": "company_sbp", см. платежи.
Счёт в PDF
GET /payments/invoices/{id}/pdf отдаёт наш печатный счёт по номеру платежа: Content-Type: application/pdf.
cURL
curl -o invoice.pdf https://api.aitunnel.ru/v1/aitunnel/payments/invoices/530118264/pdf \
-H "Authorization: Bearer sk-aitunnel-mgmt-xxx"Ошибки
| Статус | Смысл |
|---|---|
400 | invalid_request — неверные реквизиты или сумма (error.metadata.fields). metadata.code: company_exists — организация с таким ИНН и КПП уже сохранена, company_limit — сохранено 20 организаций, too_many_unpaid_invoices — слишком много неоплаченных счетов за сутки, payment_method_unavailable — счета сейчас не выставляются, payment_provider_refused — банк не принял счёт |
401 | authentication_failed — ключа нет, он неверный, отозван или истёк |
403 | permission_denied — у ключа нет нужного права, IP не в списке разрешённых или метод вызван API-ключом |
404 | not_found — «Организация не найдена» (в том числе когда {id} в пути — не UUID) или «Счёт не найден» |
503 | provider_unavailable — банк недоступен, повторите позже |