Invoices
Create, manage, and track invoices. Issue, send, and mark invoices as paid.
REST API — All endpoints require authentication via Bearer token. IncludeAuthorization: Bearer {token}in every request. Tokens are managed in GitScrum Settings → API. Base URL:https://services.gitscrum.com— All request paths in this documentation are relative to this base URL.
Create, manage, and track invoices through their full lifecycle: draft, issue, send, and mark as paid.
List invoices
GET /company-invoices?company_slug={slug}Returns all invoices in the workspace.
Query parameters
| Parameter | Type | Description |
|---|---|---|
company_slug | string | Workspace identifier |
client_uuid | string | Filter by client UUID |
status | string | Filter: draft, issued, sent, paid |
Response
{
"data": [
{
"uuid": "inv-abc-123",
"title": "January 2026 Services",
"status": "sent",
"client": {
"uuid": "client-abc-123",
"name": "Acme Corp"
},
"due_date": "2026-02-28",
"currency": "USD",
"subtotal": 8500,
"tax": 0,
"total": 8500,
"issued_at": "2026-02-01T10:00:00Z",
"paid_at": null,
"created_at": "2026-01-28T09:00:00Z"
}
]
}Get invoice
GET /company-invoices/{uuid}?company_slug={slug}Returns full invoice details including line items.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Invoice UUID |
Response
{
"data": {
"uuid": "inv-abc-123",
"title": "January 2026 Services",
"status": "sent",
"client": {
"uuid": "client-abc-123",
"name": "Acme Corp"
},
"due_date": "2026-02-28",
"currency": "USD",
"subtotal": 8500,
"tax": 0,
"total": 8500,
"items": [
{
"description": "Frontend development",
"quantity": 40,
"unit_price": 150,
"total": 6000
},
{
"description": "Code review & QA",
"quantity": 10,
"unit_price": 250,
"total": 2500
}
],
"issued_at": "2026-02-01T10:00:00Z",
"paid_at": null,
"created_at": "2026-01-28T09:00:00Z"
}
}Create invoice
POST /company-invoicesCreates a new invoice in draft status.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
company_slug | string | Yes | Workspace identifier |
contactcompanyuuid | string | No | Client UUID |
title | string | No | Invoice title |
due_date | string | No | Due date (YYYY-MM-DD) |
currency | string | No | USD, EUR, or BRL |
items | array | No | Array of line items |
Each item in the items array:
| Field | Type | Description |
|---|---|---|
description | string | Line item description |
quantity | number | Quantity |
unit_price | number | Price per unit |
Example
curl -X POST https://services.gitscrum.com/company-invoices \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"company_slug": "acme",
"contact_company_uuid": "client-abc-123",
"title": "February 2026 Services",
"due_date": "2026-03-31",
"currency": "USD",
"items": [
{
"description": "Development hours",
"quantity": 60,
"unit_price": 150
}
]
}'Update invoice
PUT /company-invoices/{uuid}Updates an existing invoice. Accepts the same optional fields as create plus company_slug.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Invoice UUID |
Issue invoice
POST /company-invoices/{uuid}/issue?company_slug={slug}Changes the invoice status from draft to issued.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Invoice UUID |
Send invoice
POST /company-invoices/{uuid}/send?company_slug={slug}Sends the invoice to the client via email.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Invoice UUID |
Mark as paid
POST /company-invoices/{uuid}/paid?company_slug={slug}Marks the invoice as paid.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Invoice UUID |
Response
{
"data": {
"uuid": "inv-abc-123",
"status": "paid",
"paid_at": "2026-02-07T14:00:00Z"
}
}Delete invoice
DELETE /company-invoices/{uuid}?company_slug={slug}Permanently deletes an invoice.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Invoice UUID |
Invoice stats
GET /company-invoices/stats?company_slug={slug}Returns invoice statistics for the workspace.
Response
{
"data": {
"total": 45,
"draft": 3,
"issued": 2,
"sent": 8,
"paid": 32,
"total_value": 185000,
"paid_value": 142000
}
}Add line item
POST /company-invoices/{uuid}/item?company_slug={slug}Adds a line item to an invoice.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Invoice UUID |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
description | string | Yes | Item description |
quantity | number | Yes | Quantity |
unit_price | number | Yes | Price per unit |
List line items
GET /company-invoices/{uuid}/items?company_slug={slug}Returns all line items for an invoice.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Invoice UUID |
Delete line item
DELETE /company-invoices/{uuid}/item/{id}?company_slug={slug}Removes a line item from an invoice.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Invoice UUID |
id | integer | Line item ID |
Mark as refunded
POST /company-invoices/{uuid}/refunded?company_slug={slug}Marks the invoice as refunded.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Invoice UUID |
Invoice lifecycle
draft → issued → sent → paid- Create — invoice starts as
draft - Issue — locks the invoice, changes status to
issued - Send — delivers to client, changes status to
sent - Mark as paid — records payment, changes status to
paid
Field reference
| Field | Type | Description |
|---|---|---|
uuid | string | Invoice unique identifier |
title | string | Invoice title |
status | string | draft, issued, sent, or paid |
client | object | Associated client |
due_date | string | Payment due date |
currency | string | Currency code (USD/EUR/BRL) |
subtotal | number | Subtotal before tax |
tax | number | Tax amount |
total | number | Total amount |
items | array | Line items |
issued_at | datetime | When the invoice was issued |
paid_at | datetime | When payment was recorded |
created_at | datetime | Record creation timestamp |