Creates a write-off of materials and products from stock.

```
v1/writeoffs/add.php
```

## Parameters

| Field | Type | Required | Description |
|---|---|---|---|
| materials | array | materials or products | Materials to write off: id or sku and amount |
| products | array | materials or products | Products to write off: id or sku and amount |
| num | string | No | Number. Default the next one in order |
| date | string | No | Write-off date, YYYY-MM-DD. Default today |
| materials_storage_id | int | No | Storage location materials are written off from. Default the write-off storage location from the company settings |
| products_storage_id | int | No | Storage location products are written off from. Default the write-off storage location from the company settings |
| notes | string | No | Notes |

materials and products line:

| Field | Type | Required | Description |
|---|---|---|---|
| id | int | id or sku | Material or product ID |
| sku | string | id or sku | SKU |
| amount | float | Yes | Quantity, greater than 0 |

A material or product is specified by id or sku. At least one line in one of the arrays is required.

A new write-off is created with the status from the **Default status for new write-offs** setting.

## Example request

```
{
    "date": "2026-10-06",
    "materials": [
        {
            "id": 2051,
            "amount": 0.15
        }
    ],
    "products": [
        {
            "sku": "P-TABLE-01",
            "amount": 1
        }
    ],
    "materials_storage_id": 3998,
    "products_storage_id": 4001,
    "notes": "Defect while cutting"
}
```

## Example response

```
{
    "success": true,
    "writeoff_id": 19291,
    "num": "48",
    "status": 1
}
```

The response returns the ID, number and status code of the new write-off.

## Errors

| Error | Reason |
|---|---|
| No products or materials in input | No line was passed |
| Materials is not an array | materials is not an array (same for products) |
| Line 0 of materials must be an object | The line is not an object (instead of 0, the line number) |
| SKU or id not set for material 0 | The line has neither id nor sku |
| Material with id 2051 not found | Material not found or deleted (for a product: Product with SKU "P-TABLE-01" not found) |
| Amount must be greater than 0 for material with id 2051 | Quantity is not a number or not above 0 after rounding |
| Storage ID not found | Storage location not found or deleted |
| Date is not a valid date in format YYYY-MM-DD | Invalid date format |
