Счета
При autoVat=true (по умолчанию) API сам определяет ставку НДС по регистрации НДС/OSS вашей компании и стране/номеру НДС клиента (внутренние продажи / reverse charge / OSS / экспорт). Нумерация без пропусков, общая с панелью. Удаления счетов через API нет — только отмена.
| Сценарий | Ставка | Примечание |
|---|---|---|
| Компания не зарегистрирована по НДС | 0 | Ручной taxRate>0 → 422 |
| Та же страна (внутр.) | Ставка страны продавца | напр. EE 24% |
| B2B внутри ЕС (с НДС-номером) | 0 | Reverse charge — vatNote автоматически |
| B2C внутри ЕС + OSS | Ставка страны покупателя | напр. DE 19% |
| B2C внутри ЕС без OSS | Ставка страны продавца | |
| Продажа за пределы ЕС | 0 | Экспортное освобождение |
Эндпоинты
POST
/invoicesПраво: write:invoicesПлатно (счётчик за счёт)
Выставляет счёт. autoVat включён по умолчанию.
Пример запроса
curl -X POST -H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
https://corpenza.com/api/external/accounting/invoices -d '{
"clientName": "Berlin GmbH",
"clientCountry": "DE",
"clientVatNumber": "DE123456789",
"items": [
{ "description": "Consulting", "quantity": 2, "unitPrice": 250 }
]
}'Пример ответа
{
"id": "inv_...",
"invoiceNumber": "CRP-202606-0042",
"taxRate": 0,
"total": 500,
"vatNote": "Reverse Charge - ...",
"vatReason": "Intra-EU B2B — Reverse Charge"
}GET
/invoicesПраво: read:invoicesСписок счетов (фильтры status, from, to, page, limit).
Пример запроса
curl -H "Authorization: Bearer $API_KEY" \
"https://corpenza.com/api/external/accounting/invoices?status=SENT&page=1&limit=20"GET
/invoices/{id}Право: read:invoicesДетали счёта (позиции + платежи).
POST
/invoices/{id}/cancelПраво: write:invoicesОтменяет счёт (без удаления). PAID отменить нельзя (409).