# Mandarin.Kassir (receipts)

# Getting started

Mandarin transmits fiscal data to cloud online cash registers. Supported providers:

A Mandarin agent cash register is also available — connect without your own cash register (see below).

Receipt generation schemes:

Scheme When to use
Automatic generation The fiscalInformation block is passed in a payment, refund, or payout request
Independent generation The receipt is created in a separate request after the operation

# BIFIT Online

What you need before integration

Connection steps

  1. Obtain a cash register token in “BIFIT Kassa” — instructions (opens new window).
  2. Send the token and Client ID (opens new window) to Mandarin Support (opens new window) or your account manager.
  3. Add the fiscalInformation object to requests — see Automatic receipt generation.

# ATOL Online

What you need before integration

Connection steps

  1. Obtain cash register data from the “Integrator settings” file in the ATOL Online account — instructions (opens new window) (pp. 75–76).
  2. Send the file and Client ID (opens new window) to Mandarin Support (opens new window) or your account manager.
  3. Add the fiscalInformation object to requests — see Automatic receipt generation.

# Mandarin agent cash register

Connect an online cash register under an agent scheme without renting your own cash register equipment. The receipt shows:

  • agent — Mandarin LLC, INN 7708816952;
  • supplier — your company.

The receipt displays the number, amount, date, operation type (income / expense / refund), and other fiscal details.

For automatic receipt generation, pass fiscalInformation according to the agent receipt instructions. When using the Mandarin cash register, the shipper block is not passed in the payment request — supplier data is configured on the Mandarin side.

For independent receipt generation via the api.psp.io API, the shipper block is required: it must contain your company details as the supplier of goods/services. See Independent receipt generation.

Important!

When using the Mandarin cash register, specify only Common (general taxation system) in the taxationSystem parameter. Other values will cause receipt generation to fail.

# Reference data

# Taxation systems reference

Value Description
Common General taxation system (OSN)
Simplified Simplified taxation system (STS), “Income”
SimplifiedMinusOutlay Simplified taxation system (STS), “Income minus expenses”
UnifiedImputedIncome Unified tax on imputed income (UTII)
UnifiedAgricultural Unified agricultural tax (UAT)
Patent Patent taxation system (PSN)

# VAT rates reference

Value Description
None No VAT
Vat0 VAT at 0%
vat5 VAT at 5%
vat7 VAT at 7%
Vat10 VAT at 10%
Vat20 VAT at 20%
Vat22 VAT at 22%
vat105 VAT at calculated rate 5/105
vat107 VAT at calculated rate 7/107

# Calculation methods reference

Value Description
PREPAY_FULL Full prepayment before the subject of payment is transferred
PREPAY_PARTIAL Partial prepayment before the subject of payment is transferred
AVANS Advance payment
FULL_PAY Full payment, including any advance (prepayment) at the time the subject of payment is transferred
PARTIAL_SETTLEMENT_AND_CREDIT Partial payment at transfer with subsequent credit payment
TRANSFER_ON_CREDIT Transfer without payment at transfer with subsequent credit payment
CREDIT_PAYMENT Payment after transfer on credit (loan repayment)

# Payment subjects reference

Value Description
AGENCY Agency fee
COMPOUND_SUBJECT Compound subject of payment
EXCISABLE_PRODUCT Excisable goods
GAMBLING_RATE Gambling bet
GAMBLING_WIN Gambling winnings
INSURANCE_CONTRIBUTIONS Insurance contributions
JOB Work
LOTTERY_TICKET Lottery ticket
LOTTERY_WIN Lottery winnings
NON_OPERATING_INCOME Non-operating income
OTHER_SUBJECT Other subject of payment
PAYMENT Payment
PLEDGE Pledge
PRODUCT Product
PROPERTY_LAW Property right
PROVISION_RID Provision of intellectual property
RESORT_FEE Resort fee
SERVICE Service
TRADE_FEE Trade fee

# Receipt types and their purpose

The system supports the following fiscal receipt types:

