# Changelog

New fields in responses and callbacks are added without a new API version — ignore unknown
fields. Breaking changes are announced in advance.

## 2026-10-01 { #2026-10-01 }

**Callbacks** — the [Callbacks](callbacks.md) section is expanded.

- Delivery retries: 3 attempts — at once, after 30 and after 60 seconds (was 10 attempts
  over ~2.5 minutes). A manual resend by support is a single attempt.
- New sections: how delivery works, status changes after closing (`canceled` →
  `completed`, `completed` → `canceled`, a new `amount`), where a callback goes, how to
  handle it, what to do without a callback, common problems, test payments, checklist.

## 2026-09-30 { #2026-09-30 }

**API v1** — the payment and callback format now follows the final specification (before
any production integrations).

- `settlement` is renamed to `merchant_information`: `course` (was `exchange_rate`) and
  `rate` (was `fee_percent`) are now numbers with two decimals; `amount_rate` and
  `amount_usdt_rate` are the former `net_amount` and `net_amount_usdt`.
- The response gains `flow`, `is_test` and `updated_at`; the `bank` field is gone.
- A callback is a short event: `id`, `event_id`, amounts, `status`, `currency`,
  `payment_method`, `bank_code`, `merchant_payment_id`, `rate`, `course`, `is_intrabank`,
  `is_test`, `project_id`. Requisites and USDT amounts are in `GET /api/v1/payments/{id}`.
- The callback signature test vector is updated for the new body.

## 2026-09-29 { #2026-09-29 }

**Documentation**

- First version of the merchant documentation in Russian and English.
- Request signing and callback verification samples in curl, PHP, Python, Node.js and Go,
  checked against shared test vectors.
- Markdown pages, `llms.txt` and a docs MCP server for AI agents.

**API v1**

- `POST /api/v1/payments` creates a payment, `GET /api/v1/payments/{id}` reads it.
- Request: `merchant_payment_id` (1–64 characters `A-Za-z0-9._:-`), `amount` in major
  currency units, `payment_method`; optional `currency` (`RUB`), `geo_code` (`RU`),
  `bank_code`, `is_intrabank`, `callback_url`.
- The payment lifetime is a project setting, 15 minutes by default. A payment not paid
  within it becomes `canceled`, and a callback is sent.
- Response: the requisite's bank `bank` and the `settlement` — rate, fee and USDT amounts.
- Callbacks are sent for `completed` and `canceled`; the body is the same payment plus
  `event_id` and `project_id`.
- Rejections before the payment is accepted (`429`, `503`, signature, nonce replay, body
  size, invalid body or fields) do not take the `merchant_payment_id`.
- A `422` response carries `payment_id` when the payment was saved. A paused merchant gets
  `422 payment_not_routable`.