Email invoice

Sends an invoice to a client via email with optional PDF and XML attachments. The email can be customized with subject, body, and recipients.

POST /api/v1/invoices/{uuid}/email

Headers

NameTypeRequiredDescription
AuthorizationstringYesBearer token for authentication
X-CompanystringYesCompany UUID to scope the request
Content-TypestringYesMust be application/json

Path parameters

NameTypeRequiredDescription
uuidstringYesInvoice UUID

Request body

NameTypeRequiredDescription
tostringYesRecipient email address
ccstringNoCC email address (comma-separated for multiple)
bccstringNoBCC email address (comma-separated for multiple)
subjectstringNoEmail subject (uses default template if not provided)
bodystringNoEmail body (uses default template if not provided)
attachPdfbooleanNoAttach PDF invoice (default: true)
attachXmlbooleanNoAttach UBL XML (default: false)
languagestringNoEmail template language: ro, en (default: ro)
ℹ️

Use the email defaults endpoint to get pre-filled subject and body based on your company's email template.

Request

curl -X POST https://api.storno.ro/api/v1/invoices/7c9e6679-7425-40de-944b-e07fc1f90ae7/email \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Company: 550e8400-e29b-41d4-a716-446655440000" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "[email protected]",
    "cc": "[email protected]",
    "subject": "Factura FAC-2024-001",
    "body": "Buna ziua,\n\nGasiti atasat factura FAC-2024-001 in valoare de 1,190.00 RON.\n\nMultumim!",
    "attachPdf": true,
    "attachXml": false
  }'

Response

Returns a success confirmation with email details.

{
  "success": true,
  "emailId": "8f9a0b1c-2d3e-4f5a-6b7c-8d9e0f1a2b3c",
  "to": "[email protected]",
  "cc": "[email protected]",
  "subject": "Factura FAC-2024-001",
  "attachments": ["FAC-2024-001.pdf"],
  "sentAt": "2024-02-15T09:05:00Z",
  "deliveryStatus": "sent"
}

Response fields

FieldTypeDescription
successbooleanWhether email was sent successfully
emailIdstringEmail tracking UUID
tostringRecipient email address
ccstringCC recipients (if any)
subjectstringEmail subject that was sent
attachmentsarrayList of attached file names
sentAtstringISO 8601 timestamp
deliveryStatusstringEmail status: sent, queued, failed

Email template variables

When using default templates, the following variables are automatically replaced:

VariableDescriptionExample
{invoice_number}Invoice numberFAC-2024-001
{invoice_total}Formatted total amount1,190.00 RON
{client_name}Client nameAcme Corporation SRL
{company_name}Your company nameYour Company SRL
{due_date}Payment due date15.03.2024
{issue_date}Invoice issue date15.02.2024
{payment_link}Payment link (if enabled)https://pay.storno.ro/...

Default subject template (Romanian)

Factura {invoice_number} de la {company_name}

Default body template (Romanian)

Buna ziua,

Gasiti atasat factura {invoice_number} in valoare de {invoice_total}.

Detalii factura:
- Numar: {invoice_number}
- Data emiterii: {issue_date}
- Scadenta: {due_date}
- Total: {invoice_total}

Multumim!

{company_name}

Email delivery

Emails are sent asynchronously via a queue system:

  1. Immediate - Email queued immediately (response within 200ms)
  2. Processing - Email sent within 1-5 seconds
  3. Delivered - Email delivered to recipient server
  4. Tracking - Delivery status updated via webhooks

You can track delivery status via:

Email configuration

Email sending requires proper configuration in company settings:

  • From address - Verified sender email
  • From name - Display name
  • Reply-to - Reply email address
  • SMTP settings - Custom SMTP (optional)
  • Email template - Default subject and body
⚠️

The sender email must be verified before you can send emails. Unverified emails will result in a 403 error.

Error codes

CodeDescription
400Validation error - invalid email address or missing required fields
401Missing or invalid authentication token
403Sender email not verified
404Invoice not found
422Invoice not issued or PDF/XML not generated
429Rate limit exceeded (max 100 emails per hour)
500Email service temporarily unavailable