Receipt type When generated Description
Income When funds are received from the buyer Standard receipt for payment of goods/services. Generated on successful payment.
Income refund When funds are returned to the buyer Receipt confirming refund of previously paid funds. Generated on payment cancellation or refund.
Expense When funds are disbursed (e.g. payout to supplier or withdrawal) Receipt confirming an expense operation. Generated on payouts.
Expense refund When previously disbursed funds are returned Receipt confirming return of funds from a counterparty. Generated on payout cancellation.
Income correction receipt To correct errors in previously generated income receipts Generated when the original receipt contained an error (receipt was not issued, wrong amount, VAT rate, name, etc.) and the operation must be correctly reflected in the fiscal system.
Expense correction receipt To correct errors in previously generated expense receipts Same as income correction, but for expense operations.
Income refund correction receipt To correct errors in income refund receipts Corrects an incorrectly issued refund or when no receipt was issued for the refund.
Expense refund correction receipt To correct errors in expense refund receipts Corrects an incorrectly issued expense refund or when no receipt was issued for the refund.

# Automatic receipt generation

A receipt is generated automatically on successful operation if the fiscalInformation object is passed in a request to POST https://secure.mandarinpay.com/api/transactions.

# Supported operations

payment.action Operation Fiscal receipt type
pay Card charge (payment) Income
reversal Unblock after two-stage authorization (preauth). Funds were not charged to the card Income refund
refund Refund to the buyer for a successfully completed charge (pay), including partial refund Income refund
payout Payout to card Expense

The fiscalInformation object contains the taxation system (taxationSystem) and an array of receipt line items (items). Each line describes the name, quantity, line amount, and VAT rate.

# Authentication

Requests are authenticated with the x-auth header. See Request authentication for how to build the value.

Two APIs — different fields for operation type

The documentation describes two different APIs. Do not use values from one API in the other.

1. Automatic receipt generation (this section)
Endpoint: POST https://secure.mandarinpay.com/api/transactions
Operation type is set in payment.action: pay, reversal, refund, payout.
The receipt is generated automatically with the payment if the fiscalInformation block is passed.

2. Independent receipt generation
Endpoint: POST https://api.psp.io/receipts/public/receipts
Receipt type is set by the action field (number) or ActionType (string) — one of them is sufficient.

Receipt type action ActionType
Income 1 Receipt
Income refund 2 Refund
Expense 3 Purchase
Expense refund 4 PurchaseRefund

Field mapping

For independent generation, the same values are used but field names differ: taxSystem instead of taxationSystem, name instead of description, price instead of totalPrice.

# fiscalInformation parameters

Parameter Required Description
fiscalInformation If needed Fiscal data block. Pass when a receipt is required
fiscalInformation.taxationSystem Yes Taxation system for the entire receipt. See reference
fiscalInformation.items[] Yes Array of line items
fiscalInformation.items[].description Yes Name of the product, work, or service
fiscalInformation.items[].quantity Yes Quantity. Fractional values are allowed
fiscalInformation.items[].totalPrice Yes Line amount (string with two decimal places, e.g. "800.00")
fiscalInformation.items[].vat Yes VAT rate. See VAT reference
fiscalInformation.items[].calculationMethod No Calculation method. Default: FULL_PAY. See reference
fiscalInformation.items[].paymentSubject No Payment subject. Default: SERVICE. See reference

Synchronous response and asynchronous callback notification may contain a wider set of parameters than the example.

# Request examples

# Example: payment (pay)

curl --request POST \
  --url https://secure.mandarinpay.com/api/transactions \
  --header 'content-type: application/json' \
  --header 'x-auth: {{x_auth}}' \
  --data '{
  "payment": {
    "action": "pay",
    "orderId": "e36887bbed618ea111",
    "price": "200.00"
  },
  "customerInfo": {
    "email": "user@example.com",
    "phone": "+79001234567"
  },
  "fiscalInformation": {
    "taxationSystem": "Common",
    "items": [
      {
        "quantity": 1,
        "vat": "Vat20",
        "description": "Delivery",
        "totalPrice": "200.00",
        "calculationMethod": "PREPAY_FULL",
        "paymentSubject": "SERVICE"
      }
    ]
  }
}'

Response on successful transaction creation (200 OK)

{
  "id": "43913ddc000c4d3990fddbd3980c1725",
  "userWebLink": "https://secure.mandarinpay.com/Pay?transaction=0eb51e74-e704-4c36-b5cb-8f0227621518",
  "jsOperationId": "9874694yr87y73e7ey39ed80"
}

