UpdateInvoice
Update an invoice with the parameters you specified.
Method / Endpoint
PUT/ {{API_URL}} Billing/UpdateInvoice/ {{ID}}
Request Parameters
| Parameter Name | Type | Requirement | Description | 
|---|---|---|---|
| {{ID}} | Integer | Yes | Invoice ID Number | 
| notification | Boolean | No | Notification Sending Status | 
| user | Object | No | Customer Information of the Invoice | 
| user.id | Integer | No | Customer ID Number | 
| user.lang | String | No | Customer's language according to ISO 639-1 format. for example: "en", "de", "fr" etc. | 
| user.type | String | No | The customer's account type. "individual", "corporate" | 
| user.name | String | No | Customer's Name | 
| user.surname | String | No | Customer's Last Name | 
| user.full_name | String | No | Customer's Full Name | 
| user.email | String | No | Customer's Email Address | 
| user.phone | Integer | No | The customer's phone number. (Country area code included) For example: if the number is: +1 (123) 456-7890 it should be like this: 11234567890 | 
| user.company_name | String | No | Customer's Company Name | 
| user.company_tax_number | String | No | Customer's Company Tax Number | 
| user.company_tax_office | String | No | Customer's Company Tax Office | 
| user.custom_fields | Object | No | Custom fields belonging to the customer on the invoice | 
| user.custom_fields.field_id | Integer | No | Custom field ID Number | 
| user.custom_fields.name | String | No | Custom Field Name | 
| user.custom_fields.value | String | No | Custom Field Content | 
| user.address.country_code | String | No | Customer's Country Code. (ISO 3166-1 Alpha-2) Ex: US, FR, DE | 
| user.address.country_name | String | No | Customer's Country Name. Ex: United States, Germany, France | 
| user.city | String | No | Customer's City | 
| user.state | String | No | Customer's State | 
| user.detail | String | No | Customer's Address Details | 
| user.zipcode | String | No | Customer's Zip Code | 
| notes | String | No | Invoice Note (For staff to see) | 
| status | String | No | Invoice Status. Values it can take: "unpaid", "pending", "paid", "refunded", "cancelled". Default: "unpaid" | 
| formalize | Boolean | No | Invoice Formalization Status. | 
| formalize_file | String | No | The formalization file must contain a URL. You can also specify a directory path if using the internal API. (The transmitted file will be automatically copied to the system). | 
| created_at | String | No | Invoice Creation Date. Format: YYYY-MM-DD HH:ii:ss Default: The date of the request is considered valid. | 
| due_date | String | No | Invoice Payment Due Date. Format: YYYY-MM-DD HH:ii:ss | 
| payment_date | String | No | Invoice Paid Date. Format: YYYY-MM-DD HH:ii:ss Required if the invoice status is "paid" or "pending". | 
| refund_date | String | No | Invoice Refund Date. Format: YYYY-MM-DD HH:ii:ss Required if the invoice status is "refunded". | 
| currency | String | No | The currency of the invoice. Format: ISO 4217. For example: USD, EUR, GBP | 
| payment_method | String | No | Payment Method Name | 
| payment_method_data | Object | No | Payment Method Data | 
| payment_method_commission | Double | No | Payment Method Commission Amount | 
| payment_method_commission_rate | Double | No | Payment Method Commission Rate | 
| send_bill_to_address | Double | No | Cost of Sending Invoices to the Address | 
| exchange | Double | No | Current Exchange Rate | 
| discounts | Object | No | Discounts | 
| discounts.type | String | Yes | Discount Type. "promotion", "coupon", "dealership" | 
| discounts.sequence | Integer | Yes | It must be the same as the "sequence" information you set in the invoice item. | 
| discounts.rate | Double | No | Discount Percentage. Default: 0 | 
| discounts.amount | Double | Yes | Applied Discount Amount | 
| discounts.description | String | Yes | Discount Name: Coupon code, Promotion name, etc. | 
| discounts.dkey | String | No | If the discount type is "dealership", information on which product or product group the dealership discount is obtained from. | 
External Sample
curl --location --request PUT 'https://example.com/api/Billing/UpdateInvoice/123' \
--header 'Content-Type: application/json' \
--header 'Apikey: [YOUR_API_KEY]' \
--data '{
    "status": "paid",
    "payment_date": "2024-01-14 21:16:10",
    "formalize": true,
    "formalize_file": "https://example.com/1703590375.pdf",
    "payment_method": "BankTransfer",
    "payment_method_data": {
        "bank_name": "TEST BANK",
        "sender_name": "John Doe",
        "rce": "REF1234"
    }
}'Internal Sample
Helper::Load("Api");
try {
    $result = Api::Billing()->UpdateInvoice([
        'id'                  => 123,
        'status'              => 'paid',
        'payment_date'        => '2024-01-14 21:16:10',
        'formalize'           => true,
        'formalize_file'      => 'https://example.com/1703590375.pdf',
        'payment_method'      => 'BankTransfer',
        'payment_method_data' => [
            'bank_name'   => 'TEST BANK',
            'sender_name' => 'John Doe',
            'rce'         => 'REF1234',
        ],
    ]);
    print_r($result);
}
catch (Exception $e)
{
    echo 'Error: '.$e->getMessage();
}Sample JSON Response
{
    "status": "successful",
    "data": {
        "id": 468,
        "number": "#468",
        "user": {
            "id": 22,
            "lang": "en",
            "type": "corporate",
            "identity": "11111111111",
            "company_name": "ABC LLC",
            "company_tax_number": "12345",
            "company_tax_office": "XTEST",
            "name": "Mark",
            "surname": "Roberson",
            "full_name": "Mark Roberson",
            "email": "[email protected]",
            "phone": "19142426349",
            "address": {
                "country_code": "US",
                "country_name": "United States",
                "city": "New York",
                "state": "Mount Kisco",
                "detail": "1159 Lake Forest Drive",
                "zipcode": "10549"
            }
        },
        "taxation_type": "exclusive",
        "notes": "I created this invoice with API",
        "created_at": "2023-12-13 16:25:00",
        "due_date": "2023-12-20 23:59:59",
        "payment_date": "2024-01-14 21:16:10",
        "refund_date": "0000-00-00 00:00:00",
        "status": "paid",
        "formalize": true,
        "formalize_file": "https://example.com/resources/uploads/invoices/875f43260f3f480c23ade59a4bb3f593.pdf",
        "local": false,
        "taxfree": false,
        "exchange_rate": 1,
        "currency": "USD",
        "tax_rate": 0,
        "subtotal": 493.23000000000001818989403545856475830078125,
        "tax": 0,
        "total": 463.58400000000000318323145620524883270263671875,
        "payment_method": "Banka Transfer",
        "payment_method_data": {
            "bank_name": "TEST BANK",
            "sender_name": "John Doe",
            "rce": "REF1234"
        },
        "payment_method_commission": 0,
        "payment_method_commission_rate": 0,
        "send_bill_to_address": 0,
        "share": {
            "token": "bGI1UlRBVXpPL3lmZThpTmM1Zy9pdXhoZldFa3E1cUdNQmRSVWJCV0ROMD0=",
            "link": "https://example.com/en/invoice?token=bGI1UlRBVXpPL3lmZThpTmM1Zy9pdXhoZldFa3E1cUdNQmRSVWJCV0ROMD0="
        },
        "discounts": [
            {
                "type": "coupon",
                "item_id": 571,
                "rate": 20,
                "description": "AE1Q2CDF3",
                "amount": 28.6460000000000007958078640513122081756591796875
            },
            {
                "type": "promotion",
                "item_id": 570,
                "rate": 5,
                "description": "Test Promotion 1",
                "amount": 1
            }
        ],
        "items": [
            {
                "id": 570,
                "rank": 1,
                "owner_id": 468,
                "description": "test description 1",
                "quantity": 1,
                "tax_exempt": false,
                "amount": 100,
                "total": 100,
                "order_id": 0,
                "due_date": "2023-12-20 23:59:59",
                "attributes": {
                    "sample1": "Example test 1",
                    "amount_including_discount": 100
                }
            },
            {
                "id": 571,
                "rank": 2,
                "owner_id": 468,
                "description": "Sample Web Hosting (#123) (example.com) (2023-11-20 - 2023-12-20)",
                "quantity": 1,
                "tax_exempt": false,
                "amount": 143.229999999999989768184605054557323455810546875,
                "total": 143.229999999999989768184605054557323455810546875,
                "order_id": 123,
                "due_date": "2023-12-20 23:59:59",
                "attributes": {
                    "event": "ExtendOrderPeriod",
                    "amount_including_discount": 143.229999999999989768184605054557323455810546875
                }
            },
            {
                "id": 572,
                "rank": 3,
                "owner_id": 468,
                "description": "test description 3",
                "quantity": 1,
                "tax_exempt": false,
                "amount": 250,
                "total": 250,
                "order_id": 0,
                "due_date": "2023-12-20 23:59:59",
                "attributes": {
                    "sample3": "Example test 3"
                }
            }
        ]
    }
}Response Parameters
| Parameter Name | Type | Description | 
|---|---|---|
| status | String | Action Status "successful" or "error" | 
| message | String | Error message if action status is "error" | 
| data | Object | Transmits the same data as "getInvoice". |