Почта России icon

Pochta Rossii (Russian Post) Data API

Почта России · Transport

Pochta Rossii (Почта России) signs into a versioned, token-authenticated JSON API. Parcel history is GET /v1/tracking/item; nearby branches post to POST /v1/offices/nearby; tariffs quote at GET /v1/tariffs/services and order at POST /v1/tariffs/order. Government charges live under /v1/charges/ and person-to-person transfers under /v1/transfers/.

Pochta Rossii is Russian Post's customer app for tracking mail, locating branches, quoting postage, paying government charges and sending person-to-person transfers. Signed-in traffic uses a versioned, token-authenticated JSON API: parcel records keyed by rpoId (barcode, sender, recipient, historyItems, forPayment), a geo post-office catalog (postalCode, workingHours, bookingAvailable), domestic and foreign tariff rows, a user profile (firstName, phone, hid, linkedEsia, bonusProgram), saved cards, government-charge search by vu/sts/uin/inn, and C2C create/pay that returns paymentLink and approveId.

Screenshots

  • Почта России screenshot 1
  • Почта России screenshot 2
  • Почта России screenshot 3
  • Почта России screenshot 4
  • Почта России screenshot 5
  • Почта России screenshot 6
  • Почта России screenshot 7
  • Почта России screenshot 8