# Example: unblock after preauth (reversal)

curl --request POST \
  --url https://secure.mandarinpay.com/api/transactions \
  --header 'content-type: application/json' \
  --header 'x-auth: {{x_auth}}' \
  --data '{
  "payment": {
    "action": "reversal",
    "orderId": "e36887bbed618ea112",
    "price": "200.00"
  },
  "target": {
    "transaction": "43913ddc000c4d3990fddbd3980c1725"
  },
  "fiscalInformation": {
    "taxationSystem": "Common",
    "items": [
      {
        "quantity": 1,
        "vat": "Vat20",
        "description": "Funds unblock",
        "totalPrice": "200.00",
        "paymentSubject": "SERVICE"
      }
    ]
  }
}'

# Example: refund for completed payment (refund)

curl --request POST \
  --url https://secure.mandarinpay.com/api/transactions \
  --header 'content-type: application/json' \
  --header 'x-auth: {{x_auth}}' \
  --data '{
  "payment": {
    "action": "refund",
    "orderId": "e36887bbed618ea113",
    "price": "200.00"
  },
  "target": {
    "transaction": "43913ddc000c4d3990fddbd3980c1725"
  },
  "fiscalInformation": {
    "taxationSystem": "Common",
    "items": [
      {
        "quantity": 1,
        "vat": "Vat20",
        "description": "Service refund",
        "totalPrice": "200.00",
        "paymentSubject": "SERVICE"
      }
    ]
  }
}'

# Example: payout (payout)

curl --request POST \
  --url https://secure.mandarinpay.com/api/transactions \
  --header 'content-type: application/json' \
  --header 'x-auth: {{x_auth}}' \
  --data '{
  "payment": {
    "action": "payout",
    "orderId": "e36887bbed618ea114",
    "price": "200.00"
  },
  "customerInfo": {
    "email": "user@example.com",
    "phone": "+79001234567"
  },
  "target": {
    "card": "0eb51e74-e704-4c36-b5cb-8f0227621518"
  },
  "fiscalInformation": {
    "taxationSystem": "Common",
    "items": [
      {
        "quantity": 1,
        "vat": "Vat20",
        "description": "Payout",
        "totalPrice": "200.00",
        "paymentSubject": "SERVICE"
      }
    ]
  }
}'

Response when the transaction is not created (400 Bad request)

{
  "error": "Invalid request"
}

# Automatic agent receipt generation

Use this section if you act as an intermediary: you accept payment for another party's goods or services (marketplace, aggregator, payment agent).

The receipt is generated the same way as in the standard automatic scenario, with the same payment.action values (pay, reversal, refund, payout). Each items line additionally includes agentType, and the shipper block depends on the scenario (see the table below).

# When to specify shipper

Scenario agentType shipper
Your own BIFIT / ATOL cash register, automatic receipt with payment AGENT Yes — supplier data
Mandarin cash register, automatic receipt with payment AGENT No — supplier is configured in Mandarin
Mandarin cash register, independent generation AGENT Yesyour company data

Important!

When using the Mandarin agent cash register:

  • Automatic receipt (fiscalInformation block in payment / payout request): the shipper block is not passed.
  • Independent receipt generation (API api.psp.io/receipts/public/receipts): the shipper block is required — specify your company as the supplier of goods/services.

# Parameters (in addition to fiscalInformation)

Parameter Required Description
items[].agentType Conditional Agent type. For most scenarios — AGENT
items[].shipper Conditional Supplier data. Required with your own cash register; not passed for automatic receipt with Mandarin cash register
items[].shipper.name Yes, if shipper is present Supplier organization name
items[].shipper.inn Yes, if shipper is present Supplier INN
items[].shipper.phones[] Yes, if shipper is present Supplier phone numbers (array of strings)

# agentType values

Value Description
AGENT Payment agent
BANK_PAYMENT_AGENT Bank payment agent
BANK_PAYMENT_SUBAGENT Bank payment subagent
PAYMENT_AGENT Payment agent (other type)
PAYMENT_SUBAGENT Payment subagent
ATTORNEY Attorney
COMMISSIONER Commissioner

