Skip to content

/admin/invoices/:id/invoice_lines

Path: /admin/invoices/:id/invoice_lines

Namespace: admin

Parent Resource: invoices

Overview

Invoice lines represent line items on an invoice. Each line item contains product information, quantity, pricing, tax, and accounting details.

JSON fields: Use seller_item_id and optionally buyer_item_id (not item_id). Send unit_price as a decimal string or number; totals use _*_cents fields in JSON (e.g. total_amount_cents). Use GET responses as the template for PATCH request bodies.

Relationships

InvoiceLine connects to:

  • Invoice (invoice_id) - Parent invoice
  • Item - Multiple roles:
    • seller_item_id - Item from seller's perspective
    • buyer_item_id - Item from buyer's perspective
  • InvoiceLine - Transfer relationships:
    • source_id - Source line (for transfers)
    • destination_id - Destination line (for transfers)
  • AccountingAccount - Multiple accounts:
    • credit_account_id - Credit account
    • debit_account_id - Debit account
    • tax_credit_account_id - Tax credit account
    • tax_debit_account_id - Tax debit account

Available Operations

List Invoice Lines (GET)

Endpoint: GET /admin/invoices/:id/invoice_lines.json

Description: Retrieve all invoice lines for a specific invoice.

Request Example:

bash
GET /admin/invoices/123/invoice_lines.json

Response (200 OK):

json
{
  "invoice_lines": [
    {
      "id": 1,
      "invoice_id": 123,
      "seller_item_id": 45,
      "quantity": 2,
      "unit_price": "50.00",
      "total_amount_cents": 10000,
      "tax_rate": 20.0,
      "description": "Product description"
    }
  ]
}

Show Invoice Line (GET /:id)

Endpoint: GET /admin/invoices/:id/invoice_lines/:id.json

Description: Retrieve a specific invoice line.

Request Example:

bash
GET /admin/invoices/123/invoice_lines/1.json

Response (200 OK):

json
{
  "invoice_line": {
    "id": 1,
    "invoice_id": 123,
    "seller_item_id": 45,
    "quantity": 2,
    "unit_price": "50.00",
    "total_amount_cents": 10000,
    "tax_rate": 20.0,
    "description": "Product description"
  }
}

Create Invoice Line (POST)

Endpoint: POST /admin/invoices/:id/invoice_lines.json

Description: Create a new invoice line for an invoice.

Request Example:

bash
POST /admin/invoices/123/invoice_lines.json
Content-Type: application/json

{
  "invoice_line": {
    "seller_item_id": 45,
    "quantity": 2,
    "unit_price": "50.00",
    "description": "Product description"
  }
}

Response (201 Created):

json
{
  "invoice_line": {
    "id": 1,
    "invoice_id": 123,
    "seller_item_id": 45,
    "quantity": 2,
    "unit_price": "50.00",
    "total_amount_cents": 10000
  }
}

Update Invoice Line (PATCH /:id)

Endpoint: PATCH /admin/invoices/:id/invoice_lines/:id.json

Description: Update an existing invoice line.

Request Example:

bash
PATCH /admin/invoices/123/invoice_lines/1.json
Content-Type: application/json

{
  "invoice_line": {
    "quantity": 3,
    "unit_price": "60.00"
  }
}

Response (200 OK):

json
{
  "invoice_line": {
    "id": 1,
    "quantity": 3,
    "unit_price": "60.00",
    "total_amount_cents": 18000
  }
}

Delete Invoice Line (DELETE /:id)

Endpoint: DELETE /admin/invoices/:id/invoice_lines/:id.json

Description: Delete an invoice line.

Request Example:

bash
DELETE /admin/invoices/123/invoice_lines/1.json

Response (204 No Content)

Batch Actions (POST /batch_action)

Endpoint: POST /admin/invoices/:id/invoice_lines/batch_action.json

Description: Perform batch operations on selected invoice lines.

Request Example:

bash
POST /admin/invoices/123/invoice_lines/batch_action.json
Content-Type: application/json

{
  "batch_action": "update",
  "collection_selection": [1, 2, 3],
  "batch_action_inputs": {
    "tax_rate": 20.0
  }
}

Response (200 OK):

json
{
  "message": "Batch action completed",
  "affected_count": 3
}

Released under an open source license.