# Xuất hoá đơn điện tử qua API

Hạ Tầng xuất hoá đơn điện tử theo mã số thuế của bạn, qua chính tài khoản của bạn ở nhà cung cấp hoá đơn (xem hướng dẫn đầy đủ để biết các nhà cung cấp được hỗ trợ). Kết nối tài khoản một lần ở **Cài đặt thanh toán → Nhà cung cấp hoá đơn**, rồi thêm khối `invoice` vào thanh toán để hoá đơn được xuất khi đơn hàng đã trả tiền, hoặc tạo hoá đơn riêng.

**Kèm thanh toán** (xuất khi đã thanh toán)

```ts
import { Hatang } from "@hatang/sdk";

const hatang = new Hatang(); // HATANG_API_KEY có payments:write

const { data: payment, error } = await hatang.payments.createOrder({
  order_id: "SO-1002",
  amount: 275_000,
  ipn_url: "https://shop.example.com/api/hatang/ipn",
  invoice: {
    mode: "publish",
    buyer: { name: "Nguyen Van Khach", tax_code: "0109876543", email: "accounting@example.com" },
    items: [{ name: "Gói dịch vụ tháng 9", quantity: 1, unit_price: 250_000, vat_rate: 10 }],
  },
});
```

IPN và `payments.get` cho biết trạng thái và số hoá đơn (`payment.invoice`).

**Xuất riêng**, ví dụ cho một khoản chuyển khoản không gắn với đơn hàng

```ts
const { data: invoice, error } = await hatang.einvoices.create({
  mode: "publish",
  transaction_id: "txn_123",
  buyer: { name: "Nguyen Van Khach" },
  items: [{ name: "Cà phê hạt 1 kg", quantity: 1, unit_price: 91_667, vat_rate: 8 }],
});
```

Ở `development`, kết nối tài khoản demo của nhà cung cấp: hoá đơn là hoá đơn sandbox thật nhưng không bao giờ gửi tới cơ quan thuế.

## Tìm hiểu thêm

- Kết nối nhà cung cấp, vòng đời hoá đơn, bản nháp, lỗi và thay thế: [Hoá đơn điện tử](https://hatang.dev/vi/docs/guides/payments/einvoices.md)
- Thanh toán mà hoá đơn đi kèm: [Nhận thanh toán VietQR](https://hatang.dev/vi/docs/guides/recipes/vietqr-payments.md)

Source: https://hatang.dev/vi/docs/guides/recipes/einvoice-api
