# Edit Sale

## Endpoint

<mark style="color:purple;">**`PUT`**</mark> `https://api.xtrakit.com/api/v1/sales/edit/{invoice_code}`

## Headers

`Authorization: Bearer API_KEY`

## Path Parameters

<table><thead><tr><th>Parameters</th><th width="100">Type</th><th>Description</th></tr></thead><tbody><tr><td><p>invoice_code </p><p><em><strong>string</strong></em></p></td><td>Required</td><td>An invoice code is a unique code to retrieve a single sale. Should be passed through the URL</td></tr></tbody></table>

## Body Parameters

<table><thead><tr><th>Parameters</th><th width="100">Type</th><th>Description</th></tr></thead><tbody><tr><td><p>invoice_code </p><p><em><strong>string</strong></em></p></td><td>Required</td><td>An invoice code is a unique 6-digit code to generate. </td></tr><tr><td><p>invoice_number </p><p><em><strong>string</strong></em></p></td><td>Required</td><td>An invoice number is a unique 6-digit code to generate.  Prefix depends on the one you set on the system which would be appended automatically. <code>Example: INV-000001</code></td></tr><tr><td><p>customer_id </p><p><em><strong>int</strong></em></p></td><td>Required</td><td>You can retrieve customer IDs from customers created and pull their primary ID here.</td></tr><tr><td><p>sub_total_amount </p><p><em><strong>decimal (10,2)</strong></em></p></td><td>Required</td><td>Subtotal amount of your sales in this format: <code>10.00</code></td></tr><tr><td><p>total_amount </p><p><em><strong>decimal (10,2)</strong></em></p></td><td>Required</td><td>The total amount of your sales after adding everything including tax, discount, etc. In this format: <code>10.00</code></td></tr><tr><td><p>amount_paid </p><p><em><strong>decimal (10,2)</strong></em></p></td><td>Required</td><td>The amount received from the customer when creating this sale. If the amount is zero (0) and the payment method is none, it means the invoice status is <code>DRAFT</code></td></tr><tr><td><p>discount </p><p><em><strong>decimal (10,2)</strong></em></p></td><td>Optional</td><td>Discounts given to the customer on sale can be <code>null.</code> Discount is in value not percentage. <code>Example: 10.00</code></td></tr></tbody></table>

## Sample Requests <a href="#sample-requests" id="sample-requests"></a>

{% tabs %}
{% tab title="PHP" %}
{% code fullWidth="true" %}

```php
<?php
$invoice_code = 'YOUR_INVOICE_CODE' # Replace 'YOUR_INVOICE_CODE' with your actual invoice Code

$data = [
    "invoice_number" => "INV-000001",
    "customer_id" => "42",
    "sub_total_amount" => "100.00",
    "total_amount" => "200.00",
    "amount_paid" => "200.00",
    "discount" => "0.00",
    "invoice_type" => "pos",
    "invoice_colour" => "#FFFFFF",
    "invoice_terms" => "Thanks for doing business",
    "payment_date" => "2024-08-04",
    "payment_type" => "2024-08-04",
    "payment_status" => "paid",
    "issued_by" => "Jones Nathal",
    "due_date" => "2024-08-30",
    "reminder_date" => "2024-08-25"
];

$curl = curl_init();

$url = 'https://api.xtrakit.com/api/v1/sales/edit/' . $invoice_code;

curl_setopt_array($curl, array(
  CURLOPT_URL => $url,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'PUT',
  CURLOPT_POSTFIELDS => $data,
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer API_KEY', // Replace 'API_KEY' with your actual API key
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

?>
```

{% endcode %}
{% endtab %}

{% tab title="NodeJS" %}

