YooMoney API
Old versions of the API
Help
Sign up for YooMoney
Payments by 54-FZ

This is an old version of the API. Switch to the YooMoney API.

The Federal Law No. 54 (54-FZ) prescribes online stores to transmit fiscal data (product names and prices, VAT rate, and other required details) to the tax service. YooMoney can participate in this process.
Terms
Online sales register — a special sales register with a fiscal storage (cash register equipment; CRE) that works online and transmits fiscal data to the Fiscal Data Operator (FDO).
The FDO — an operator of fiscal information; an agent between online sales registers and the tax service.
The QES — a qualified electronic signature; it is required for registration of online sales register in the tax service.
Our solution for work under Federal Law No. 54
How YooMoney Helps
YooMoney can gather details in the required format and send them to your online sales register at the moment of payment or refund. Your online sales register uses these details for creating a receipt, then it sends the receipt to the FDO. The FDO passes it to the tax service.

YooMoney does not send electronic receipts to customer: even if the customer receives an email about the payment, this is not a legitimate receipt. You can only send receipts to customers via the Fiscal Data Operator.

Requirements
  1. Adopt the online sales register of one of our partners.
  2. Enter into contract with an operator of fiscal data (OFD).
  3. Acquire the qualified electronic signature (QES).
  4. Sign up your online sales register on the tax service’s site (under your corporation’s dashboard).
  5. Change settings under your Merchant Profile.
  6. Transfer data for creating the receipt to YooMoney (which means implementing protocol changes set forth by this document).
Process specifics
  • New parameters are added to the requests to YooMoney (for instance, name, price, and VAT rate of each product in the order).
  • Executing a payment or refund depends on sending fiscal data to your online sales register: some settings may block executing payments if the online sales register does not respond. (See Sending data for the receipt)
Who needs to apply this modification
Only those who are going to use our solution for transmitting data for the receipts to their online sales register. If you prefer setting up interaction with your online sales register independently, you do not need to change anything.
Settings in your Merchant Profile
Under your YooMoney Merchant Profile, you need to specify the following:
  • you are willing to adopt our solution for work under Federal Law No. 54;
  • our partner whose online sales register you will lease or buy;
  • when do we need to transmit fiscal data to your online sales register: before notifying about payment (paymentAviso) or simultaneously with it:
  • email address for sending messages with errors to;
  • address of your store (business address or URL of your site; to specify it in the receipt).
Changes in payment scenario
Process of paying varies depending on the moment when the data for the receipt are sent: before notifying about successful payment (paymentAviso) or simultaneously with it; you can set it under your Merchant Profile.
Learn more in the section Transmitting data for the receipts
Transmitting details for the receipts in payment forms
The parameters for transmitting fiscal data are added to our usual payment form.
One additional parameter, ym_merchant_receipt, is added to the form and contains all required data.
Learn more in the section Parameters for creating the receipt
Refunds
The returnPayment method is responsible for refunds.
Parameters for the receipt must be transmitted only if the receipts' contents are altered:
  • a partial refund took place;
  • the payment to be refunded was made without transmitting the receipt.
In this case, the receipt parameter is added to the request. Details for the receipt are transmitted in this parameter (about the products money for which are being returned).
Full refunds do not require transmitting parameters for the receipts (if the receipt was transmitted together with the payment).
Learn more in the description of the returnPayment method.
Linking bank card, automated paying, recurring paying
The repeatCardPayment method is responsible for recurring payments from bank cards or via Mir Pay, and linking cards for payment at a certain store.
The parameters for the receipt should be transmitted in the following cases:
  • payments amount is changed;
  • order contents is changed;
  • the payment subject to repeating is made without transmitting the receipt.
In this case, the ym_merchant_receipt parameter is added to the request; the details are transmitted in the JSON format (as in the payment form).
In other cases, the details transmitted with the initial payment is used for the receipt.
Learn more in the description of the repeatCardPayment method.
Preauthorization
Payment confirmation
The confirmPayment method allows for confirming deferred payment from a bank card (if you carry out payments from cards with authorization).
The parameters for the receipt should be transmitted in the following cases:
  • payment amount differs from the initial amount transmitted in payment form (partial clearing is carried out);
  • the payment subject to confirming is made without transmitting the receipt.
In this case, the ym_merchant_receipt parameter is added to the request; the details are transmitted in the JSON format (as in the payment form).
In other cases, the details transmitted with the initial payment is used for the receipt.
Learn more in the description of the confirmPayment method.
Payment cancelation
The cancelPayment method allows for cancelling deferred payment from a bank card (if you carry out payments from cards with authorization).
Parameters for the receipt should be transmitted if the payment subject to cancelling is performed without sending the receipt.
In this case, the ym_merchant_receipt parameter is added to the request; the details are transmitted in the JSON format (as in the payment form).
In other cases, the details transmitted with the initial payment is used for the receipt.
Learn more in the description of the cancelPayment method
Invoicing
The createInvoice method allows for debiting a user’s account in external payment systems (SberPay).
Data for the receipt is transmitted mandatory in the ym_merchant_receipt parameter, in the JSON format (as in the payment form).
See also
Parameters for creating a receipt