---
title: "Issue Invoice"
method: POST
path: "/api/field-app/jobs/{job_id}/invoice/issue"
tags: ["fieldApp"]
---

# Issue Invoice

`POST /api/field-app/jobs/{job_id}/invoice/issue`

## Request

- Base URL: `https://api.electricair.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.electricair.io/api/field-app/jobs/{job_id}/invoice/issue`
- Auth: HTTP bearer

The customer agreed to the work: the draft becomes the invoice to collect on, by check, cash or pay link.

## Path parameters

- `job_id` integer, required

## Response `200`

OK

- AppJobDetailSchema
  - `job` JobCardSchema, required: A job as it appears on a list or the schedule board.
    - `id` integer, required
    - `number` string, required
    - `summary` string, required
    - `job_type_id` integer, required
    - `job_type_name` string, required
    - `category` string, required
    - `business_unit` string, required
    - `status` string, required
    - `status_label` string, required
    - `priority` integer, required
    - `customer_name` string, required
    - `address` AddressSchema
      - `line1` string, required
      - `line2` string, required
      - `city` string, required
      - `state` string, required
      - `postal_code` string, required
      - `formatted` string, required
      - `latitude` number, nullable
      - `longitude` number, nullable
    - `project_id` integer, nullable
    - `deal_id` integer, nullable
    - `service_request_id` integer, nullable
    - `customer_id` integer, nullable
    - `estimated_hours` number, nullable
    - `planned_days` integer
    - `sold_hours` number, nullable
    - `crew_size` integer
    - `suggest_helper` boolean
    - `plan_note` string
    - `next_visit_at` string, date-time, nullable
    - `completed_at` string, date-time, nullable
    - `forms_open` integer
    - `job_summary` string
    - `starts_at` string, date-time, nullable
    - `finish_at` string, date-time, nullable
    - `finish_overridden` boolean
    - `unbooked_days` string[]
    - `appointments_needed` integer
    - `appointments_booked` integer
    - `appointments_crewed` integer
    - `appointments_started` integer
    - `tags` DispatchTagSchema[]
      - `key` string, required
      - `label` string, required
      - `detail` string, required
  - `customer` CustomerContactSchema, required
    - `name` string, required
    - `phone` string, required
    - `email` string, required
  - `job_summary` string, required
  - `instructions` string, required
  - `contract_items` ContractItemSchema[], required
    - `kind` string, required
    - `name` string, required
    - `quantity` number, required
    - `description` string
  - `visits` VisitSchema[], required
    - `id` integer, required
    - `job_id` integer, required
    - `starts_at` string, date-time, required
    - `ends_at` string, date-time, required
    - `arrival_window_start` string, date-time, nullable
    - `arrival_window_end` string, date-time, nullable
    - `status` string, required
    - `status_label` string, required
    - `tentative` boolean
    - `notes` string, required
    - `arrived_at` string, date-time, nullable
    - `finished_at` string, date-time, nullable
    - `crew` CrewMemberSchema[], required
      - `id` integer, required
      - `name` string, required
      - `color` string, required
      - `role` string, required
      - `team` string, required
      - `is_lead` boolean, required
      - `vehicle_name` string, nullable
  - `items` JobItemSchema[], required
    - `id` integer, required
    - `kind` string, required
    - `kind_label` string, required
    - `name` string, required
    - `sku` string, required
    - `quantity` number, required
    - `quantity_used` number, nullable
    - `status` string, required
    - `status_label` string, required
    - `serial_number` string, required
    - `source` string, required
    - `stock_unit_id` integer, nullable
    - `product_id` integer, nullable
    - `cart_id` integer, nullable
    - `unit_price` number, nullable
    - `invoice_number` string, nullable
  - `sold_lines` integer
  - `missing_sold_lines` integer
  - `forms` FormSummarySchema[], required
    - `id` integer, required
    - `job_form_id` integer, required
    - `name` string, required
    - `audience` string, required
    - `required` boolean, required
    - `status` string, required
    - `complete` integer, required
    - `total` integer, required
    - `ai_filled` integer
  - `photos` PhotoSchema[], required
    - `id` integer, required
    - `url` string, required
    - `category` string, required
    - `caption` string, required
    - `taken_at` string, date-time, nullable
    - `technician_name` string, nullable
    - `uploaded_by_technician_id` integer, nullable
    - `uploaded_at` string, date-time, nullable
    - `ready` boolean, required
    - `form_name` string, nullable
    - `media_type` string
    - `content_type` string
  - `invoices` InvoiceSummarySchema[], required
    - `id` integer, required
    - `number` string, required
    - `title` string, required
    - `status` string, required
    - `status_label` string, required
    - `total` number, required
    - `balance` number, required
    - `pay_url` string, required
  - `completion_notes` string, required
  - `can_complete` boolean, required
  - `blocking_forms` string[], required
  - `can_send_invoice` boolean
  - `can_bill` boolean
  - `draft_invoice` AppInvoiceSchema: The invoice the crew is building on a service job, before it is issued.
    - `id` integer, required
    - `number` string, required
    - `title` string, required
    - `lines` AppInvoiceLineSchema[], required
      - `id` integer, required
      - `description` string, required
      - `quantity` number, required
      - `unit_price` number, required
      - `amount` number, required
      - `product_id` integer, nullable
      - `job_item_id` integer, nullable
    - `subtotal` number, required
    - `tax` number, required
    - `total` number, required
  - `form_fill` FormFillSchema
    - `status` 'queued' | 'reading' | 'done' | 'failed', required
    - `filled` integer, required
    - `photos` integer, required
    - `reviewed` integer, required
    - `forms` FormFillFormSchema[]
      - `id` integer, required
      - `name` string, required
      - `filled` integer, required
    - `error` string
    - `manual` boolean
    - `at` string, date-time, nullable

## Changes

> 22 revisions in range; 1 not diffed.

- **2026-11-03** `a13d832a5676`: 2 info
  - added the optional property `form_fill` to the response with the `200` status
  - added the optional property `forms/items/ai_filled` to the response with the `200` status

[Operation history](https://skmtc.dev/electricair/apis/electric-air-autoquote-api/changes/api/field-app/jobs/:job_id/invoice/issue/post.md)

---

[API](https://skmtc.dev/electricair/apis/electric-air-autoquote-api.md) - [All operations](https://skmtc.dev/electricair/apis/electric-air-autoquote-api/llms.txt) - [OpenAPI document](https://skmtc.dev/electricair/apis/electric-air-autoquote-api/revisions/a13d832a5676?raw)
