NestJS YooKassa

Создание счета

Шаги для создания счета

В этом разделе мы рассмотрим, как создать счет для оплаты. Мы покажем, как подготовить данные для счета, вызвать метод сервиса и обработать ответ от API.

Подготовка данных для создания счета

Для создания счета необходимо подготовить объект InvoiceCreateRequest, который содержит все данные для счета. Основные поля включают сумму (amount), идентификатор субаккаунта (gateway_id), корзину (cart) и срок действия счета (expires_at).

import type { InvoiceCreateRequest } from 'nestjs-yookassa'

const invoiceData: InvoiceCreateRequest = {
	amount: { value: '1000.00', currency: 'RUB' },
	gateway_id: 'subaccount-id',
	cart: [
		{
			description: 'Товар 1',
			price: { value: '1000.00', currency: 'RUB' },
			quantity: 1
		}
	],
	expires_at: '2025-08-30T10:00:00.000Z'
}

Вызов метода для создания счета

Используйте метод createInvoice сервиса для отправки запроса на создание счета и получения информации о нем.

import { type InvoiceCreateRequest, YookassaService } from 'nestjs-yookassa'

@Injectable()
export class InvoiceService {
  constructor(private readonly yookassaService: YookassaService) {}

  async createInvoice() {
    const invoiceData: InvoiceCreateRequest = {
      amount: { value: '1000.00', currency: 'RUB' },
      gateway_id: 'subaccount-id',
      cart: [
        {
          description: 'Товар 1',
          price: { value: '1000.00', currency: 'RUB' },
          quantity: 1
        }
      ],
      expires_at: '2025-08-30T10:00:00.000Z'
    }

    const invoice = await this.yookassaService.createInvoice(invoiceData)

    return invoice
  }
}

Обработка ответа от API

Ответ содержит информацию о созданном счете, включая идентификатор, статус, корзину и дату истечения счета. Пример ответа:

{
	"id": "3f2d2280-0015-5000-b000-1c02972ec0ef",
	"status": "pending",
	"cart": [
		{
			"description": "Товар 1",
			"price": { "value": "1000.00", "currency": "RUB" },
			"quantity": 1
		}
	],
	"delivery_method": {
		"type": "self",
		"url": "https://example.com/invoice/3f2d2280"
	},
	"created_at": "2025-08-23T10:00:00.000Z",
	"expires_at": "2025-08-30T10:00:00.000Z",
	"description": "Счет на оплату по заказу 123456",
	"metadata": { "order_id": "123456" }
}