Registering payouts with the Federal Tax Service
If a payout to a self-employed person was made without fiscalization, a receipt must be issued within 9 calendar days of receiving the money.
If you issued a receipt by mistake, the fiscalization can be canceled.
To use this functionality, contact your account manager at Bank 131.
How to perform fiscalization
Step 1. Create a payment session
Send a session/create request leaving the request body empty. You will get the session identifier in response.
Request example
- cURL
- PHP
curl -X POST \
https://demo.bank131.ru/api/v1/session/create \
-H 'content-type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
}'
use Bank131\SDK\API\Request\Builder\RequestBuilderFactory;
use Bank131\SDK\Client;
use Bank131\SDK\Config;
$config = new Config(
'https://demo.bank131.ru',
'your_project_name',
file_get_contents('/path/to/your/private_key.pem')
);
$client = new Client($config);
$request = RequestBuilderFactory::create()
->createPayoutSession()
->build();
$response = $client->session()->create($request);
Step 2. Send a fiscalization request
Send a fiscalization request specifying the session identifier and data for fiscalization.
Request example
curl -X POST \
https://demo.bank131.ru/api/v1/fiscalization \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_2704",
"fiscalization_details": {
"professional_income_taxpayer": {
"tax_reference": "123456789012",
"payer_type": "legal",
"payer_tax_number": "3316004777",
"payer_name": "OOO Vector",
"services": [{
"name": "Goods delivery",
"amount_details": {
"amount": 5000,
"currency": "rub"
}
},
{
"name": "Goods delivery",
"amount_details": {
"amount": 5000,
"currency": "rub"
}
}]
}
}
}'
Successful response example
{
"status": "ok",
"session": {
"id": "ps_2704",
"status": "in_progress",
"created_at": "2025-05-27T08:13:33.736384Z",
"updated_at": "2025-05-27T08:13:33.871729Z",
"payments": [{
"id": "po_2705",
"status": "in_progress",
"created_at": "2025-05-27T08:13:33.860754Z",
"amount_details": {
"amount": 15000,
"currency": "rub"
},
"fiscalization_details": {
"professional_income_taxpayer": {
"services": [{
"name": "Goods delivery",
"amount_details": {
"amount": 5000,
"currency": "rub"
},
"quantity": 2
},
{
"name": "Goods delivery",
"amount_details": {
"amount": 5000,
"currency": "rub"
},
"quantity": 1
}],
"tax_reference": "123456789012",
"payer_type": "legal",
"payer_tax_number": "3316004777",
"payer_name": "ООО Vector"
}
}
}]
}
}
Step 3. Wait to be notified of the results
Bank 131 will send you a payment_finished webhook. The result of the payout can be found in the status field of the payments/payout_list object. If the status is succeeded, then the fiscalization was successful. The link to the receipt from the FTS is returned in the fiscalization_details.receipt object.
Webhook example
curl -X POST \
https://partner.ru \
-H 'content-type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "payment_finished",
"session": {
"id": "ps_2704",
"status": "accepted",
"created_at": "2025-06-08T09:07:34.689353Z",
"updated_at": "2025-06-08T09:07:53.491653Z",
"payments": [{
"id": "po_23695",
"status": "succeeded",
"created_at": "2025-06-08T09:07:42.591416Z",
"finished_at": "2025-06-08T09:07:53.319963Z",
"amount_details": {
"amount": 15000,
"currency": "rub"
},
"fiscalization_details": {
"professional_income_taxpayer": {
"services": [{
"name": "Goods delivery",
"amount_details": {
"amount": 5000,
"currency": "rub"
},
"quantity": 2
},
{
"name": "Goods delivery",
"amount_details": {
"amount": 5000,
"currency": "rub"
},
"quantity": 1
}],
"tax_reference": "123456789012",
"receipt": {
"id": "203zpt6nu5",
"link": "https://himself-ktr.nalog.ru/api/v1/receipt/645493572846/203zpt6nu5/print"
},
"payer_type": "legal",
"payer_tax_number": "3316004777",
"payer_name": "ООО Vector"
}
}
}]
}
}'
How to cancel fiscalization
Occasionally it's necessary to cancel fiscalization and annul the issued receipt. For example, if the payout failed or the receipt was issued by mistake.
Step 1. Send a fiscalization cancellation request
Send a session/refund request specifying the session identifier from the fiscalization request that you are canceling in the session_id parameter and the receipt amount in the amount parameter.
Request example
curl -X POST \
https://demo.bank131.ru/api/v1/session/refund \
-H 'content-type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_2704",
"amount_details": {
"amount": 15000,
"currency": "rub"
}
}'
Step 2. Wait to be notified of the results
Bank 131 will send you a payment_refunded webhook with a link to the annulled receipt.
When fiscalization is canceled, Bank 131 specifies that the receipt was generated by mistake as a cancellation reason.
Webhook example
curl - X POST \
https: //partner.ru \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "payment_refunded",
"session": {
"id": "ps_2704",
"status": "accepted",
"created_at": "2025-06-08T09:07:34.689353Z",
"updated_at": "2025-06-08T09:16:48.624196Z",
"payments": [{
"id": "po_2705",
"status": "succeeded",
"created_at": "2025-06-08T09:07:42.591416Z",
"finished_at": "2025-06-08T09:07:53.319963Z",
"amount_details": {
"amount": 15000,
"currency": "rub"
},
"fiscalization_details": {
"professional_income_taxpayer": {
"services": [{
"name": "Goods delivery",
"amount_details": {
"amount": 5000,
"currency": "rub"
},
"quantity": 2
},
{
"name": "Goods delivery",
"amount_details": {
"amount": 5000,
"currency": "rub"
},
"quantity": 1
}],
"tax_reference": "123456789012",
"receipt": {
"id": "203zpt6nu5",
"link": "https://himself-ktr.nalog.ru/api/v1/receipt/645493572846/203zpt6nu5/print"
},
"payer_type": "legal",
"payer_tax_number": "3316004777",
"payer_name": "ООО Vector"
}
},
"refunds": [{
"id": "rf_249",
"status": "accepted",
"created_at": "2025-06-08T09:16:42.897606Z",
"finished_at": "2025-06-08T09:16:48.517040Z",
"amount_details": {
"amount": 15000,
"currency": "rub"
}
}]
}]
}
}'