Synchronous response and asynchronous callback notification may contain a wider set of parameters than the example.

# Authentication

Requests are authenticated with the x-auth header. See Request authentication for how to build the value.

# Request examples

# Example: agent payment (pay)

curl --request POST \
  --url https://secure.mandarinpay.com/api/transactions \
  --header 'content-type: application/json' \
  --header 'x-auth: {{x_auth}}' \
  --data '{
  "payment": {
    "action": "pay",
    "orderId": "e36887bbed618ea115",
    "price": "600.00"
  },
  "customerInfo": {
    "email": "user@example.com",
    "phone": "+79001234567"
  },
  "fiscalInformation": {
    "taxationSystem": "Common",
    "items": [
      {
        "quantity": 1,
        "vat": "None",
        "description": "Payment",
        "totalPrice": "600.00",
        "calculationMethod": "FULL_PAY",
        "paymentSubject": "SERVICE",
        "agentType": "AGENT",
        "shipper": {
          "name": "Romashka LLC",
          "inn": "1234567890",
          "phones": ["+79111111111"]
        }
      }
    ]
  }
}'

Response on successful transaction creation (200 OK)

{
  "id": "43913ddc000c4d3990fddbd3980c1725",
  "userWebLink": "https://secure.mandarinpay.com/Pay?transaction=0eb51e74-e704-4c36-b5cb-8f0227621518",
  "jsOperationId": "9874694yr87y73e7ey39ed80"
}

# Independent receipt generation

This feature lets you generate a fiscal receipt for an operation that has already been completed — when automatic generation failed, was not configured, or a separate receipt is required by business logic.

Important: independent generation does not replace automatic fiscalization at the time of payment. Use it only when justified and in compliance with cash register legislation.

Main scenarios:

  1. Standard receipt for an operation not fiscalized automatically
    If a receipt was not created at the time of payment or payout for technical reasons, you can generate it manually on the day of the operation — as a standard income, expense, or refund receipt (depending on the operation type).

  2. Correction receipt
    Used only when the situation cannot be corrected with a standard receipt — in particular, when the operation day has passed or incorrect details were recorded in a previously issued receipt.

Correction receipt is not a fallback option

A correction receipt must not be issued arbitrarily or instead of a timely standard receipt.

  • If the operation was performed today and no receipt was issued — generate a standard receipt, not a correction.
  • A correction receipt requires a legal basis: correcting an error in data previously sent to the OFD, or reflecting a settlement for which no receipt was issued within the required period.
  • The request must include a correction block with the basis type (Self — self-correction, Prescription — per tax authority order), the date of the corrected settlement, and optionally the basis document number.

Improper use of correction receipts may violate cash register requirements. If in doubt, consult your accountant or Mandarin Support (opens new window).

A correction receipt is required when you need to correct in a previously generated receipt or when no receipt was issued:

  • settlement amount;
  • VAT rate;
  • product, work, or service name;
  • receipt type (e.g. expense was issued instead of income);
  • a settlement for which no receipt was issued on the day of the operation.

# Authentication

  • For POST requests (create receipts): scope receipts:public_receipts.write
  • For GET requests (view status and receipt list): scope receipts:public_receipts.read

Both scopes must be requested during OAuth 2.0 authentication.

General request structure:

  • All receipt creation requests are sent via POST to:
    https://api.psp.io/receipts/public/receipts
  • The request body contains required and optional parameters describing the receipt, line items, and customer and cashier information.

# Payment and refund receipt generation

A receipt can be agent or non-agent (standard).

# Agent receipt

When needed: when you accept money not for your own goods/services but for someone else's (you are an intermediary).

Also when using the Mandarin cash register, where you are the supplier of goods/services and Mandarin is the agent (intermediary).

Example: marketplace, service aggregator, payment agent.

In the API: pass agentType and the shipper block (name, INN, phone of the final recipient).

Important!

When using the Mandarin agent cash register:

  • Automatic receipt (fiscalInformation block in payment / payout request): the shipper block is not passed.
  • Independent receipt generation (this section): the shipper block is required — specify your company as the supplier of goods/services.

# Non-agent receipt (standard)

When needed: when you sell your own goods or services.

Example: online store, own delivery, consulting, etc.