API surface

  • Track parcel by RPO

    GET /v1/tracking/item opendata

    Returns a tracked item by rpoId: barcode, parties, destinationAddress, historyItems, customs/payment flags and storageTime.

    Auth: Session token sent as a bearer-style auth header, plus an API-version header.

    • rpoId
    • currentDateTime
    • triggeredByUser
    • barcode
    • itemName
    • title
    • itemType
    • sender
    • recipient
    • destinationAddress
    • weight
    • forPayment
    • mailTypeName
    • complexCode
    • customsPaymentStatus
    • historyItems
    • storageTime
    • showOfficeBookingButton

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/tracking/item?rpoId=RA123456789RU&currentDateTime=2026-09-27T12:00:00&triggeredByUser=true HTTP/1.1
    Authorization: Bearer <session-token>
    X-Api-Version: 9
    {
      "barcode": "RA123456789RU",
      "itemName": "Documents",
      "title": "Letter",
      "itemType": "LETTER",
      "sender": "Ivan Petrov",
      "recipient": "Anna Smirnova",
      "destinationAddress": "Moscow, Tverskaya 1",
      "weight": 120,
      "forPayment": 0,
      "mailTypeName": "Registered letter",
      "complexCode": "GRP-1",
      "customsPaymentStatus": "NONE",
      "historyItems": [{
        "operationType": "ARRIVED",
        "operationPlace": "125167"
      }],
      "storageTime": 15,
      "showOfficeBookingButton": true
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's parcel tracking screen
    • field set mirrors the tracking detail card shown for a barcode lookup
  • List tracked items

    GET /v1/tracking/items opendata

    Returns the signed-in user's tracked items (with EZP overlay) filtered by filters[] at currentDateTime.

    Auth: Session token sent as a bearer-style auth header, plus an API-version header.

    • currentDateTime
    • filters[]
    • barcode
    • itemName
    • title
    • sender
    • recipient
    • forPayment
    • ezpInfo

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/tracking/items?currentDateTime=2026-09-27T12:00:00&filters[]=ACTIVE HTTP/1.1
    Authorization: Bearer <session-token>
    X-Api-Version: 9
    {
      "items": [{
        "barcode": "RA123456789RU",
        "itemName": "Documents",
        "title": "Letter",
        "sender": "Ivan Petrov",
        "recipient": "Anna Smirnova",
        "forPayment": 0,
        "ezpInfo": null
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's tracked-items inbox
    • filter set matches the active/archive tabs in the tracking list
  • Find nearby post offices

    POST /v1/offices/nearby opendata

    Posts a geo search (latitude, longitude, searchRadius, top, type, hidePrivate) and returns nearby offices with hours, load and booking flags.

    Auth: Session token sent as a bearer-style auth header, plus an API-version header.

    • searchRadius
    • top
    • type
    • address
    • geoObject
    • hidePrivate
    • latitude
    • longitude
    • filters[]
    • postalCode
    • distance
    • addressSource
    • typeId
    • typeCode
    • isClosed
    • isTemporaryClosed
    • worksOnSaturdays
    • worksOnSundays
    • regionSettlement
    • bookingAvailable
    • bookingHasEmptySlots
    • workingHours
    • currentLoad

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/offices/nearby HTTP/1.1
    Authorization: Bearer <session-token>
    X-Api-Version: 9
    Content-Type: application/x-www-form-urlencoded
    
    searchRadius=2000&top=20&type=ALL&latitude=55.7558&longitude=37.6173&hidePrivate=true&currentDateTime=2026-09-27T12:00:00
    {
      "offices": [{
        "postalCode": "125167",
        "latitude": 55.7881,
        "longitude": 37.5417,
        "distance": 410.2,
        "addressSource": "Leningradsky pr-t, 37",
        "typeId": 1,
        "typeCode": "OPS",
        "isClosed": false,
        "isTemporaryClosed": false,
        "worksOnSaturdays": true,
        "worksOnSundays": false,
        "regionSettlement": "Moscow",
        "bookingAvailable": true,
        "bookingHasEmptySlots": true,
        "workingHours": [{"weekDayId": 1}],
        "currentLoad": {"hour": 12, "load": 0.4}
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's branch map and list flow
    • result shape mirrors the office cards with hours, load and slot-booking badges
  • Nearby pickup points

    GET /v1/offices/pickup opendata

    Lists pickup offices near ukdIndex/lat-long, optionally filtered by paymentUponReceipt, including electronicQueue.

    Auth: Session token sent as a bearer-style auth header, plus an API-version header.

    • ukdIndex
    • latitude
    • longitude
    • top
    • currentDateTime
    • paymentUponReceipt
    • postalCode
    • addressSource
    • typeCode
    • bookingAvailable
    • electronicQueue

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/offices/pickup?ukdIndex=125167&latitude=55.7558&longitude=37.6173&top=10&currentDateTime=2026-09-27T12:00:00&paymentUponReceipt=false HTTP/1.1
    Authorization: Bearer <session-token>
    X-Api-Version: 9
    {
      "offices": [{
        "postalCode": "125167",
        "latitude": 55.7881,
        "longitude": 37.5417,
        "addressSource": "Leningradsky pr-t, 37",
        "typeCode": "PVZ",
        "bookingAvailable": true,
        "electronicQueue": {"available": true}
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's pickup-point selector
    • response shape matches the pickup list with queue availability
  • List shipping products and services

    GET /v1/tariffs/services opendata

    Quotes available domestic products/services between indexFrom and indexTo for a given mass and parcel dimensions.

    Auth: Session token sent as a bearer-style auth header, plus an API-version header.

    • indexFrom
    • indexTo
    • addressFrom
    • addressTo
    • mass
    • length
    • width
    • height
    • product
    • way
    • weight
    • comment
    • maxWeight
    • needService
    • services
    • productOptions

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/tariffs/services?indexFrom=101000&indexTo=190000&addressFrom=Moscow&addressTo=Saint%20Petersburg&mass=500&length=20&width=15&height=10 HTTP/1.1
    Authorization: Bearer <session-token>
    X-Api-Version: 9
    {
      "products": [{
        "product": {
          "product": "PARCEL",
          "way": "GROUND",
          "weight": "UP_TO_2KG",
          "comment": "Parcel 1st class",
          "maxWeight": 2000.0,
          "needService": false,
          "services": ["SMS"],
          "productOptions": []
        },
        "services": {}
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's postage calculator flow
    • product rows mirror the quote screen for a from/to route and weight
  • Place a postage order

    POST /v1/tariffs/order opendata

    Creates a postage order (sender/recipient, mass, product, way) and returns barcode plus paymentURL / oneClickStatus.

    Auth: Session token sent as a bearer-style auth header, plus an API-version header.

    • localDate
    • indexFrom
    • indexTo
    • mass
    • product
    • way
    • weight
    • options
    • service
    • sender
    • senderAddress
    • senderPhone
    • recipient
    • recipientAddress
    • recipientPhone
    • value
    • cashSumm
    • cardUid
    • bonus
    • withDiscount
    • barcode
    • paymentURL
    • successURL
    • failedURL
    • cancelURL
    • sharedUrl
    • paymentKind
    • oneClickStatus

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/tariffs/order?localDate=2026-09-27T12:00:00 HTTP/1.1
    Authorization: Bearer <session-token>
    X-Api-Version: 9
    Content-Type: application/x-www-form-urlencoded
    
    indexFrom=101000&indexTo=190000&mass=500&product=PARCEL&way=GROUND&weight=UP_TO_2KG&options=&service=NONE&sender=Ivan%20Petrov&senderAddress=Moscow&recipient=Anna%20Smirnova&recipientAddress=Saint%20Petersburg&recipientAddressType=DEFAULT&withDiscount=false
    {
      "barcode": "RA123456789RU",
      "paymentURL": "https://pay.example/checkout",
      "successURL": "https://pay.example/ok",
      "failedURL": "https://pay.example/fail",
      "cancelURL": "https://pay.example/cancel",
      "sharedUrl": "https://tracking.example/RA123456789RU",
      "paymentKind": "CARD",
      "oneClickStatus": "AVAILABLE"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's send-a-parcel checkout
    • response mirrors the payment handoff shown after order creation
  • Get account profile

    GET /v1/account/profile osint

    Reads the signed-in profile: name, phone, email, hid, ESIA/PEP flags, validated address and nested bonusProgram.

    Auth: Session token sent as a bearer-style auth header, plus an API-version header.

    • firstName
    • middleName
    • lastName
    • phone
    • email
    • hid
    • marketPlaceId
    • isRegistered
    • linkedEsia
    • pepStatus
    • qrIdentityEnabled
    • isPassportValid
    • parcelByPhoneStatus
    • addressGuid
    • index
    • displayAddress
    • addressHid
    • normalizedAddressNoIndex
    • validationStatus
    • bonusProgram
    • bonusBalance

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/account/profile HTTP/1.1
    Authorization: Bearer <session-token>
    X-Api-Version: 9
    {
      "firstName": "Ivan",
      "middleName": "Sergeevich",
      "lastName": "Petrov",
      "phone": "+79001234567",
      "email": "[email protected]",
      "hid": "hid-9f3a",
      "marketPlaceId": "cust-441",
      "isRegistered": true,
      "linkedEsia": true,
      "pepStatus": "CONFIRMED",
      "qrIdentityEnabled": true,
      "isPassportValid": true,
      "parcelByPhoneStatus": "ENABLED",
      "address": {
        "addressGuid": "guid-1",
        "index": "101000",
        "displayAddress": "Moscow, Tverskaya 1",
        "addressHid": "addr-hid",
        "normalizedAddressNoIndex": "Tverskaya 1",
        "validationStatus": "VALID"
      },
      "bonusProgram": {
        "state": "ACTIVE",
        "bonusBalance": 240.5
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's account screen
    • field set matches the profile plus validated-address and loyalty summary blocks
  • Bonus loyalty profile

    GET /v1/loyalty/profile openfinance

    Returns the full loyalty snapshot: bonusBalance, burn, currentMonthSummary/totalSummary received vs spent, and c2cProfTariffs.

    Auth: Session token sent as a bearer-style auth header, plus an API-version header.

    • bonusProgram
    • state
    • bonusBalance
    • loyalty
    • burn
    • promotion
    • currentMonthSummary
    • totalSummary
    • received
    • spent
    • c2cProfTariffs

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/loyalty/profile HTTP/1.1
    Authorization: Bearer <session-token>
    X-Api-Version: 9
    {
      "bonusProgram": {
        "state": "ACTIVE",
        "bonusBalance": 240.5,
        "loyalty": {"level": "GOLD"},
        "burn": {"amount": 12.0}
      },
      "promotion": {"code": "SPRING"},
      "currentMonthSummary": {"received": 40.0, "spent": 15.0},
      "totalSummary": {"received": 800.0, "spent": 560.0},
      "c2cProfTariffs": []
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's loyalty and bonuses section
    • totals mirror the monthly and lifetime received-vs-spent charts
  • List saved payment cards

    GET /v1/wallet/cards openbanking

    Lists bound cards (id, visibleDigits, cardExpirationDate, paymentSystem) used for postage and GIS payments.

    Auth: Session token sent as a bearer-style auth header, plus an API-version header.

    • cards
    • id
    • visibleDigits
    • cardExpirationDate
    • paymentSystem

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/wallet/cards HTTP/1.1
    Authorization: Bearer <session-token>
    X-Api-Version: 9
    {
      "cards": [{
        "id": "card-uid-1",
        "visibleDigits": "1234",
        "cardExpirationDate": "12/28",
        "paymentSystem": "MIR"
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's saved-cards wallet screen
    • card rows mirror the masked selector shown at payment time
  • Search GIS / FNS charges

    GET /v1/charges/search openfinance

    Searches GIS/FNS charges by driver's license (vu), vehicle certificate (sts), uin or inn and returns payer/payee, kbk, oktmo and amountToPay.

    Auth: Session token sent as a bearer-style auth header; charges live in their own payments namespace.

    • vu
    • sts
    • uin
    • inn
    • withEns
    • payerIdentifier
    • supplierBillID
    • billDate
    • payerName
    • payeeInn
    • payeeKpp
    • payeeName
    • payeeBankBik
    • payeeCorrespondentBankAccount
    • payeeBankName
    • kbk
    • oktmo
    • totalAmount
    • discount
    • discountExpiry
    • amountToPay
    • offensePlace
    • offenseDate
    • legalAct
    • purpose

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/charges/search?vu=99AA123456&sts=77AB123456&uin=18840327140123456789&inn=7700000000&withEns=true HTTP/1.1
    Authorization: Bearer <session-token>
    X-Api-Version: 9
    {
      "charges": [{
        "payerIdentifier": "18840327140123456789",
        "supplierBillID": "18840327140123456789",
        "billDate": "2026-03-01",
        "payerName": "PETROV IVAN",
        "payeeInn": "7700000000",
        "payeeKpp": "770001001",
        "payeeName": "GIBDD",
        "payeeBankBik": "044525000",
        "payeeCorrespondentBankAccount": "30101810400000000225",
        "payeeBankName": "Bank",
        "kbk": "18811630020016000140",
        "oktmo": "45348000",
        "totalAmount": 1500.0,
        "discount": 750.0,
        "discountExpiry": "2026-03-20",
        "amountToPay": 750.0,
        "offensePlace": "Moscow",
        "offenseDate": "2026-02-10",
        "legalAct": "12.9",
        "purpose": "Traffic fine"
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's fines and charges search flow
    • charge rows mirror the bill detail shown before payment
  • Create GIS payment

    POST /v1/charges/payment openbanking

    Creates a CPS payment for a GIS uin (optional cardUid) and returns paymentReference.

    Auth: Session token sent as a bearer-style auth header; charges live in their own payments namespace.

    • uin
    • cardUid
    • transferNumber
    • description
    • redirectApprove
    • redirectDecline
    • redirectCancel
    • paymentReference

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/charges/payment HTTP/1.1
    Authorization: Bearer <session-token>
    X-Api-Version: 9
    Content-Type: application/json
    
    {
      "uin": "18840327140123456789",
      "cardUid": "card-uid-1",
      "transferNumber": "TR-1001",
      "description": "GIS charge",
      "redirectApprove": "pochta://pay/ok",
      "redirectDecline": "pochta://pay/fail",
      "redirectCancel": "pochta://pay/cancel"
    }
    {
      "paymentReference": "pay-9f3a1c"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's charge payment checkout
    • reference id matches the receipt shown after a successful payment
  • Create GIS money transfer

    POST /v1/charges/transfer openbanking

    Creates a GIS transfer from TransferParams and returns transferNumber plus payer identity (passport, addressRegStr, mobilephone).

    Auth: Session token sent as a bearer-style auth header, plus client and channel headers on the transfer call.

    • idToken
    • accessToken
    • uin
    • email
    • purpose
    • transferSum
    • payerIdentifier
    • transferNumber
    • firstName
    • lastName
    • middleName
    • mobilephone
    • mobileVrfStu
    • birthDate
    • passportSeries
    • passportNumber
    • passportIssueDate
    • passportIssueId
    • passportIssuedBy
    • addressRegStr
    • addressRegZipCode

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/charges/transfer HTTP/1.1
    Authorization: Bearer <session-token>
    X-Client: ANDROID
    X-Channel-Flag: true
    Content-Type: application/json
    
    {
      "idToken": "<id-token>",
      "accessToken": "<access-token>",
      "uin": "18840327140123456789",
      "email": "[email protected]",
      "purpose": "Transfer",
      "transferSum": 1500.0,
      "payerIdentifier": "18840327140123456789"
    }
    {
      "transferNumber": "TR-1001",
      "firstName": "Ivan",
      "lastName": "Petrov",
      "middleName": "Sergeevich",
      "mobilephone": "+79001234567",
      "mobileVrfStu": "VERIFIED",
      "birthDate": "1990-01-15",
      "passportSeries": "4500",
      "passportNumber": "123456",
      "passportIssueDate": "2015-06-01",
      "passportIssueId": "770-001",
      "passportIssuedBy": "OUFMS",
      "addressRegStr": "Moscow, Tverskaya 1",
      "addressRegZipCode": "101000"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's government-payment transfer flow
    • identity block mirrors the payer confirmation shown before submit
  • Create C2C money transfer

    POST /v1/transfers/c2c openbanking

    Creates a person-to-person transfer (senderId, amount, recipient FIO/phone) and returns transferId; pay step later yields paymentLink.

    Auth: Account-id header carrying the sender's profile hid, inside the transfers namespace.

    • senderId
    • amount
    • password
    • message
    • senderEmail
    • senderMobilePhone
    • countryCode
    • phoneNumber
    • recipient
    • fullName
    • firstName
    • lastName
    • middleName
    • mobilePhone
    • transferId

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/transfers/c2c HTTP/1.1
    X-Account-Id: hid-9f3a
    Content-Type: application/json
    
    {
      "senderId": 441001,
      "amount": 5000,
      "password": "secret",
      "message": "For postage",
      "senderEmail": "[email protected]",
      "senderMobilePhone": {"countryCode": "+7", "phoneNumber": "9001234567"},
      "recipient": {
        "fullName": "Anna Smirnova",
        "firstName": "Anna",
        "lastName": "Smirnova",
        "middleName": "Igorevna",
        "mobilePhone": {"countryCode": "+7", "phoneNumber": "9007654321"}
      }
    }
    {
      "transferId": 9001001
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's person-to-person transfer composer
    • response id matches the transfer receipt shown after creation
  • Book a post-office visit

    POST /v1/offices/booking opendata

    Books an OPS slot for a serviceId at postalCode and returns bookingId, reservationCode and window.

    Auth: Session token sent as a bearer-style auth header, plus an API-version header.

    • postalCode
    • slotId
    • serviceId
    • itemsCount
    • bookingId
    • reservationCode
    • createdTime
    • window
    • viaElectronicQueue
    • slot
    • serviceParameters

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/offices/booking?postalCode=125167&slotId=slot-42&serviceId=3&itemsCount=1 HTTP/1.1
    Authorization: Bearer <session-token>
    X-Api-Version: 9
    {
      "bookingId": "bkg-7781",
      "postalCode": "125167",
      "reservationCode": "A104",
      "createdTime": "2026-09-27T12:05:00",
      "window": 4,
      "viaElectronicQueue": false,
      "slot": {"slotId": "slot-42"},
      "serviceParameters": [{"serviceId": 3, "itemsCount": 1}]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's visit-booking flow
    • confirmation shape mirrors the ticket shown with reservation code and window

Data categories

  • parcel-tracking
  • post-offices
  • shipping-tariffs
  • payments
  • transfers
  • loyalty
  • identity

Where teams use this data

  • Last-mile exception desk

    A 3PL ops bot watches tracked items for storageTime and showOfficeBookingButton, then books an OPS slot so recipients pick up before the hold expires.

  • Postage quoting engine

    A marketplace checkout pulls domestic product/service rows for a from/to index and mass, then places the postage order and stores the returned barcode.

  • GIS bill-pay reconciliation

    A treasury job searches charges by vu/sts/uin, pays amountToPay, and matches paymentReference plus transferNumber back to the ERP.

  • Loyalty CRM overlay

    A CRM joins hid and marketPlaceId from the profile with bonusBalance / monthly received-vs-spent to target burn-risk members.

Frequently asked questions

How is the Pochta Rossii data API structured?

It is a versioned, token-authenticated JSON API. Lookups are plain GETs with query parameters; searches and order/payment creation are POSTs, some form-encoded and some JSON. Tracking, offices, tariffs, account, cards, charges and transfers each live in their own path namespace.

How is the session authenticated?

Calls send the session token in a bearer-style auth header plus an API-version header. Sensitive payment calls add client and channel headers, and the person-to-person transfer call identifies the sender with an account-id header taken from the profile.

Can I look up a parcel by barcode?

Yes. The tracking call takes rpoId (the tracking barcode) plus currentDateTime and triggeredByUser, and returns sender, recipient, destinationAddress, historyItems, forPayment and storageTime, enough to render the full delivery timeline and any amount due.

Does the API include payments and transfers?

Yes. Government charges can be searched by driver-license (vu), vehicle-certificate (sts), bill (uin) or tax (inn) identifiers and then paid; the payment call returns a paymentReference. Person-to-person transfer creation returns a transferId, and a later pay call returns paymentLink and approveId.

Topics

  • pochta rossii api
  • russian post tracking api
  • почта россии
  • parcel tracking api
  • post office locator api
  • shipping tariff api
  • gis charge payment
  • c2c transfer api
  • mobile json api

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.

Get a quote