```javascript
const axios = require('axios');

const data = {
    "invoice_number": "INV-000001",
    "customer_id": "42",
    "sub_total_amount": "100.00",
    "total_amount": "200.00",
    "amount_paid": "200.00",
    "discount": "0.00",
    "invoice_type": "pos",
    "invoice_colour": "#FFFFFF",
    "invoice_terms": "Thanks for doing business",
    "payment_date": "2024-08-04",
    "payment_type": "2024-08-04",
    "payment_status": "paid",
    "issued_by": "Jones Nathal",
    "due_date": "2024-08-30",
    "reminder_date": "2024-08-25"
};

const config = {
    method: 'put',
    url: 'https://api.xtrakit.com/api/v1/sales/edit/{invoice_code}',
    headers: {
        'Authorization': 'Bearer API_KEY' // Replace 'API_KEY' with your actual API key
    },
    data: data 
};

axios(config).then(function(response) {
    console.log(JSON.stringify(response.data));
}).catch(function(error) {
    console.error(error);
});
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

url = 'https://api.xtrakit.com/api/v1/sales/edit/{invoice_code}'

data = {
    "invoice_number": "INV-000001",
    "customer_id": "42",
    "sub_total_amount": "100.00",
    "total_amount": "200.00",
    "amount_paid": "200.00",
    "discount": "0.00",
    "invoice_type": "pos",
    "invoice_colour": "#FFFFFF",
    "invoice_terms": "Thanks for doing business",
    "payment_date": "2024-08-04",
    "payment_type": "2024-08-04",
    "payment_status": "paid",
    "issued_by": "Jones Nathal",
    "due_date": "2024-08-30",
    "reminder_date": "2024-08-25"
}

headers = {
    "Authorization": "Bearer API_KEY" # Replace 'API_KEY' with your actual API key
}

try:
    response = requests.put(url, headers=headers, json=data)
    print(response.json())
except requests.exceptions.RequestException as e:
    print(e)
```

{% endtab %}
{% endtabs %}

## Sample Response

{% tabs %}
{% tab title="Success" %}

```json
{
    "status": 200,
    "message": "Sale updated successfully",
    "data": {
        "sales": {
            "id": 32,
            "invoice_code": 324232,
            "invoice_number": "INV-000001",
            "customer_id": "42",
            "sub_total_amount": "100.00",
            "total_amount": "200.00",
            "amount_paid": "200.00",
            "discount": "0.00",
            "invoice_type": "pos",
            "invoice_colour": "#FFFFFF",
            "invoice_note": null,
            "invoice_terms": "Thanks for doing business",
            "payment_internal_note": null,
            "payment_date": "2024-08-04",
            "payment_type": "2024-08-04",
            "payment_status": "paid",
            "issued_by": "Jones Nathal",
            "due_date": "2024-08-30",
            "reminder_date": "2024-08-25",
            "reminder_message": null,
            "created_at": "2024-08-04 08:23:45",
            "updated_at": "2024-08-04 02:00:43"
        },
        "sales-item": [
            {
                "id": 45,
                "invoice_code": "324232",
                "invoice_number": "INV-000001",
                "item_name": "Web Design",
                "description": "Including hosting",
                "unit_price": "100.00",
                "quantity": "2",
                "tax": "0.00",
                "created_at": "2024-08-04 08:23:45",
                "updated_at": "2024-08-04 02:00:43"
            },
            ...
        ],
        "sales-payment": [
            {
                "invoice_code": "324232",
                "customer_name": "Peter Amos",
                "amount_paid": "200.00",
                "payment_method": "Cash",
                "internal_payment_note": null,
                "issued_by": "Jones Nathal",
                "payment_at": "2024-08-04 08:23:45",
                "created_at": "2024-08-04 08:23:45",
                "updated_at": "2024-08-04 02:00:43"
            },
            ...
        ]
    }
}
```

{% endtab %}

{% tab title="Error" %}

```json
{
    "status": 401,
    "error": "Unauthorized: Missing Bearer Token"
},

{
    "status": 401,
    "error": "Unauthorized: Invalid API Key"
}
```

{% endtab %}
{% endtabs %}
