Several payments of the same type (split payment)
One receipt may be paid by several payments of the same type — for example half by one card and half by another. Declare each payment as its
own extraPayments entry:
"extraPayments": [
{ "code": "V", "amount": 3000 },
{ "code": "V", "amount": 7000 }
]
Rules:
- A payment type must not be declared in both
paymentsandextraPayments. Sendingpayments.cashlessAmounttogether with anextraPaymentsentry of codeVis rejected as ambiguous (business-rule error, no dedicatedcode— see §12.3). UseextraPaymentsonly. - At most 5 card (terminal) payments per receipt.
- The payments block and
extraPaymentsmay be combined for different types, e.g.payments.cashAmountplus twoextraPaymentscards. - With a bank terminal enabled, each card payment is charged as a separate terminal operation, one after another. Allow for that in your request timeout: the total time is the sum of the individual terminal operations.
- Top-level
rrn,auth,cardNum,bankName,binNameof the success response describe the first card payment only, kept for backwards compatibility. For a receipt paid by several cards, readtotalPayments— every entry carries its own terminal data.
Partially paid receipt
If one card is charged and a later one is declined or fails, the receipt is not fiscalized and the already charged money is not reversed automatically — reversing it without being asked could leave the customer refunded with no record, and the terminal may not even support cancel. The response is an error with the current state of the receipt:
| Field | Type | Notes |
|---|---|---|
paidAmount | integer (int64) | Amount already charged |
dueAmount | integer (int64) | Amount still to be paid |
totalPayments | array of payment entries | Each entry carries settled — whether its money was taken |
Two ways forward, both driven by you:
- Settle the rest — repeat the same request with the same
documentExtID. The already charged payments are kept as they are and only the unsettled ones are sent to the terminal again. - Cancel the receipt — call
/abortwith the samedocumentExtID. Every charged terminal payment is reversed and the document is deleted. If any reversal fails,/abortreturns an error and the document is left in place for a retry — never treat a failed/abortas a cancelled receipt.