In the API: pass the request body without agentType and shipper.

# Request parameters

Parameter Required Description
taxSystem Yes Taxation system. Possible values: Common (OSN), Simplified (STS Income), SimplifiedMinusOutlay (STS Income minus expenses), UnifiedImputedIncome (UTII), UnifiedAgricultural (UAT), Patent (PSN)
action Conditional Receipt type (specify either ActionType or action):
1 — Income (payment)
2 — Income refund
3 — Expense
4 — Expense refund
Required for refunds, expenses, and corrections. Optional for income.
ActionType Conditional Receipt type (specify either ActionType or action):
Receipt — Income (payment)
Refund — Income refund
Purchase — Expense
PurchaseRefund — Expense refund
Required for refunds, expenses, and corrections. Optional for income.
isMandarinAgent No Use Mandarin terminal for agent fiscalization scheme.
cashierName No Cashier name.
cashierInn No Cashier INN.
customerPhone Conditional Customer phone number. Required if customerEmail is not specified.
customerEmail Conditional Customer email. Required if customerPhone is not specified.
clientId Yes Client ID.
merchantId Yes Merchant ID.
mandarinId Yes Operation ID in Mandarin (e.g. TransactionId or OperationId) to which the receipt is linked.

# Line item parameters (items)

Parameter Required Description
items.calculationMethod Yes Calculation method. Possible values: FULL_PAY, PREPAY_FULL, PREPAY_PARTIAL, AVANS, PARTIAL_SETTLEMENT_AND_CREDIT, TRANSFER_ON_CREDIT, CREDIT_PAYMENT.
items.agentType Conditional Counterparty type for agent receipts. Use AGENT. Required for agent receipts.
items.shipper.name Conditional Supplier company name (final recipient of funds). Required if agentType is specified.
items.shipper.inn Conditional Supplier INN. Required if agentType is specified.
items.shipper.phones Conditional Array of supplier phone numbers as strings. Required if agentType is specified.
items.paymentSubject Yes Payment subject. Possible values: SERVICE, PRODUCT, JOB, PAYMENT, AGENCY, etc. Full list — payment subjects reference.
items.name Yes Product, work, or service name.
items.price Yes Unit price. Limit: 2 decimal places (e.g. 123.45).
items.quantity Yes Quantity. Fractional values are allowed (e.g. 0.5).
items.vat Yes VAT rate. Possible values: None, Vat0 (0%), vat5 (5%), vat7 (7%), Vat10 (10%), Vat20 (20%), Vat22 (22%), vat105 (5/105), vat107 (7/107).

# Correction receipt parameters

To generate a correction receipt, add the action (or ActionType) field and the correction block to the request.

Parameter Required Description
action Conditional Type of operation being corrected (specify either ActionType or action):
1 — Income (payment)
2 — Income refund
3 — Expense
4 — Expense refund
ActionType Conditional Type of operation being corrected (specify either ActionType or action):
Receipt — Income (payment)
Refund — Income refund
Purchase — Expense
PurchaseRefund — Expense refund
correction Yes Correction data block. Contains information about the basis for correction.
correction.type Yes Correction type:
1Self (self-initiated)
2Prescription (per authority order)
correction.documentDate Yes Date of the corrected settlement. Format: YYYY-MM-DD (e.g. 2026-06-22).
correction.documentNumber No Basis document number for correction. Specify the fiscal sign (FP) of the erroneous receipt if it was generated. If no receipt was issued, pass an empty value.

# Request examples

# Example: agent income receipt

curl --request POST \
  --url https://api.psp.io/receipts/public/receipts \
  --header 'accept: */*' \
  --header 'authorization: Bearer {{access_token}}' \
  --header 'content-type: application/json' \
  --data '{
    "taxSystem": "Common",
    "action": 1,
    "isMandarinAgent": true,
    "cashierName": "Mandarin",
    "customerPhone": "79001234567",
    "customerEmail": "user@example.com",
    "clientId": "1234",
    "merchantId": "1234",
    "mandarinId": "43913ddc000c4d3990fddbd3980c1725",
    "items": [
      {
        "calculationMethod": "FULL_PAY",
        "agentType": "AGENT",
        "shipper": {
          "name": "Supplier LLC",
          "inn": "7724923302",
          "phones": ["+79001234567"]
        },
        "paymentSubject": "SERVICE",
        "name": "Service",
        "price": 1000.00,
        "quantity": 1,
        "vat": "Vat20"
      }
    ]
  }'

