Квартплата+ data API: ELS bills, EPD and meters
Квартплата+ оплата ЖКХ онлайн is a household bill-payment app from Квартплата+ for people in Russia managing housing and communal-service charges. Users can find bills by a street address or unified ELS number, submit water, electricity and heat meter readings, pay kindergarten fees, and scan a QR code on a paper kvitantsiya instead of typing the payment details. Its grouped checkout lets households settle several charges together, with saved-card and Google Pay / Apple Pay flows, while payment history and receipts help them check what has been paid. The Russian-language app has a Play rating of 4.6 from about 161,000 reviews and serves households looking for a dedicated alternative to bank bill-pay or individual utility-provider apps.
ELS-linked supplier charges connect elsAccount and addressId to paymentId, providerName, period and amount. Consolidated EPD statements add DEBT, PaymentUin and accrualBanStatus, with supplier identity carried by inn and recipient. Property-manager back offices can use those relationships to match household invoices to supplier accounts and separate outstanding debt from current-period charges.
Meter records associate counterId, serialNumber and unit with prevValue, newIndication and indicationDate; confirmation status and historical readings support meter-desk reconciliation. Payment-QR details contribute ls, PaymentUin and the billed amount to tenant-onboarding tools without relying on manual account entry.
Checkout baskets link selectedPaymentIdList to payToken, addressAmount, commissionSum, paymentsCommissionSum and minSum. Together with withoutCommission and the resulting operationId, these fields let bill-pay reconcilers compare fee totals, settlement states and receipt references. openData Studio turns this household billing, meter and payment data into callable open data for those integrations.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Send login OTP
POST
/v1/access/sms-challengesosintSends a one-time SMS code to the registered mobile so the next call can mint a session.
Auth: None. A mobile number receives the SMS code used to establish a session.
- phone
- telephoneNumber
- deviceId
- clientVersion
- locale
- otpId
- otpTimeout
- status
- success
POST /v1/access/sms-challenges HTTP/1.1 Content-Type: application/json X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Application-Id: <example-application-id> { "phone": "<example-phone>", "telephoneNumber": "<example-phone>", "deviceId": "<example-device-id>", "clientVersion": "1.0-example", "locale": "ru" }{ "success": true, "otpId": "otp-example-01", "otpTimeout": 60, "phone": "<example-phone>", "status": "SENT" }Confirm OTP and mint session
POST
/v1/access/verified-sessionsosintExchanges the SMS code for the session token that gates ELS lookup, EPD, meter and checkout calls.
Auth: None on this call. phone plus otp and otpId yield token / userAccountToken for later calls.
- phone
- otp
- otpId
- deviceId
- token
- userAccountToken
- userId
- userPhone
- fio
- sessionTimeout
- success
POST /v1/access/verified-sessions HTTP/1.1 Content-Type: application/json X-Device-Id: <example-device-id> X-Client-Version: 1.0-example { "phone": "<example-phone>", "otp": "<example-otp>", "otpId": "otp-example-01", "deviceId": "<example-device-id>" }{ "success": true, "token": "<example-session-token>", "userAccountToken": "<example-account-token>", "userId": "user-example-01", "userPhone": "<example-phone>", "fio": "Пример Пользователя", "sessionTimeout": 3600 }Search invoices by ELS
POST
/v1/household-bills/account-lookupopendataLooks up payable ЖКХ invoices for a unified ELS (единый лицевой счёт) and returns per-supplier amount, period and personal-account ls.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- elsAccount
- els
- city
- region
- address
- payments
- paymentId
- providerName
- serviceType
- period
- amount
- commission
- ls
- identifier
- categoryId
- DEBT
- PaymentUin
- total
- success
POST /v1/household-bills/account-lookup HTTP/1.1 Content-Type: application/json X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Application-Id: <example-application-id> X-Client-Sign: <example-signature> { "elsAccount": "ELS-EXAMPLE-01", "els": "ELS-EXAMPLE-01", "city": "Москва", "region": "Москва" }{ "success": true, "elsAccount": "ELS-EXAMPLE-01", "address": "ул. Тверская, д. 7, кв. 12", "payments": [ { "paymentId": "invoice-example-01", "providerName": "Example Utility", "serviceType": "heating", "period": "2026-09", "amount": 4520.35, "commission": 0, "ls": "account-example-01", "identifier": "ELS-EXAMPLE-01", "categoryId": "heat", "DEBT": 0, "PaymentUin": null } ], "total": 1 }Search invoices by address
GET
/v1/household-bills/location-lookupopendataResolves a city/street/house/flat into the household's invoices when the payer searches by address instead of ELS.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- city
- street
- house
- flat
- apartment
- postalCode
- addressId
- elsAccount
- payments
- paymentId
- providerName
- amount
- period
- ls
- success
GET /v1/household-bills/location-lookup?city=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&street=%D0%A2%D0%B2%D0%B5%D1%80%D1%81%D0%BA%D0%B0%D1%8F&house=7&flat=12&apartment=12 HTTP/1.1 X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature>{ "success": true, "addressId": "address-example-01", "city": "Москва", "street": "Тверская", "house": "7", "flat": "12", "apartment": "12", "postalCode": "125009", "elsAccount": "ELS-EXAMPLE-01", "payments": [ { "paymentId": "invoice-example-01", "providerName": "Example Utility", "amount": 4520.35, "period": "2026-09", "ls": "account-example-01" } ] }Read unified EPD charges
GET
/v1/household-bills/consolidated-statementopendataReturns the unified payment document (ЕПД) for the household: period total, debt, accrual-ban flags and per-supplier rows.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- elsAccount
- addressId
- period
- amount
- DEBT
- accrualBanStatus
- banOnAccrual
- items
- paymentId
- providerName
- serviceType
- PaymentUin
- orgInfo
- inn
- recipient
- success
GET /v1/household-bills/consolidated-statement?elsAccount=ELS-EXAMPLE-01&addressId=address-example-01 HTTP/1.1 X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature>{ "success": true, "elsAccount": "ELS-EXAMPLE-01", "addressId": "address-example-01", "period": "2026-09", "amount": 12840.50, "DEBT": 0, "accrualBanStatus": false, "banOnAccrual": false, "items": [ { "paymentId": "invoice-example-01", "providerName": "Example Utility", "serviceType": "heating", "amount": 4520.35, "PaymentUin": "0", "orgInfo": { "inn": "0000000000", "recipient": "Example Utility" } } ] }List supplier org-info
GET
/v1/household-bills/suppliersopendataLists the housing-service suppliers tied to the address, with INN, recipient name and personal-account ls.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- items
- orgInfo
- inn
- recipient
- providerName
- categoryId
- serviceType
- ls
- success
GET /v1/household-bills/suppliers?addressId=address-example-01 HTTP/1.1 X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature>{ "success": true, "items": [ { "orgInfo": { "inn": "0000000000", "recipient": "Example Utility", "providerName": "Example Utility" }, "categoryId": "heat", "serviceType": "heating", "ls": "account-example-01" } ] }List meters by address
GET
/v1/household-meters/locations/:addressIdopendataReturns every meter at the address with type, serial, unit and last accepted indication.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- addressId
- counters
- counterId
- counterType
- serialNumber
- unit
- prevValue
- prevIndication
- indicationDate
- groupId
- groupName
- success
GET /v1/household-meters/locations/address-example-01 HTTP/1.1 X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature>{ "success": true, "addressId": "address-example-01", "counters": [ { "counterId": "meter-water-example", "counterType": "coldWater", "serialNumber": "serial-water-example", "unit": "m3", "prevValue": 112.3, "prevIndication": 112.3, "indicationDate": "2026-08-25", "groupId": "water", "groupName": "Вода" }, { "counterId": "meter-power-example", "counterType": "electricity", "serialNumber": "serial-power-example", "unit": "kWh", "prevValue": 5401, "indicationDate": "2026-08-25" } ] }Submit meter indications
POST
/v1/household-meters/reading-batchesopendataPosts the household's current meter readings (water/power/heat) for the billing period.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- addressId
- indicationDate
- indications
- counterId
- newIndication
- prevValue
- unit
- status
- currentIndications
- success
POST /v1/household-meters/reading-batches HTTP/1.1 Content-Type: application/json X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature> { "addressId": "address-example-01", "indicationDate": "2026-09-25", "indications": [ { "counterId": "meter-water-example", "newIndication": 118.7, "prevValue": 112.3, "unit": "m3" } ] }{ "success": true, "status": "ACCEPTED", "indicationDate": "2026-09-25", "currentIndications": [ { "counterId": "meter-water-example", "newIndication": 118.7, "status": "CONFIRMED" } ] }Meter indication history
GET
/v1/household-meters/reading-recordsopendataPages previously accepted indications for one meter so the household can review what was sent.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- counterId
- serialNumber
- items
- indicationDate
- newIndication
- prevValue
- status
- success
GET /v1/household-meters/reading-records?addressId=address-example-01&counterId=meter-water-example HTTP/1.1 X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature>{ "success": true, "counterId": "meter-water-example", "serialNumber": "serial-water-example", "items": [ { "indicationDate": "2026-09-25", "newIndication": 118.7, "prevValue": 112.3, "status": "CONFIRMED" }, { "indicationDate": "2026-08-25", "newIndication": 112.3, "prevValue": 107.1, "status": "CONFIRMED" } ] }Prepare grouped checkout
POST
/v1/bill-checkouts/basketsopenfinanceBuilds a multi-invoice checkout basket and mints payToken with commission totals and the minimum payable sum.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- addressId
- selectedPaymentIdList
- kindergarten
- payToken
- groupId
- addressAmount
- commissionSum
- allCommissionSum
- paymentsCommissionSum
- minSum
- withoutCommission
- success
POST /v1/bill-checkouts/baskets HTTP/1.1 Content-Type: application/json X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature> { "addressId": "address-example-01", "selectedPaymentIdList": ["invoice-example-01", "invoice-example-02"], "kindergarten": false }{ "success": true, "payToken": "basket-example-01", "groupId": "group-example-01", "addressAmount": 8730.80, "commissionSum": 0, "allCommissionSum": 0, "paymentsCommissionSum": 0, "minSum": 1, "withoutCommission": true, "selectedPaymentIdList": ["invoice-example-01", "invoice-example-02"] }Make card payment
POST
/v1/bill-checkouts/card-settlementsopenfinanceCharges the selected saved card for the prepared basket and returns the operation id used to fetch a receipt.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- payToken
- cardId
- amount
- commissionSum
- binding
- operationId
- status
- receipt
- success
POST /v1/bill-checkouts/card-settlements HTTP/1.1 Content-Type: application/json X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature> { "payToken": "basket-example-01", "cardId": "card-example-01", "amount": 8730.80, "commissionSum": 0, "binding": true }{ "success": true, "operationId": "settlement-example-01", "status": "PAID", "amount": 8730.80, "commissionSum": 0, "payToken": "basket-example-01", "receipt": true }Pay with Google Pay / Apple Pay
POST
/v1/bill-checkouts/wallet-settlementsopenfinanceCompletes the prepared basket via Google Pay or Apple Pay using a 3DS cryptogram and configured merchant identifiers.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- payToken
- googlePay
- applePay
- CRYPTOGRAM_3DS
- merchantId
- gatewayMerchantId
- amount
- operationId
- xPayStatus
- status
- success
POST /v1/bill-checkouts/wallet-settlements HTTP/1.1 Content-Type: application/json X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature> { "payToken": "basket-example-01", "googlePay": true, "applePay": false, "CRYPTOGRAM_3DS": "<example-wallet-cryptogram>", "merchantId": "<example-merchant-id>", "gatewayMerchantId": "<example-merchant-id>", "amount": 8730.80 }{ "success": true, "operationId": "settlement-example-02", "xPayStatus": "PAID", "status": "PAID", "amount": 8730.80, "payToken": "basket-example-01" }List payment operations
GET
/v1/bill-ledger/entriesopenfinancePages the household's completed and in-flight bill payments with amount, period and supplier.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- page
- limit
- total
- hasMore
- items
- operationId
- status
- amount
- commissionSum
- period
- providerName
- elsAccount
- date
- success
GET /v1/bill-ledger/entries?page=0&limit=20 HTTP/1.1 X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature>{ "success": true, "page": 0, "limit": 20, "total": 2, "hasMore": false, "items": [ { "operationId": "settlement-example-01", "status": "PAID", "amount": 8730.80, "commissionSum": 0, "period": "2026-09", "providerName": "Example Utility", "elsAccount": "ELS-EXAMPLE-01", "date": "2026-09-26T10:14:00+03:00" } ] }Fetch operation receipt
GET
/v1/bill-ledger/entries/:operationId/proofopenfinanceReturns the paid-kvitantsiya receipt, including a PDF document reference and UIN, for one operation.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- operationId
- receipt
- amount
- commissionSum
- period
- elsAccount
- providerName
- PaymentUin
- url
- success
GET /v1/bill-ledger/entries/settlement-example-01/proof HTTP/1.1 X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature>{ "success": true, "operationId": "settlement-example-01", "receipt": true, "amount": 8730.8, "commissionSum": 0, "period": "2026-09", "elsAccount": "ELS-EXAMPLE-01", "providerName": "Example Utility", "PaymentUin": "0", "url": "/v1/bill-documents/settlement-example-01/receipt.pdf" }List saved cards
GET
/v1/bill-checkouts/saved-instrumentsopenfinanceLists cards the household has bound for one-tap ЖКХ checkout.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- cards
- cardId
- binding
- isDefault
- title
- success
GET /v1/bill-checkouts/saved-instruments HTTP/1.1 X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature>{ "success": true, "cards": [ { "cardId": "card-example-01", "binding": true, "isDefault": true, "title": "Visa •• 4412" } ] }Parse payment QR
POST
/v1/bill-imports/qr-detailsopendataDecodes a paper-kvitantsiya or ГИБДД QR into supplier, amount, UIN and personal-account fields ready for checkout.
Auth: Phone-OTP session using token / userAccountToken, with signed client headers X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign.
- qr
- providerName
- recipient
- inn
- amount
- PaymentUin
- period
- ls
- success
POST /v1/bill-imports/qr-details HTTP/1.1 Content-Type: application/json X-Device-Id: <example-device-id> X-Client-Version: 1.0-example X-Client-Sign: <example-signature> { "qr": "ST00012|Name=Example Utility|PersonalAcc=EXAMPLE|BankName=Example Bank|BIC=EXAMPLE|PayeeINN=0000000000|Sum=452035|Purpose=Отопление 09.2026" }{ "success": true, "qr": "ST00012|...", "providerName": "Example Utility", "recipient": "Example Utility", "inn": "0000000000", "amount": 4520.35, "PaymentUin": "0", "period": "2026-09", "ls": "account-example-01" }
Data categories
- utility bills
- ELS accounts
- EPD charges
- meter readings
- payments
- saved cards
- receipts
- addresses
Where teams use this data
Property-manager ЖКХ reconciliation
A housing-ops back office pulls ELS invoices and unified EPD rows (amount, period, PaymentUin, DEBT) nightly and matches them to the building's supplier contracts and personal-account ls numbers.
Meter-desk indication ingest
A meter desk reads serialNumber, prevValue and indicationDate per counterId, then posts the household's newIndication batch so the next EPD period is billed on actual consumption rather than a norm.
Bill-pay commission audit
A payments reconcilers watches payToken baskets — addressAmount, commissionSum, minSum, withoutCommission — and the subsequent operationId status so kindergarten zero-fee promos and supplier fees land in the right ledger.
QR kvitantsiya onboarding
A tenant-onboarding flow parses a paper-bill QR into providerName, inn, recipient, amount and PaymentUin, then attaches the result to the household's addressId instead of typing an ELS by hand.
Frequently asked questions
How are household utility bills and EPD statements identified?
Bills can be located by a unified ELS number, represented by elsAccount, by city, street, house and flat, or from a paper-bill payment QR that supplies providerName, recipient, inn, amount, PaymentUin, period and ls. Address lookup supplies addressId and may also identify the linked ELS account; supplier invoices carry paymentId, period, amount and the personal-account ls. The consolidated EPD statement then adds the billing period, household amount and DEBT, with PaymentUin as the payment reference, orgInfo holding inn and recipient, and accrualBanStatus or banOnAccrual recording restrictions on new charges. Tenant-onboarding tools can use the QR fields to associate a charge with the right household account before checkout.
What meter-reading data is available?
Address-linked meters include counterId, counterType, serialNumber, unit and prevValue. Reading submissions pair newIndication with indicationDate; confirmation status and accepted-reading history support comparisons with earlier billing periods.
How do checkout fees and receipts fit together?
A selected-invoice basket carries payToken, addressAmount, commissionSum, paymentsCommissionSum, minSum and withoutCommission. Card or mobile-wallet completion produces operationId and payment status; the corresponding receipt includes amount, supplier, period and PaymentUin. Those links support fee and settlement reconciliation.
What authentication type does the illustrative API represent?
Phone OTP verification establishes token and userAccountToken for a household session. Subsequent requests use signed client headers, including X-Device-Id, X-Client-Version, X-Application-Id and X-Client-Sign. The paths, token values and document references shown here are illustrative examples, not production connection instructions.
Apps similar to Квартплата+ оплата ЖКХ онлайн
- Госуслуги Дом — Госуслуги Дом is the free GIS Housing and Utilities app: a verified Gosuslugi login loads the property so households can submit meter readings, pay utility bills, message the management company, vote at owners' meetings and answer the intercom.
- Оплата ЖКХ: за газ, свет, воду — Оплата ЖКХ: за газ, свет, воду is a Russia-wide GIS Housing and Utilities payment app for gas, electricity and water bills, meter readings and a single personal account, and its listing states it is not an official GIS or ministry app.
- Платосфера - оплата ЖКХ — Платосфера is Novosibirskenergosbyt's housing-and-utilities app for paying water, heat, electricity and other charges from a phone-number account, including several addresses in one checkout.
- Квартплата.Онлайн — Квартплата.Онлайн is the mobile client of kvartplata.online: it holds several apartments, shows charges and debts, accepts water and electricity meter readings, and pays receipts with a Russian Visa, Mastercard, Maestro or Mir card.
- Госуслуги — Госуслуги is the Russian e-government app from the Ministry of Digital Development, used to pay fines and state fees, file requests with agencies and store personal documents.
- Мой Мосэнергосбыт — Мой Мосэнергосбыт is Mosenergosbyt's account app for Moscow-area electricity supply plus Unified Payment Document charges from MosOblEIRTS, with reminders to submit meter readings and pay the bill.
- ЖКХ: Личный кабинет — ЖКХ: Личный кабинет is a resident cabinet for viewing accrual history and paying utilities by QR code or payee details, with a fuller account only after the management company or HOA connects to the app.
Topics
- kvartplata plus data API
- Квартплата+ ЖКХ
- Russian utility billing data
- ELS account lookup
- EPD statement fields
- household meter readings
- utility payment reconciliation
- payment QR details
- utility checkout fees
- kvitantsiya receipts
- единый лицевой счёт
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use