---
title: "Retry sending an invoice"
method: POST
path: "/invoices/{invoice_id}/retry-send"
tags: ["Invoicing"]
---

# Retry sending an invoice

`POST /invoices/{invoice_id}/retry-send`

## Request

- Base URL: `https://api.app.lastaccountingcompany.com/portal`
- URL: `https://api.app.lastaccountingcompany.com/portal/invoices/{invoice_id}/retry-send`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/lastaccountingcompany/apis/lac-customer-api/docs/invoices/:invoice_id/retry-send/post.ts> (a function with typed inputs; its response is checked against the schema)

Retries delivery of an invoice whose previous send attempt failed. Safe pre-acceptance failures (delivery_status `send_retryable`) retry as-is. Provider-terminal failures (`failed`, `send_failed`) require a non-empty `reason` recorded in the audit trail — correct the recipient's e-invoice address and operator first; the resend creates a new e-invoice and the failed one stays on record. `send_ambiguous` sends are refused (409) until the outcome is verified with the operator. Requires a write-scoped key.

## Path parameters

- `invoice_id` string, required

## Request body

- object
  - `customer_id` string: Target company. Optional for API keys.
  - `reason` string: Why the resend is safe (e.g. "recipient routing corrected"). Required when delivery_status is `failed` or `send_failed`.

## Response `200`

Updated invoice.

- PortalInvoice: One sales invoice or draft. Amounts are integer cents; interior fields beyond the stable ones vary by status.
  - `id` string
  - `status` string
  - `delivery_channel` string
  - `customer` Party: An invoicing counterparty (the customer you invoice), with e-invoice routing and per-party defaults. Rates in basis points (25.5% = 2550).
    - `id` string: Party id. Include on upsert to update an existing party.
    - `name` string, required
    - `business_id` string: Finnish business ID (Y-tunnus), e.g. `1234567-8`.
    - `vat_number` string: EU VAT number, e.g. `FI12345678`.
    - `address_line1` string
    - `postal_code` string
    - `city` string
    - `country_code` string: ISO 3166-1 alpha-2, e.g. `FI`.
    - `email` string
    - `einvoice_address` string: E-invoice (verkkolasku) address, e.g. an OVT identifier.
    - `einvoice_operator` string: E-invoice operator/intermediator code.
    - `default_payment_terms_days` integer
    - `default_vat_code` string
    - `default_vat_rate_basis_points` integer: Default VAT rate in basis points (25.5% = 2550).
    - `default_invoice_language` string
  - `lines` InvoiceLine[]
    - `description` string, required
    - `quantity` string, required: Decimal quantity as a string, e.g. `"2.5"`.
    - `unit_price_cents` integer, required: Unit price in integer cents.
    - `vat_rate_basis_points` integer, nullable: VAT rate in basis points (25.5% = 2550); null when not applicable.
    - `vat_code` string: VAT treatment code.
    - `net_cents` integer, required: Line net amount in integer cents.
    - `vat_cents` integer, required: Line VAT amount in integer cents.
    - `gross_cents` integer, required: Line gross amount in integer cents.

## Other responses

- `400`: Missing reason for a provider-terminal failure requeue.
- `401`: Missing or invalid bearer token.
- `403`: Insufficient scope or role — e.g. a read-scoped key on a mutating method, or an API key on an admin/approver-only endpoint.
- `409`: Not in a retryable state (including `send_ambiguous`, which must be verified with the e-invoice operator before retrying).

---

[API](https://skmtc.dev/lastaccountingcompany/apis/lac-customer-api.md) - [All operations](https://skmtc.dev/lastaccountingcompany/apis/lac-customer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/lastaccountingcompany/apis/lac-customer-api/revisions/52e277b4f031?raw)
