SplitPay

Списания

Жизненный цикл списания, отмена и повторы

Создание

POST
/v1/charges

Авторизация

bearer
АвторизацияBearer <токен>

Где: header

Заголовки

Idempotency-Key*string

8-128 символов [A-Za-z0-9._:-], уникальный для каждой операции

Шаблон^[A-Za-z0-9._:-]{8,128}$

Тело запроса

application/json

Типы TypeScript

Используйте тип request body в TypeScript.

Тело ответа

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/charges" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "externalId": "string",    "cardId": "f16ba382-eb42-481a-b08f-c57bdc9aae24",    "amount": 100  }'
{  "success": true,  "meta": {    "requestId": "string",    "timestamp": "2019-08-24T14:15:22Z",    "processingTimeMs": 0  },  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "externalId": "string",    "cardId": "f16ba382-eb42-481a-b08f-c57bdc9aae24",    "status": "CREATED",    "amount": 0,    "fee": 0,    "feeBps": 0,    "recipients": [      {        "recipientId": "afdd332c-8290-47b9-aca2-368bf5f25a9d",        "share": 0,        "amount": 0      }    ],    "split": {      "status": "NOT_STARTED"    },    "fiscal": {      "status": "NOT_STARTED",      "receiptUrl": "string"    },    "failureReason": "string",    "createdAt": "2019-08-24T14:15:22Z",    "succeededAt": "2019-08-24T14:15:22Z"  }}

POST /v1/charges списывает amount с карты и возвращает результат сразу:

statusЧто значит
SUCCEEDEDДеньги списаны
FAILEDБанк отказал; причина - в failureReason. HTTP-ответ при этом 201
CREATEDИсход у провайдера неизвестен (сбой связи). Мы сверим его сами - не повторяйте с другим externalId
REVERSEDСписание отменено

externalId - номер вашего заказа, уникален в рамках мерчанта. Повтор с тем же externalId, картой и суммой вернёт существующее списание; с другими параметрами - ошибку 409.

После оплаты

GET
/v1/charges/{id}

Авторизация

bearer
АвторизацияBearer <токен>

Где: header

Параметры пути

id*string
Форматuuid

Тело ответа

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/charges/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "success": true,  "meta": {    "requestId": "string",    "timestamp": "2019-08-24T14:15:22Z",    "processingTimeMs": 0  },  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "externalId": "string",    "cardId": "f16ba382-eb42-481a-b08f-c57bdc9aae24",    "status": "CREATED",    "amount": 0,    "fee": 0,    "feeBps": 0,    "recipients": [      {        "recipientId": "afdd332c-8290-47b9-aca2-368bf5f25a9d",        "share": 0,        "amount": 0      }    ],    "split": {      "status": "NOT_STARTED"    },    "fiscal": {      "status": "NOT_STARTED",      "receiptUrl": "string"    },    "failureReason": "string",    "createdAt": "2019-08-24T14:15:22Z",    "succeededAt": "2019-08-24T14:15:22Z"  }}
GET
/v1/charges

Авторизация

bearer
АвторизацияBearer <токен>

Где: header

Параметры запроса

page?integer
Диапазон1 <= value
По умолчанию1
limit?integer
Диапазон1 <= value <= 100
По умолчанию20

Тело ответа

application/json

application/json

application/json

curl -X GET "https://example.com/v1/charges"
{  "success": true,  "meta": {    "requestId": "string",    "timestamp": "2019-08-24T14:15:22Z",    "processingTimeMs": 0,    "pagination": {      "page": 0,      "limit": 0,      "totalItems": 0,      "totalPages": 0    }  },  "data": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "externalId": "string",      "cardId": "f16ba382-eb42-481a-b08f-c57bdc9aae24",      "status": "CREATED",      "amount": 0,      "fee": 0,      "feeBps": 0,      "recipients": [        {          "recipientId": "afdd332c-8290-47b9-aca2-368bf5f25a9d",          "share": 0,          "amount": 0        }      ],      "split": {        "status": "NOT_STARTED"      },      "fiscal": {        "status": "NOT_STARTED",        "receiptUrl": "string"      },      "failureReason": "string",      "createdAt": "2019-08-24T14:15:22Z",      "succeededAt": "2019-08-24T14:15:22Z"    }  ]}

Распределение и чек выполняются в фоне:

  • split.status: PENDING → COMPLETED (обычно секунды). При сбоях - автоматические повторы, затем FAILED и ручной повтор поддержкой.
  • fiscal.status: после Split → COMPLETED, ссылка на чек - fiscal.receiptUrl.

Отмена

POST
/v1/charges/{id}/reverse

Авторизация

bearer
АвторизацияBearer <токен>

Где: header

Параметры пути

id*string
Форматuuid

Тело ответа

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/charges/497f6eca-6276-4993-bfeb-53cbbbba6f08/reverse"
{  "success": true,  "meta": {    "requestId": "string",    "timestamp": "2019-08-24T14:15:22Z",    "processingTimeMs": 0  },  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "externalId": "string",    "cardId": "f16ba382-eb42-481a-b08f-c57bdc9aae24",    "status": "CREATED",    "amount": 0,    "fee": 0,    "feeBps": 0,    "recipients": [      {        "recipientId": "afdd332c-8290-47b9-aca2-368bf5f25a9d",        "share": 0,        "amount": 0      }    ],    "split": {      "status": "NOT_STARTED"    },    "fiscal": {      "status": "NOT_STARTED",      "receiptUrl": "string"    },    "failureReason": "string",    "createdAt": "2019-08-24T14:15:22Z",    "succeededAt": "2019-08-24T14:15:22Z"  }}

POST /v1/charges/{id}/reverse - только в день оплаты (по Ташкенту) и пока Split не выполнен. После распределения возврат оформляется через поддержку.

Получатели

POST
/v1/recipients

Авторизация

bearer
АвторизацияBearer <токен>

Где: header

Тело запроса

application/json

Типы TypeScript

Используйте тип request body в TypeScript.

Тело ответа

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/recipients" \  -H "Content-Type: application/json" \  -d '{    "kind": "SELF_EMPLOYED",    "fullName": "string",    "pinfl": "string"  }'
{  "success": true,  "meta": {    "requestId": "string",    "timestamp": "2019-08-24T14:15:22Z",    "processingTimeMs": 0  },  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "kind": "SELF_EMPLOYED",    "fullName": "string",    "pinfl": "string",    "tin": "string",    "status": "PENDING_VERIFICATION",    "rejectionReason": "string",    "createdAt": "2019-08-24T14:15:22Z"  }}
GET
/v1/recipients

Авторизация

bearer
АвторизацияBearer <токен>

Где: header

Параметры запроса

page?integer
Диапазон1 <= value
По умолчанию1
limit?integer
Диапазон1 <= value <= 100
По умолчанию20

Тело ответа

application/json

application/json

application/json

curl -X GET "https://example.com/v1/recipients"
{  "success": true,  "meta": {    "requestId": "string",    "timestamp": "2019-08-24T14:15:22Z",    "processingTimeMs": 0,    "pagination": {      "page": 0,      "limit": 0,      "totalItems": 0,      "totalPages": 0    }  },  "data": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "kind": "SELF_EMPLOYED",      "fullName": "string",      "pinfl": "string",      "tin": "string",      "status": "PENDING_VERIFICATION",      "rejectionReason": "string",      "createdAt": "2019-08-24T14:15:22Z"    }  ]}

Без поля recipients вся сумма уходит получателю мерчанта по умолчанию. Каждый получатель должен быть проверен платформой - иначе ответ 422 с кодом -6004.

На этой странице