Response on successful request creation (200 OK)

{
  "data": {
    "id": 139
  }
}

# Example: agent income refund receipt

curl --request POST \
  --url https://api.psp.io/receipts/public/receipts \
  --header 'accept: */*' \
  --header 'authorization: Bearer {{access_token}}' \
  --header 'content-type: application/json' \
  --data '{
    "taxSystem": "Common",
    "action": 2,
    "isMandarinAgent": true,
    "cashierName": "Mandarin",
    "customerPhone": "79001234567",
    "customerEmail": "user@example.com",
    "clientId": "1234",
    "merchantId": "1234",
    "mandarinId": "43913ddc000c4d3990fddbd3980c1725",
    "items": [
      {
        "calculationMethod": "FULL_PAY",
        "agentType": "AGENT",
        "shipper": {
          "name": "Supplier LLC",
          "inn": "7724923302",
          "phones": ["+79001234567"]
        },
        "paymentSubject": "SERVICE",
        "name": "Service",
        "price": 1000.00,
        "quantity": 1,
        "vat": "Vat20"
      }
    ]
  }'

# Example: agent income correction receipt

curl --request POST \
  --url https://api.psp.io/receipts/public/receipts \
  --header 'accept: */*' \
  --header 'authorization: Bearer {{access_token}}' \
  --header 'content-type: application/json' \
  --data '{
    "taxSystem": "Common",
    "isMandarinAgent": true,
    "action": 1,
    "cashierName": "Mandarin",
    "customerPhone": "79001234567",
    "customerEmail": "user@example.com",
    "clientId": "1234",
    "merchantId": "1234",
    "mandarinId": "43913ddc000c4d3990fddbd3980c1725",
    "items": [
      {
        "calculationMethod": "FULL_PAY",
        "agentType": "AGENT",
        "shipper": {
          "name": "Supplier LLC",
          "inn": "7724923302",
          "phones": ["+79001234567"]
        },
        "paymentSubject": "SERVICE",
        "name": "Service",
        "price": 1000.00,
        "quantity": 1,
        "vat": "Vat20"
      }
    ],
    "correction": {
      "type": 1,
      "documentDate": "2026-06-22",
      "documentNumber": "1234567890"
    }
  }'

# Example: non-agent income receipt

curl --request POST \
  --url https://api.psp.io/receipts/public/receipts \
  --header 'accept: */*' \
  --header 'authorization: Bearer {{access_token}}' \
  --header 'content-type: application/json' \
  --data '{
    "taxSystem": "Common",
    "action": 1,
    "cashierName": "Ivanov I.I.",
    "cashierInn": "1234567890",
    "customerPhone": "79001234567",
    "customerEmail": "user@example.com",
    "clientId": "1234",
    "merchantId": "1234",
    "mandarinId": "43913ddc000c4d3990fddbd3980c1725",
    "items": [
      {
        "calculationMethod": "FULL_PAY",
        "paymentSubject": "SERVICE",
        "name": "Service payment",
        "price": 1000.00,
        "quantity": 1,
        "vat": "Vat20"
      }
    ]
  }'

# Example: non-agent income refund receipt

curl --request POST \
  --url https://api.psp.io/receipts/public/receipts \
  --header 'accept: */*' \
  --header 'authorization: Bearer {{access_token}}' \
  --header 'content-type: application/json' \
  --data '{
    "taxSystem": "Common",
    "action": 2,
    "cashierName": "Ivanov I.I.",
    "cashierInn": "1234567890",
    "customerPhone": "79001234567",
    "customerEmail": "user@example.com",
    "clientId": "1234",
    "merchantId": "1234",
    "mandarinId": "43913ddc000c4d3990fddbd3980c1725",
    "items": [
      {
        "calculationMethod": "FULL_PAY",
        "paymentSubject": "SERVICE",
        "name": "Service refund",
        "price": 1000.00,
        "quantity": 1,
        "vat": "Vat20"
      }
    ]
  }'

