Skip to content

Split Payment

Split Payment va Split Payment Status

Split payment API

Endpoint details

Method: POST
URL: BASE_URL/merchant/splitPayment/
Header:

http
Authorization: Bearer <ACCESS_TOKEN>

Description:
Bitta tranzaksiya summasini bir nechta qabul qiluvchilar orasida taqsimlaydi. Har bir qabul qiluvchi ko‘rsatilgan summa bo‘yicha alohida sub-tranzaksiyani oladi. Jarayon muvaffaqiyatli yakunlansa, tranzaksiya split qilingan deb belgilanadi.

💡 Note: recipientId qiymatini xizmat ko‘rsatuvchi provayderdan (Paylov) oling.

Request body

FieldTypeRequiredDescription
transactionIdstringYesTranzaksiyaning noyob identifikatori
recipientsarrayYesTranzaksiyani qabul qiladigan qabul qiluvchilar ro‘yxati
recipients[].recipientIdstringYesQabul qiluvchining noyob identifikatori
recipients[].amountnumberYesQabul qiluvchiga ajratilgan summa
recipients[].itemsarrayNoQabul qiluvchi bilan bog‘liq mahsulotlar ro‘yxati
recipients[].items[].titlestringYesMahsulot nomi yoki sarlavhasi
recipients[].items[].pricenumberYesChegirmadan oldingi mahsulot narxi
recipients[].items[].discountnumberYesMahsulotga qo‘llangan chegirma
recipients[].items[].countnumberYesMahsulot soni
recipients[].items[].codestringYesMahsulotni aniqlovchi noyob kod
recipients[].items[].vat_percentnumberYesMahsulotga tegishli QQS foizi
recipients[].items[].package_codestringYesQadoq turini ifodalovchi kod
recipients[].items[].pinflstringNoSoliq to‘lovchining PINFL ma’lumoti
resendOFDbooleanNoMa’lumotni fiskal tizimga qayta yuborish kerakligini bildiruvchi flag

Request example

json
{
  "transactionId": "9b3bd7be-9327-4608-b886-4353e49df05f",
  "recipients": [
    {
      "recipientId": "string",
      "amount": 100,
      "items": [
        {
          "title": "string",
          "price": 0,
          "discount": 0,
          "count": 0,
          "code": "string",
          "vat_percent": 0,
          "package_code": "string",
          "tin": "string",
          "pinfl": "string"
        }
      ]
    },
    {
      "recipientId": "abda5234-16aq-4896-90a2-b095ff557654",
      "amount": 100
    }
  ],
  "resendOFD": false
}

Response

Muvaffaqiyatli bajarilganda quyidagi javob qaytadi:

json
{
  "result": {
    "transactionId": "<transaction_id>"
  }
}

💡 Note: Agar request body ichida items yuborilsa, tranzaksiya fiskal ma’lumot yaratish uchun OFD’ga yuboriladi. Tranzaksiya OFD’ga asinxron tarzda yuboriladi, ya’ni javobni kutib turmaydi. Yuqori yuklama sababli OFD tomonda kechikish bo‘lishi mumkin. To‘lov split qilingandan keyin status’ni alohida metod orqali tekshirishingiz mumkin. Agar response ichida OFD ma’lumoti bo‘lmasa, split payment request’ni resendOFD: true bilan qayta yuborishingiz kerak.

Error codes

  • permission_denied
  • transaction_not_found
  • split_already_done
  • invalid_amount
  • recipient_not_found

Example for recipient_not_found:

json
{
  "error": {
    "code": "recipient_not_found",
    "message": "One or more recipients not found.",
    "data": {
      "notFoundRecipientIds": [
        "<recipient_id>"
      ]
    }
  }
}

Implementation Notes

  • Permission Check: Merchant’da split payment uchun ruxsat borligini tekshiradi
  • Validation:
    • Tranzaksiya mavjudligini va avval split qilinmaganini tekshiradi
    • Qabul qiluvchilar summasi yig‘indisi tranzaksiya summasiga tengligini tekshiradi
    • Qabul qiluvchi merchantlar mavjudligini tekshiradi

Split payment status API

Endpoint details

Method: GET
URL: BASE_URL/merchant/splitPayment/status/?transactionId=your_transaction_id
Header:

http
Authorization: Bearer <ACCESS_TOKEN>

Description:
Split qilingan tranzaksiya bo‘yicha barcha sub-tranzaksiyalar statusini qaytaradi.

ParameterTypeDescriptionRequired
transactionIdstringAsosiy tranzaksiya identifikatoriYes

Response example
Muvaffaqiyatli bajarilganda:

json
{
  "result": [
    {
      "recipientId": "ccda5111-66a0-4896-90a2-b095ff558129",
      "amount": 100,
      "status": "paid",
      "createdAt": "2025-01-06 17:17:17"
    },
    {
      "recipientId": "ffddb832-4bd2-410c-a1d9-26dv9fefb111",
      "amount": 100,
      "status": "paid",
      "createdAt": "2025-01-06 17:17:17"
    }
  ]
}

Error codes

  • permission_denied
  • transaction_not_found
  • split_not_found

Implementation notes

  • Permission check: Merchant’da split payment uchun ruxsat borligini tekshiring
  • Transaction validation: Asosiy tranzaksiya mavjudligini va shu merchantga tegishli ekanini tekshiring
  • Status mapping:
    • paid
    • cancelled
    • check