| Product ID | Product Name | Behavior Summary |
|---|---|---|
9992 | DummyBills | Full flow: invoice query + payment simulation |
9989 | DummyBills2 | Simplified flow: direct payment without invoice query |
9992 (Full Flow)9989 (Simplified Flow)GET /bill-payment/parameters/{terminalId}/{operatorId}operatorId = 9992 or 9989{
"rc": 0,
"message": "OK",
"front": [
{
"name": "account",
"label": "Contract or Account Number",
"type": "INPUT",
"list": [],
"minLength": 6,
"maxLength": 12
}
],
"query": [
"account"
],
"pay": [
"account"
]
}account, which determines both the invoice type and the simulated payment result.POST /bill-payment/invoices/{terminalId}/{operatorId}[
{
"key": "account",
"value": "123002"
}
]
account| Ends With | Payment Type | Customer Name | Transaction Code |
|---|---|---|---|
000 | OPEN | James May | ABC123XYZ2 |
001 | DISCRETE | Jeremy Clark | ABC123XYZ |
002 | TOTAL | Richard Hammond | ABC123XYZ3 |
| Other | Same behavior as "000" | โ | โ |
additionalData.account{
"rc": 0,
"message": "OK",
"additionalData": [
{
"key": "customerName",
"value": "Richard Hammond"
},
{
"key": "transactionCode",
"value": "ABC123XYZ3"
}
],
"pendingInvoices": 1,
"amountToSendX100": 7000,
"destinationAmountX100": 7000,
"serviceFeeX100": 0,
"totalAmountX100": 7000,
"destinationCurrency": "EUR",
"items": [
{
"amountToSendX100": 7000,
"destinationAmountX100": 7000,
"serviceFeeX100": 0,
"totalAmountX100": 7000,
"destinationCurrency": "EUR",
"date": "2025-07-08",
"expirationDate": "2025-08-08",
"invoiceReference": "INV-XYZ-0003",
"isElegible": true
}
],
"paymentType": "TOTAL"
}isElegible and paymentType in Invoice Query Response9992, the invoice query response provides two key fields that influence the logic of the payment flow: isElegible and paymentType. Here's what they mean and how to handle them in your integration:isElegibleitems[] arraybooleanisElegible: true/bill-payment/payment.isElegible: falseExample: "isElegible": trueโ Invoice is selectable and may be paid.
paymentTypestring| Value | Meaning |
|---|---|
"OPEN" | Amount is flexible. Payment can be partial or undefined. |
"DISCRETE" | Specific invoices must be selected individually and paid separately. |
"TOTAL" | The entire balance must be paid in a single transaction. |
Example: "paymentType": "TOTAL"โ The frontend should prompt payment of the full amount listed in amountToSendX100. Invoice deselection or partial payment is not allowed.
isElegible correctly:false.additionalData for clarity.paymentType:OPEN, allow user to enter amount.DISCRETE, show individual invoices.TOTAL, display single pay button for full amount.paymentType or how to simulate multiple invoices within items[] ๐งพโจPOST /bill-payment/payment/{terminalId}/{operatorId}/{localReference}{
"amountToSendX100": 7000,
"localDateTime": "2025-07-08T10:00:00Z",
"beneficiaryPhoneNumber": "+34600000000",
"additionalData": [
{
"key": "account",
"value": "123002"
}
]
}
9992, where the paymentType determined during the invoice query was "TOTAL".invoiceNumbers, since individual item selection is disabled.additionalData array contains the "account" as a key-value pair, which is required to identify the payment context:[
{
"key": "account",
"value": "123002"
}
]amountToSendX100 = 7000 โ this simulates a payment of โฌ70.00localDateTime marks the timestamp of the simulated payment request:"localDateTime": "2025-07-08T10:00:00Z"account| Starts With | Simulated Result | Description |
|---|---|---|
1 | โ Approved | Payment accepted |
2 | โ DENIED_FROM_PROVIDER | Simulated rejection |
3 | โ TIMEOUT_OR_COMMUNICATION | Simulated network error |
| Other | โ SYSTEM_ERROR | Generic failure |
Example: account = "234567"โ starts with2โ triggers DENIED_FROM_PROVIDER
| Product ID | Account Value | Invoice Type | Payment Result |
|---|---|---|---|
9992 | 123000 | OPEN | Approved (starts with 1) |
9992 | 456001 | DISCRETE | Rejected (starts with 2) |
9992 | 789002 | TOTAL | Timeout (starts with 3) |
9989 | 345678 | โ | Timeout (starts with 3) |
9992, invoice query is mandatory before payment.9989, payment can be executed directly.account suffix to simulate invoice type, and prefix to simulate payment result.resultcode, resultmessage, and finalstatus in responses.