# Example: non-agent income correction receipt

curl --request POST \
  --url https://api.psp.io/receipts/public/receipts \
  --header 'accept: */*' \
  --header 'authorization: Bearer {{access_token}}' \
  --header 'content-type: application/json' \
  --data '{
    "taxSystem": "Common",
    "action": 1,
    "cashierName": "Ivanov I.I.",
    "cashierInn": "1234567890",
    "customerPhone": "79001234567",
    "customerEmail": "user@example.com",
    "clientId": "1234",
    "merchantId": "1234",
    "mandarinId": "43913ddc000c4d3990fddbd3980c1725",
    "items": [
      {
        "calculationMethod": "FULL_PAY",
        "paymentSubject": "SERVICE",
        "name": "Service payment",
        "price": 1000.00,
        "quantity": 1,
        "vat": "Vat20"
      }
    ],
    "correction": {
      "type": 1,
      "documentDate": "2026-06-22",
      "documentNumber": "1234567890"
    }
  }'

# Getting receipt status

Returns the current fiscalization status of a receipt by Mandarin operation ID.

# Authentication

Endpoint: GET https://api.psp.io/receipts/public/receipts/{mandarinId}/status

# Parameters

Parameter Required Description
mandarinId Yes (in URL) Operation ID in Mandarin (TransactionId or OperationId from callback notification)

# Possible status values

Value Description
SUCCESS Receipt generated successfully
FAIL Generation error
NEW Receipt is being processed

Request

curl --request GET \
  --url https://api.psp.io/receipts/public/receipts/43913ddc000c4d3990fddbd3980c1111/status \
  --header 'accept: */*' \
  --header 'authorization: Bearer {{access_token}}'

Response on success (200 OK)

{
  "data": {
    "status": "SUCCESS"
  },
  "error": null
}

# Getting receipt list

Returns a list of receipts with line item details. Supports filtering and pagination.

# Authentication

Endpoint: GET https://api.psp.io/receipts/public/receipts

# Filtering

Filters are passed in the filter_by query parameter as key=value, with conditions separated by & (URL-encoded as %26).

Example: receipts with status New created within the specified interval:

filter_by=mandarin_status=New&created_start_date>2023-09-08T10:53:47.748839Z&created_end_date<2023-09-08T10:55:47.748839Z

# filter_by parameters

Parameter Required Description
mandarinId No Operation ID in Mandarin
provider_id No Receipt ID at the cash register provider
mandarin_status No Status: New, Success, Fail
created_start_date No Period start (ISO 8601, e.g. 2023-09-08T10:53:47.748839Z)
created_end_date No Period end (ISO 8601)
action_type No Receipt type: Receipt (income), Refund (income refund), Purchase (expense), PurchaseRefund (expense refund)
limit_to No Records per page. Default: 20
cursor No Pagination cursor (prev / next from the previous response)

# Pagination

The response cursor object contains next and prev fields — pass the value in the cursor parameter to get the next or previous page.

Request

curl --request GET \
  --url 'https://api.psp.io/receipts/public/receipts?filter_by=mandarin_status=New%26created_start_date%3E2023-09-08T10:53:47.748839Z%26created_end_date%3C2023-09-08T10:55:47.748839Z' \
  --header 'accept: */*' \
  --header 'authorization: Bearer {{access_token}}'

Response on success (200 OK)

{
  "receipts": [
    {
      "mandarinId": "11913ddc000c4d3990fddbd3980c1111",
      "providerId": "486179",
      "providerType": "Bifit",
      "actionType": "Receipt",
      "status": "SUCCESS",
      "mandarinStatus": "Success",
      "amount": 200.00,
      "customerEmail": "user@example.com",
      "customerPhone": "+79001234567",
      "items": [
        {
          "name": "ITO commission for transaction 23071572 in favor of Client 1234",
          "price": 200.00,
          "quantity": 1.0,
          "vat": "VAT20"
        }
      ],
      "taxationSystem": "Common",
      "clientId": "033861",
      "merchantId": "7429",
      "id": 714010,
      "createdAt": "2023-10-18T18:59:55.641495Z"
    }
  ],
  "cursor": {
    "count": 1,
    "total": 1,
    "next": null,
    "prev": null
  }
}