---
title: "Trimitere Document prin Email"
method: POST
path: "/document/send"
tags: ["Email"]
---

# Trimitere Document prin Email

`POST /document/send`

Trimite o factura sau o proforma catre client, pe email, ca atasament.

**Cerinte**: trebuie sa ai configurat serverul de email in [SmartBill Cloud > Configurare > Email](https://cloud.smartbill.ro/core/configurare_mailuri/).

**Variabile pentru textul emailului:**
Parametrul `bodyText` accepta urmatorii marcatori:
- `#tip document#` - tipul documentului (factura/proforma)
- `#serie numar document#` - seria si numarul
- `#link document#` - link catre document
- `#data emiterii#` - data emiterii
- `#data scadentei#` - data scadentei
- `#total document#` - suma totala, cu moneda
- `#mentiune#` - mentiunile documentului
- `#nume client#` - numele clientului
- `#persoana contact#` - persoana de contact

**Nota**: atat `subject`, cat si `bodyText` trebuie codificate Base64.

## Ce e obligatoriu si ce are fallback

Obligatorii sunt doar `companyVatCode`, `seriesName`, `number` si `type`. Restul au fallback:

- `to` omis sau gol - emailul se trimite la adresa clientului de pe document;
- `subject` sau `bodyText` omise - se foloseste sablonul configurat in contul SmartBill.

Valoarea din `type` nu e sensibila la litere mari: `factura`, `Factura` si `FACTURA` sunt acceptate la fel. `type` selecteaza si tipul de document cautat - o proforma trimisa cu `type: factura` intoarce `Documentul nu a fost gasit`.

## Forma raspunsului

Endpointul nu raspunde ca restul V1. Raspunsul are un obiect `status`, cu `code` si `message`:

```json
{ "status": { "code": 0, "message": "Documentul a fost trimis cu succes." } }
```

`code` este `0` la succes si `1` la eroare. Nu exista camp `errorText` - un client care verifica doar `errorText` nu vede niciodata eroarea. Excepția: erorile de autentificare si de acces la firma vin in forma clasica V1, cu `errorText`, si cu status HTTP `401`.

**Ai primit o eroare la trimiterea emailului?**

**Erorile de autentificare si autorizare sunt comune tuturor endpoint-urilor V1.** Pentru email/token, `companyVatCode`, drepturi pe firma, vezi [Erori API V1](#api-1/description/erori-api-v1). Mai jos gasesti doar erorile specifice acestui endpoint. Toate vin cu `status.code: 1`.

<details>
<summary><strong>Erori la trimiterea emailului</strong></summary>

<table>
  <thead>
    <tr>
      <th>Situatie</th>
      <th>Eroare</th>
      <th>Sugestie</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Valoare neacceptata in <code>type</code></td>
      <td><code>Valoarea campului 'type' nu este suportata (invoice). Valorile acceptate sunt: factura, proforma.</code></td>
      <td>Trimite `factura` sau `proforma`. Variantele englezesti `invoice` si `estimate` nu sunt acceptate. Litera mare nu conteaza.</td>
    </tr>
    <tr>
      <td><code>type</code> lipsa sau gol</td>
      <td><code>type  trebuie specificat. Valorile acceptate sunt: factura, proforma.</code></td>
      <td>`type` e obligatoriu, spre deosebire de `to`, `subject` si `bodyText`.</td>
    </tr>
    <tr>
      <td>Documentul nu exista, sau <code>type</code> nu corespunde tipului lui</td>
      <td><code>Documentul nu a fost gasit</code></td>
      <td>Verifica `seriesName` si `number`. Apare si cand documentul exista, dar e trimis cu tipul greșit - o proforma cu `type: factura`, de exemplu.</td>
    </tr>
    <tr>
      <td><code>seriesName</code> gol</td>
      <td><code>Seria nu a fost gasita! Folositi o serie creata in contul de cloud.</code></td>
      <td>Trimite o serie existenta in contul SmartBill Cloud.</td>
    </tr>
    <tr>
      <td><code>number</code> gol</td>
      <td><code>Numarul documentului  trebuie specificat</code></td>
      <td>Trimite numarul documentului, ca text.</td>
    </tr>
    <tr>
      <td><code>subject</code> nu e codificat Base64</td>
      <td><code>Subiectul emailului trebuie sa fie codat folosind Base64.</code></td>
      <td>Codifica subiectul in Base64 inainte de trimitere.</td>
    </tr>
    <tr>
      <td><code>bodyText</code> nu e codificat Base64</td>
      <td><code>Continutul emailului trebuie sa fie codat folosind Base64.</code></td>
      <td>Codifica si corpul emailului in Base64.</td>
    </tr>
    <tr>
      <td>Adresa de email invalida, in <code>to</code>, <code>cc</code> sau <code>bcc</code></td>
      <td><code>Invalid Addresses</code>, <code>Missing domain</code>, <code>Missing local name</code>, <code>Domain contains illegal character</code></td>
      <td>Mesajul depinde de felul in care e ruptă adresa. La mai multi destinatari, una singura invalida respinge tot apelul.</td>
    </tr>
    <tr>
      <td>Serverul de email nu e configurat in cont</td>
      <td><code>Server-ul de email nu a fost configurat.</code></td>
      <td>Configureaza serverul de email in [SmartBill Cloud > Configurare > Email](https://cloud.smartbill.ro/core/configurare_mailuri/).</td>
    </tr>
  </tbody>
</table>

</details>

## Request body

- SendEmailRequest
  - `companyVatCode` string, required — CIF-ul companiei tale
  - `seriesName` string, required — Seria documentului
  - `number` string, required — Numarul documentului
  - `type` 'factura' | 'proforma', required — Tipul documentului. Nu e sensibil la litere mari.
  - `to` string, email — Adresa de email a destinatarului. Daca lipseste sau e goala, se foloseste adresa clientului de pe document.
  - `cc` string — Destinatari CC (separati prin virgula)
  - `bcc` string — Destinatari BCC (separati prin virgula)
  - `subject` string — Subiectul emailului (codificat Base64). Daca lipseste, se foloseste sablonul configurat in contul SmartBill.
  - `bodyText` string — Corpul emailului (codificat Base64, suporta variabile de template). Daca lipseste, se foloseste sablonul configurat in contul SmartBill.

## Response `200`

Email trimis cu succes

- DocumentSendResponse — Raspunsul endpointului `/document/send`. Forma difera de restul V1.
  - `status` object
    - `code` integer — `0` la succes, `1` la eroare
    - `message` string — Mesajul returnat de server

## Other responses

- `400` — Document negasit, parametru invalid sau server de email neconfigurat
- `401` — Autentificare esuata
- `500` — Eroare interna de server. Poate aparea cand numele campurilor sunt trimise cu casing gresit (ex. `Price` in loc de `price`). Raspunsul este `text/html`, nu JSON - nu poate fi parsat programatic.

---

[API](https://skmtc.dev/smartbill/apis/smartbill-api.md) · [All operations](https://skmtc.dev/smartbill/apis/smartbill-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/smartbill/smartbill-api/revisions/29940a27d41c/schema)
