# Generate invoice for shipment Generate an invoice PDF for the shipment. ## What happens - Invoice PDF is generated - Invoice document is attached to the shipment - Shipment billing status changes to INVOICED ## Prerequisites - Shipment must be in READY_TO_INVOICE status Endpoint: POST /shipments/{id}/invoice/generate Version: 1.0.0 Security: BearerAuth ## Path parameters: - `id` (string, required) Resource ID (UUID) or client key Example: "550e8400-e29b-41d4-a716-446655440000" ## Query parameters: - `by` (string) Specify lookup type for faster retrieval. If omitted, defaults to looking up by ID first, then falls back to client key if not found. Use by=key when you know you're providing a client key for best performance. Enum: "id", "key" ## Response 200 fields (application/json): - `shipmentId` (string) - `invoiceId` (string) The generated invoice ID - `documentId` (string) The invoice PDF document ID - `downloadUrl` (string) URL to download the invoice PDF ## Response 400 fields (application/json): - `error` (string, required) Error code - `message` (string, required) Human-readable error message ## Response 401 fields (application/json): - `error` (string, required) Error code - `message` (string, required) Human-readable error message ## Response 404 fields (application/json): - `error` (string, required) Error code - `message` (string, required) Human-readable error message ## Response 409 fields (application/problem+json): - `error` (string, required) Error code - `message` (string, required) Human-readable error message