---
title: "Wysyłka faktury e-mailem"
description: "Jak jednym żądaniem wysłać klientowi fakturę w PDF e-mailem z serwerów inFakt."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.niebieskiorzel.pl/llms.txt
> Use this file to discover all available pages before exploring further.

# Wysyłka faktury e-mailem

inFakt wysyła fakturę w formacie PDF na podany adres i zmienia jej status na `sent` (o ile faktura nie ma już statusu `paid`).

> **Przykłady korzystają z sandboxa**
>
> Wszystkie przykłady na tej stronie wysyłają żądania do środowiska testowego (`https://api.sandbox-infakt.pl/v3`). Na produkcji należy użyć adresu `https://api.infakt.pl/v3` i klucza API z konta produkcyjnego.

## Wymagania

- Klucz API z zakresem `api:invoices:write` w zmiennej `INFAKT_API_KEY`.
- `id` faktury w zmiennej `INVOICE_ID`.

## Żądanie

Parametr `print_type` określa wersję dokumentu (`original`, `copy` i inne), `locale` jego język (`pl`, `en`, `pe`), a `send_copy: true` powoduje wysłanie dodatkowej kopii wiadomości.

```sh
curl -X POST "https://api.sandbox-infakt.pl/v3/invoices/$INVOICE_ID/deliver_via_email.json" \
  -H "X-inFakt-ApiKey: $INFAKT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient": "ksiegowosc@example.com",
    "print_type": "original",
    "locale": "pl",
    "send_copy": true
  }'
```

```js
const res = await fetch(`https://api.sandbox-infakt.pl/v3/invoices/${process.env.INVOICE_ID}/deliver_via_email.json`, {
  method: "POST",
  headers: {
    "X-inFakt-ApiKey": process.env.INFAKT_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "recipient": "ksiegowosc@example.com",
    "print_type": "original",
    "locale": "pl",
    "send_copy": true
  }),
});
console.log(res.status);
```

```python
import os
import requests

res = requests.post(
    f"https://api.sandbox-infakt.pl/v3/invoices/{os.environ['INVOICE_ID']}/deliver_via_email.json",
    headers={"X-inFakt-ApiKey": os.environ["INFAKT_API_KEY"]},
    json={
        "recipient": "ksiegowosc@example.com",
        "print_type": "original",
        "locale": "pl",
        "send_copy": True
    },
)
print(res.status_code)
```

```php
<?php
$ch = curl_init('https://api.sandbox-infakt.pl/v3/invoices/' . getenv('INVOICE_ID') . '/deliver_via_email.json');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'X-inFakt-ApiKey: ' . getenv('INFAKT_API_KEY'),
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'recipient' => 'ksiegowosc@example.com',
        'print_type' => 'original',
        'locale' => 'pl',
        'send_copy' => true,
    ]),
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo $status, PHP_EOL;
```

## Weryfikacja

Odpowiedź `202 Accepted` bez treści oznacza, że wysyłka trafiła do kolejki. Po jej realizacji odpowiedź `GET /invoices/$INVOICE_ID.json` zawiera `"status": "sent"`.

Kod `403` z `limit: cant_print_invoice` oznacza wyczerpanie limitu wydruków w planie.

## Następne kroki

- [Oznaczanie faktury jako opłaconej](/poradniki/fakturowanie/oznacz-jako-oplacona/)
- [Udostępnianie linku do faktury](/poradniki/fakturowanie/udostepnij-link/)
- [Operacja w referencji API](/api/invoices-send-by-email/)

Source: https://docs.niebieskiorzel.pl/poradniki/fakturowanie/wyslij-e-mailem/index.mdx
