> This is Payabli documentation. For a complete page index, fetch https://docs.payabli.com/llms.txt — append .md to any page URL for lightweight markdown. For section-level indexes, query parameters, and other AI-optimized access methods, see https://docs.payabli.com/ai-agents.md

# Manage invoices with the API

> Learn how to create, update, delete, and send invoices with the Payabli API

In Payabli, invoices are what you send to customers when you expect payment. You can use Payabli's invoicing APIs to send basic invoices or invoices with detailed descriptions, order quantities, and payment terms.

This guide covers the key operations for managing invoices through the API.

## Considerations

When working with invoices, keep the following in mind:

* Invoices are always linked to a customer. If you don't include a `customerId` and the `customerData` fields don't match an existing customer, Payabli creates a new customer.
* Payabli *strongly recommends* creating the customer first and passing the `customerId` in the customerData object.
* Invoice numbers must be unique within an paypoint.
* Invoices can be one-time or recurring.
* You can attach a PDF version of an invoice when sending via email using the `attachfile=true` parameter.

## Create an invoice

Send a POST request to `/api/Invoice/{entry}` to create a new invoice. See the [API reference](/developers/api-reference/invoice/add-invoice) for this endpoint for full documentation.

### Request

POST [https://api-sandbox.payabli.com/api/Invoice/\{entry}](https://api-sandbox.payabli.com/api/Invoice/\{entry})

```curl AddInvoice
curl -X POST https://api-sandbox.payabli.com/api/Invoice/8cfec329267 \
     -H "requestToken: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{
  "customerData": {
    "customerNumber": "3",
    "firstName": "Tamara",
    "lastName": "Bagratoni"
  },
  "invoiceData": {
    "discount": 10,
    "frequency": "onetime",
    "invoiceAmount": 982.37,
    "invoiceDate": "2025-10-19",
    "invoiceNumber": "INV-3",
    "invoiceStatus": 1,
    "invoiceType": 0,
    "items": [
      {
        "itemCost": 100,
        "itemDescription": "Consultation for Georgian tours",
        "itemMode": 1,
        "itemProductName": "Adventure Consult",
        "itemQty": 1,
        "itemTotalAmount": 1
      },
      {
        "itemCost": 882.37,
        "itemDescription": "Deposit for trip planning",
        "itemProductName": "Deposit ",
        "itemQty": 1,
        "itemTotalAmount": 1
      }
    ]
  }
}'
```

```typescript AddInvoice
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient({
        apiKey: "YOUR_API_KEY_HERE",
    });
    await client.invoice.addInvoice("8cfec329267", {
        body: {
            customerData: {
                customerNumber: "3",
                firstName: "Tamara",
                lastName: "Bagratoni",
            },
            invoiceData: {
                discount: 10,
                frequency: "onetime",
                invoiceAmount: 982.37,
                invoiceDate: "2025-10-19",
                invoiceNumber: "INV-3",
                invoiceStatus: 1,
                invoiceType: 0,
                items: [
                    {
                        itemCost: 100,
                        itemDescription: "Consultation for Georgian tours",
                        itemMode: 1,
                        itemProductName: "Adventure Consult",
                        itemQty: 1,
                        itemTotalAmount: 1,
                    },
                    {
                        itemCost: 882.37,
                        itemDescription: "Deposit for trip planning",
                        itemProductName: "Deposit ",
                        itemQty: 1,
                        itemTotalAmount: 1,
                    },
                ],
            },
        },
    });
}
main();

```

```python AddInvoice
from payabli import payabli, PayorDataRequest, BillData, BillItem
import datetime

client = payabli(
    api_key="YOUR_API_KEY_HERE",
)

client.invoice.add_invoice(
    entry="8cfec329267",
    customer_data=PayorDataRequest(
        customer_number="3",
        first_name="Tamara",
        last_name="Bagratoni",
    ),
    invoice_data=BillData(
        discount=10,
        frequency="onetime",
        invoice_amount=982.37,
        invoice_date=datetime.date.fromisoformat("2025-10-19"),
        invoice_number="INV-3",
        invoice_status=1,
        invoice_type=0,
        items=[
            BillItem(
                item_cost=100,
                item_description="Consultation for Georgian tours",
                item_mode=1,
                item_product_name="Adventure Consult",
                item_qty=1,
                item_total_amount=1,
            ),
            BillItem(
                item_cost=882.37,
                item_description="Deposit for trip planning",
                item_product_name="Deposit ",
                item_qty=1,
                item_total_amount=1,
            )
        ],
    ),
)

```

```java AddInvoice
package com.example.usage;

import io.github.payabli.api.PayabliPayabliApiClient;
import io.github.payabli.api.resources.invoice.requests.AddInvoiceRequest;
import io.github.payabli.api.resources.invoice.types.InvoiceDataRequest;
import io.github.payabli.api.types.BillData;
import io.github.payabli.api.types.BillItem;
import io.github.payabli.api.types.Frequency;
import io.github.payabli.api.types.PayorDataRequest;
import java.util.Arrays;
import java.util.Optional;

public class Example {
    public static void main(String[] args) {
        PayabliPayabliApiClient client = PayabliPayabliApiClient
            .builder()
            .apiKey("YOUR_API_KEY_HERE")
            .build();

        client.invoice().addInvoice(
            "8cfec329267",
            AddInvoiceRequest
                .builder()
                .body(
                    InvoiceDataRequest
                        .builder()
                        .customerData(
                            PayorDataRequest
                                .builder()
                                .customerNumber("3")
                                .firstName("Tamara")
                                .lastName("Bagratoni")
                                .build()
                        )
                        .invoiceData(
                            BillData
                                .builder()
                                .discount(10.0)
                                .frequency(Frequency.ONE_TIME)
                                .invoiceAmount(982.37)
                                .invoiceDate("2025-10-19")
                                .invoiceNumber("INV-3")
                                .invoiceStatus(1)
                                .invoiceType(0)
                                .items(
                                    Optional.of(
                                        Arrays.asList(
                                            BillItem
                                                .builder()
                                                .itemCost(100.0)
                                                .itemDescription("Consultation for Georgian tours")
                                                .itemMode(1)
                                                .itemProductName("Adventure Consult")
                                                .itemQty(1)
                                                .itemTotalAmount(1.0)
                                                .build(),
                                            BillItem
                                                .builder()
                                                .itemCost(882.37)
                                                .itemDescription("Deposit for trip planning")
                                                .itemProductName("Deposit ")
                                                .itemQty(1)
                                                .itemTotalAmount(1.0)
                                                .build()
                                        )
                                    )
                                )
                                .build()
                        )
                        .build()
                )
                .build()
        );
    }
}
```

```ruby AddInvoice
require "payabli"

client = Payabli::Client.new(api_key: "YOUR_API_KEY_HERE")

client.invoice.add_invoice(
  entry: "8cfec329267",
  customer_data: {
    customer_number: "3",
    first_name: "Tamara",
    last_name: "Bagratoni"
  },
  invoice_data: {
    discount: 10,
    frequency: "onetime",
    invoice_amount: 982.37,
    invoice_date: "2025-10-19",
    invoice_number: "INV-3",
    invoice_status: 1,
    invoice_type: 0,
    items: [{
      item_cost: 100,
      item_description: "Consultation for Georgian tours",
      item_mode: 1,
      item_product_name: "Adventure Consult",
      item_qty: 1,
      item_total_amount: 1
    }, {
      item_cost: 882.37,
      item_description: "Deposit for trip planning",
      item_product_name: "Deposit ",
      item_qty: 1,
      item_total_amount: 1
    }]
  }
)

```

```csharp AddInvoice
using PayabliPayabliApi;
using System.Threading.Tasks;
using System;
using System.Collections.Generic;

namespace Usage;

public class Example
{
    public async Task Do() {
        var client = new PayabliPayabliApiClient(
            apiKey: "YOUR_API_KEY_HERE"
        );

        await client.Invoice.AddInvoiceAsync(
            "8cfec329267",
            new AddInvoiceRequest {
                Body = new InvoiceDataRequest {
                    CustomerData = new PayorDataRequest {
                        CustomerNumber = "3",
                        FirstName = "Tamara",
                        LastName = "Bagratoni"
                    },
                    InvoiceData = new BillData {
                        Discount = 10,
                        Frequency = Frequency.OneTime,
                        InvoiceAmount = 982.37,
                        InvoiceDate = DateOnly.Parse("2025-10-19"),
                        InvoiceNumber = "INV-3",
                        InvoiceStatus = 1,
                        InvoiceType = 0,
                        Items = new List<BillItem>(){
                            new BillItem {
                                ItemCost = 100,
                                ItemDescription = "Consultation for Georgian tours",
                                ItemMode = 1,
                                ItemProductName = "Adventure Consult",
                                ItemQty = 1,
                                ItemTotalAmount = 1
                            },
                            new BillItem {
                                ItemCost = 882.37,
                                ItemDescription = "Deposit for trip planning",
                                ItemProductName = "Deposit ",
                                ItemQty = 1,
                                ItemTotalAmount = 1
                            },
                        }

                    }
                }
            }
        );
    }

}

```

```go AddInvoice
package example

import (
    context "context"

    payabli "github.com/payabli/sdk-go"
    client "github.com/payabli/sdk-go/client"
    option "github.com/payabli/sdk-go/option"
)

func do() {
    client := client.NewClient(
        option.WithApiKey(
            "YOUR_API_KEY_HERE",
        ),
    )
    request := &payabli.AddInvoiceRequest{
        Body: &payabli.InvoiceDataRequest{
            CustomerData: &payabli.PayorDataRequest{
                CustomerNumber: payabli.String(
                    "3",
                ),
                FirstName: payabli.String(
                    "Tamara",
                ),
                LastName: payabli.String(
                    "Bagratoni",
                ),
            },
            InvoiceData: &payabli.BillData{
                Discount: payabli.Float64(
                    10,
                ),
                Frequency: payabli.FrequencyOneTime.Ptr(),
                InvoiceAmount: payabli.Float64(
                    982.37,
                ),
                InvoiceDate: payabli.Time(
                    payabli.MustParseDate(
                        "2025-10-19",
                    ),
                ),
                InvoiceNumber: payabli.String(
                    "INV-3",
                ),
                InvoiceStatus: payabli.Int(
                    1,
                ),
                InvoiceType: payabli.Int(
                    0,
                ),
                Items: []*payabli.BillItem{
                    &payabli.BillItem{
                        ItemCost: 100,
                        ItemDescription: payabli.String(
                            "Consultation for Georgian tours",
                        ),
                        ItemMode: payabli.Int(
                            1,
                        ),
                        ItemProductName: payabli.String(
                            "Adventure Consult",
                        ),
                        ItemQty: payabli.Int(
                            1,
                        ),
                        ItemTotalAmount: payabli.Float64(
                            1,
                        ),
                    },
                    &payabli.BillItem{
                        ItemCost: 882.37,
                        ItemDescription: payabli.String(
                            "Deposit for trip planning",
                        ),
                        ItemProductName: payabli.String(
                            "Deposit ",
                        ),
                        ItemQty: payabli.Int(
                            1,
                        ),
                        ItemTotalAmount: payabli.Float64(
                            1,
                        ),
                    },
                },
            },
        },
    }
    client.Invoice.AddInvoice(
        context.TODO(),
        "8cfec329267",
        request,
    )
}

```

```php AddInvoice
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\Invoice\Requests\AddInvoiceRequest;
use Payabli\Invoice\Types\InvoiceDataRequest;
use Payabli\Types\PayorDataRequest;
use Payabli\Types\BillData;
use Payabli\Types\Frequency;
use DateTime;
use Payabli\Types\BillItem;

$client = new PayabliClient(
    apiKey: 'YOUR_API_KEY_HERE',
);
$client->invoice->addInvoice(
    '8cfec329267',
    new AddInvoiceRequest([
        'body' => new InvoiceDataRequest([
            'customerData' => new PayorDataRequest([
                'customerNumber' => '3',
                'firstName' => 'Tamara',
                'lastName' => 'Bagratoni',
            ]),
            'invoiceData' => new BillData([
                'discount' => 10,
                'frequency' => Frequency::OneTime->value,
                'invoiceAmount' => 982.37,
                'invoiceDate' => new DateTime('2025-10-19'),
                'invoiceNumber' => 'INV-3',
                'invoiceStatus' => 1,
                'invoiceType' => 0,
                'items' => [
                    new BillItem([
                        'itemCost' => 100,
                        'itemDescription' => 'Consultation for Georgian tours',
                        'itemMode' => 1,
                        'itemProductName' => 'Adventure Consult',
                        'itemQty' => 1,
                        'itemTotalAmount' => 1,
                    ]),
                    new BillItem([
                        'itemCost' => 882.37,
                        'itemDescription' => 'Deposit for trip planning',
                        'itemProductName' => 'Deposit ',
                        'itemQty' => 1,
                        'itemTotalAmount' => 1,
                    ]),
                ],
            ]),
        ]),
    ]),
);

```

```swift AddInvoice
import Foundation

let headers = [
  "requestToken": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "customerData": [
    "customerNumber": "3",
    "firstName": "Tamara",
    "lastName": "Bagratoni"
  ],
  "invoiceData": [
    "discount": 10,
    "frequency": "onetime",
    "invoiceAmount": 982.37,
    "invoiceDate": "2025-10-19",
    "invoiceNumber": "INV-3",
    "invoiceStatus": 1,
    "invoiceType": 0,
    "items": [
      [
        "itemCost": 100,
        "itemDescription": "Consultation for Georgian tours",
        "itemMode": 1,
        "itemProductName": "Adventure Consult",
        "itemQty": 1,
        "itemTotalAmount": 1
      ],
      [
        "itemCost": 882.37,
        "itemDescription": "Deposit for trip planning",
        "itemProductName": "Deposit ",
        "itemQty": 1,
        "itemTotalAmount": 1
      ]
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/Invoice/8cfec329267")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

A successful request sends a 200 response with a JSON body that contains the invoice ID.

### Response (200)

```json
{
  "isSuccess": true,
  "responseCode": 1,
  "responseData": 3625,
  "responseText": "Success",
  "pageidentifier": null,
  "roomId": 0
}
```

## Update an invoice

Send a PUT request to `/api/Invoice/{idInvoice}` to change an existing invoice's details such as amount, items, or status. See the [API reference](/developers/api-reference/invoice/update-invoice) for this endpoint for full documentation.

### Request

PUT [https://api-sandbox.payabli.com/api/Invoice/\{idInvoice}](https://api-sandbox.payabli.com/api/Invoice/\{idInvoice})

```curl UpdateInvoice
curl -X PUT https://api-sandbox.payabli.com/api/Invoice/332 \
     -H "requestToken: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{
  "invoiceData": {
    "invoiceAmount": 982.37,
    "invoiceDate": "2025-10-19",
    "invoiceNumber": "INV-6",
    "items": [
      {
        "itemCost": 882.37,
        "itemDescription": "Deposit for trip planning",
        "itemProductName": "Deposit",
        "itemQty": 1
      }
    ]
  }
}'
```

```typescript UpdateInvoice
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient({
        apiKey: "YOUR_API_KEY_HERE",
    });
    await client.invoice.editInvoice(332, {
        body: {
            invoiceData: {
                invoiceAmount: 982.37,
                invoiceDate: "2025-10-19",
                invoiceNumber: "INV-6",
                items: [
                    {
                        itemCost: 882.37,
                        itemDescription: "Deposit for trip planning",
                        itemProductName: "Deposit",
                        itemQty: 1,
                    },
                ],
            },
        },
    });
}
main();

```

```python UpdateInvoice
from payabli import payabli, BillData, BillItem
import datetime

client = payabli(
    api_key="YOUR_API_KEY_HERE",
)

client.invoice.edit_invoice(
    id_invoice=332,
    invoice_data=BillData(
        invoice_amount=982.37,
        invoice_date=datetime.date.fromisoformat("2025-10-19"),
        invoice_number="INV-6",
        items=[
            BillItem(
                item_cost=882.37,
                item_description="Deposit for trip planning",
                item_product_name="Deposit",
                item_qty=1,
            )
        ],
    ),
)

```

```java UpdateInvoice
package com.example.usage;

import io.github.payabli.api.PayabliPayabliApiClient;
import io.github.payabli.api.resources.invoice.requests.EditInvoiceRequest;
import io.github.payabli.api.resources.invoice.types.InvoiceDataRequest;
import io.github.payabli.api.types.BillData;
import io.github.payabli.api.types.BillItem;
import java.util.Arrays;
import java.util.Optional;

public class Example {
    public static void main(String[] args) {
        PayabliPayabliApiClient client = PayabliPayabliApiClient
            .builder()
            .apiKey("YOUR_API_KEY_HERE")
            .build();

        client.invoice().editInvoice(
            332,
            EditInvoiceRequest
                .builder()
                .body(
                    InvoiceDataRequest
                        .builder()
                        .invoiceData(
                            BillData
                                .builder()
                                .invoiceAmount(982.37)
                                .invoiceDate("2025-10-19")
                                .invoiceNumber("INV-6")
                                .items(
                                    Optional.of(
                                        Arrays.asList(
                                            BillItem
                                                .builder()
                                                .itemCost(882.37)
                                                .itemDescription("Deposit for trip planning")
                                                .itemProductName("Deposit")
                                                .itemQty(1)
                                                .build()
                                        )
                                    )
                                )
                                .build()
                        )
                        .build()
                )
                .build()
        );
    }
}
```

```ruby UpdateInvoice
require "payabli"

client = Payabli::Client.new(api_key: "YOUR_API_KEY_HERE")

client.invoice.edit_invoice(
  id_invoice: 332,
  invoice_data: {
    invoice_amount: 982.37,
    invoice_date: "2025-10-19",
    invoice_number: "INV-6",
    items: [{
      item_cost: 882.37,
      item_description: "Deposit for trip planning",
      item_product_name: "Deposit",
      item_qty: 1
    }]
  }
)

```

```csharp UpdateInvoice
using PayabliPayabliApi;
using System.Threading.Tasks;
using System;
using System.Collections.Generic;

namespace Usage;

public class Example
{
    public async Task Do() {
        var client = new PayabliPayabliApiClient(
            apiKey: "YOUR_API_KEY_HERE"
        );

        await client.Invoice.EditInvoiceAsync(
            332,
            new EditInvoiceRequest {
                Body = new InvoiceDataRequest {
                    InvoiceData = new BillData {
                        InvoiceAmount = 982.37,
                        InvoiceDate = DateOnly.Parse("2025-10-19"),
                        InvoiceNumber = "INV-6",
                        Items = new List<BillItem>(){
                            new BillItem {
                                ItemCost = 882.37,
                                ItemDescription = "Deposit for trip planning",
                                ItemProductName = "Deposit",
                                ItemQty = 1
                            },
                        }

                    }
                }
            }
        );
    }

}

```

```go UpdateInvoice
package example

import (
    context "context"

    payabli "github.com/payabli/sdk-go"
    client "github.com/payabli/sdk-go/client"
    option "github.com/payabli/sdk-go/option"
)

func do() {
    client := client.NewClient(
        option.WithApiKey(
            "YOUR_API_KEY_HERE",
        ),
    )
    request := &payabli.EditInvoiceRequest{
        Body: &payabli.InvoiceDataRequest{
            InvoiceData: &payabli.BillData{
                InvoiceAmount: payabli.Float64(
                    982.37,
                ),
                InvoiceDate: payabli.Time(
                    payabli.MustParseDate(
                        "2025-10-19",
                    ),
                ),
                InvoiceNumber: payabli.String(
                    "INV-6",
                ),
                Items: []*payabli.BillItem{
                    &payabli.BillItem{
                        ItemCost: 882.37,
                        ItemDescription: payabli.String(
                            "Deposit for trip planning",
                        ),
                        ItemProductName: payabli.String(
                            "Deposit",
                        ),
                        ItemQty: payabli.Int(
                            1,
                        ),
                    },
                },
            },
        },
    }
    client.Invoice.EditInvoice(
        context.TODO(),
        332,
        request,
    )
}

```

```php UpdateInvoice
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\Invoice\Requests\EditInvoiceRequest;
use Payabli\Invoice\Types\InvoiceDataRequest;
use Payabli\Types\BillData;
use DateTime;
use Payabli\Types\BillItem;

$client = new PayabliClient(
    apiKey: 'YOUR_API_KEY_HERE',
);
$client->invoice->editInvoice(
    332,
    new EditInvoiceRequest([
        'body' => new InvoiceDataRequest([
            'invoiceData' => new BillData([
                'invoiceAmount' => 982.37,
                'invoiceDate' => new DateTime('2025-10-19'),
                'invoiceNumber' => 'INV-6',
                'items' => [
                    new BillItem([
                        'itemCost' => 882.37,
                        'itemDescription' => 'Deposit for trip planning',
                        'itemProductName' => 'Deposit',
                        'itemQty' => 1,
                    ]),
                ],
            ]),
        ]),
    ]),
);

```

```swift UpdateInvoice
import Foundation

let headers = [
  "requestToken": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = ["invoiceData": [
    "invoiceAmount": 982.37,
    "invoiceDate": "2025-10-19",
    "invoiceNumber": "INV-6",
    "items": [
      [
        "itemCost": 882.37,
        "itemDescription": "Deposit for trip planning",
        "itemProductName": "Deposit",
        "itemQty": 1
      ]
    ]
  ]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/Invoice/332")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

A successful request sends a 200 response with a JSON body, exactly like the one in the create an invoice example.

## Get invoice details

Send a GET request to `/api/Invoice/{idInvoice}` to retrieve details about a specific invoice. See the [API reference](/developers/api-reference/invoice/get-invoice) for this endpoint for full documentation.

This example gets details for the invoice with ID `332`.

### Request

GET [https://api-sandbox.payabli.com/api/Invoice/\{idInvoice}](https://api-sandbox.payabli.com/api/Invoice/\{idInvoice})

```curl GetDetails
curl https://api-sandbox.payabli.com/api/Invoice/23548884 \
     -H "requestToken: <apiKey>"
```

```typescript GetDetails
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient({
        apiKey: "YOUR_API_KEY_HERE",
    });
    await client.invoice.getInvoice(23548884);
}
main();

```

```python GetDetails
from payabli import payabli

client = payabli(
    api_key="YOUR_API_KEY_HERE",
)

client.invoice.get_invoice(
    id_invoice=23548884,
)

```

```java GetDetails
package com.example.usage;

import io.github.payabli.api.PayabliPayabliApiClient;

public class Example {
    public static void main(String[] args) {
        PayabliPayabliApiClient client = PayabliPayabliApiClient
            .builder()
            .apiKey("YOUR_API_KEY_HERE")
            .build();

        client.invoice().getInvoice(23548884);
    }
}
```

```ruby GetDetails
require "payabli"

client = Payabli::Client.new(api_key: "YOUR_API_KEY_HERE")

client.invoice.get_invoice(id_invoice: 23548884)

```

```csharp GetDetails
using PayabliPayabliApi;
using System.Threading.Tasks;

namespace Usage;

public class Example
{
    public async Task Do() {
        var client = new PayabliPayabliApiClient(
            apiKey: "YOUR_API_KEY_HERE"
        );

        await client.Invoice.GetInvoiceAsync(
            23548884
        );
    }

}

```

```go GetDetails
package example

import (
    context "context"

    client "github.com/payabli/sdk-go/client"
    option "github.com/payabli/sdk-go/option"
)

func do() {
    client := client.NewClient(
        option.WithApiKey(
            "YOUR_API_KEY_HERE",
        ),
    )
    client.Invoice.GetInvoice(
        context.TODO(),
        23548884,
    )
}

```

```php GetDetails
<?php

namespace Example;

use Payabli\PayabliClient;

$client = new PayabliClient(
    apiKey: 'YOUR_API_KEY_HERE',
);
$client->invoice->getInvoice(
    23548884,
);

```

```swift GetDetails
import Foundation

let headers = ["requestToken": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/Invoice/23548884")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

A successful request sends a 200 response that contains the invoice details.

### Response (200)

```json
{
  "invoiceId": 236,
  "customerId": 4440,
  "paypointId": 56,
  "invoiceNumber": "INV-2345",
  "invoiceDate": "2025-07-01",
  "invoiceDueDate": "2025-07-01",
  "invoiceSentDate": "2025-10-19T00:00:00Z",
  "invoiceEndDate": "2025-07-01",
  "lastPaymentDate": "2025-10-19T00:00:00Z",
  "createdAt": "2022-07-01T15:00:01Z",
  "invoiceStatus": 1,
  "invoiceType": 0,
  "frequency": "onetime",
  "paymentTerms": "NET30",
  "termsConditions": "termsConditions",
  "notes": null,
  "invoiceAmount": 105,
  "invoicePaidAmount": 0,
  "purchaseOrder": "PO-345",
  "shippingAddress1": "123 Walnut St",
  "shippingAddress2": "STE 900",
  "shippingCity": "Johnson City",
  "shippingState": "TN",
  "shippingZip": "37619",
  "shippingFromZip": "30040",
  "shippingCountry": "US",
  "shippingEmail": "example@email.com",
  "shippingPhone": "shippingPhone",
  "summaryCommodityCode": "501718",
  "items": [
    {
      "itemCost": 5,
      "itemCommodityCode": "010",
      "itemDescription": "Deposit for materials.",
      "itemMode": 0,
      "itemProductCode": "M-DEPOSIT",
      "itemProductName": "Materials deposit",
      "itemQty": 1,
      "itemTaxAmount": 7,
      "itemTaxRate": 0.075,
      "itemTotalAmount": 1.1,
      "itemUnitOfMeasure": "SqFt"
    }
  ],
  "Customer": {
    "AdditionalData": null,
    "BillingAddress1": "1111 West 1st Street",
    "BillingAddress2": "Suite 200",
    "BillingCity": "Miami",
    "BillingCountry": "US",
    "BillingEmail": "example@email.com",
    "BillingPhone": "5555555555",
    "BillingState": "FL",
    "BillingZip": "45567",
    "CompanyName": "Sunshine LLC",
    "customerId": 4440,
    "CustomerNumber": "3456-7645A",
    "customerStatus": 1,
    "FirstName": "John",
    "Identifiers": [
      "\\\"firstname\\\"",
      "\\\"lastname\\\"",
      "\\\"email\\\"",
      "\\\"customId\\\""
    ],
    "LastName": "Doe",
    "ShippingAddress1": "123 Walnut St",
    "ShippingAddress2": "STE 900",
    "ShippingCity": "Johnson City",
    "ShippingCountry": "US",
    "ShippingState": "TN",
    "ShippingZip": "37619"
  },
  "paylinkId": "paylinkId",
  "scheduledOptions": {
    "includePaylink": true,
    "includePdf": true
  },
  "PaypointLegalname": "Sinks and Faucets LLC",
  "PaypointDbaname": "Sinks Inc",
  "PaypointEntryname": "5789a30009s",
  "ParentOrgName": "parentOrgName",
  "DocumentsRef": {
    "filelist": [
      {}
    ],
    "zipfile": "zx45.zip"
  },
  "tax": 2.05,
  "discount": 10,
  "freightAmount": 10,
  "dutyAmount": 0,
  "firstName": "firstName",
  "lastName": "lastName",
  "company": "Acme Inc",
  "billEvents": [
    {
      "description": "TransferCreated",
      "eventTime": "2023-07-05T22:31:06Z",
      "extraData": {
        "key": "value"
      },
      "refData": "refData",
      "source": "api"
    }
  ],
  "AdditionalData": null
}
```

## Delete an invoice

Send a DELETE request to `/api/Invoice/{idInvoice}` to delete an invoice. See the [API reference](/developers/api-reference/invoice/delete-invoice) for this endpoint for full documentation.

This example deletes the invoice with ID `332`.

### Request

DELETE [https://api-sandbox.payabli.com/api/Invoice/\{idInvoice}](https://api-sandbox.payabli.com/api/Invoice/\{idInvoice})

```curl DeleteInvoice
curl -X DELETE https://api-sandbox.payabli.com/api/Invoice/23548884 \
     -H "requestToken: <apiKey>"
```

```typescript DeleteInvoice
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient({
        apiKey: "YOUR_API_KEY_HERE",
    });
    await client.invoice.deleteInvoice(23548884);
}
main();

```

```python DeleteInvoice
from payabli import payabli

client = payabli(
    api_key="YOUR_API_KEY_HERE",
)

client.invoice.delete_invoice(
    id_invoice=23548884,
)

```

```java DeleteInvoice
package com.example.usage;

import io.github.payabli.api.PayabliPayabliApiClient;

public class Example {
    public static void main(String[] args) {
        PayabliPayabliApiClient client = PayabliPayabliApiClient
            .builder()
            .apiKey("YOUR_API_KEY_HERE")
            .build();

        client.invoice().deleteInvoice(23548884);
    }
}
```

```ruby DeleteInvoice
require "payabli"

client = Payabli::Client.new(api_key: "YOUR_API_KEY_HERE")

client.invoice.delete_invoice(id_invoice: 23548884)

```

```csharp DeleteInvoice
using PayabliPayabliApi;
using System.Threading.Tasks;

namespace Usage;

public class Example
{
    public async Task Do() {
        var client = new PayabliPayabliApiClient(
            apiKey: "YOUR_API_KEY_HERE"
        );

        await client.Invoice.DeleteInvoiceAsync(
            23548884
        );
    }

}

```

```go DeleteInvoice
package example

import (
    context "context"

    client "github.com/payabli/sdk-go/client"
    option "github.com/payabli/sdk-go/option"
)

func do() {
    client := client.NewClient(
        option.WithApiKey(
            "YOUR_API_KEY_HERE",
        ),
    )
    client.Invoice.DeleteInvoice(
        context.TODO(),
        23548884,
    )
}

```

```php DeleteInvoice
<?php

namespace Example;

use Payabli\PayabliClient;

$client = new PayabliClient(
    apiKey: 'YOUR_API_KEY_HERE',
);
$client->invoice->deleteInvoice(
    23548884,
);

```

```swift DeleteInvoice
import Foundation

let headers = ["requestToken": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/Invoice/23548884")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "DELETE"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

A successful request sends a 200 response with a JSON body.

### Response (200)

```json
{
  "isSuccess": true,
  "responseCode": 1,
  "responseData": 3625,
  "responseText": "Success",
  "pageidentifier": null,
  "roomId": 0
}
```

## Email an invoice

Send a GET request to `/api/Invoice/send/{idInvoice}` to email an invoice to a customer. See the [API reference](/developers/api-reference/invoice/send-invoice-via-email) for this endpoint for full documentation.

Before you get started, you need the `IdInvoice` value returned in the response when you created the invoice and the customer email address.

This example emails the invoice with ID 332 to `tamara@example.com`, and attaches a PDF copy of the invoice.

### Request

GET [https://api-sandbox.payabli.com/api/Invoice/send/\{idInvoice}](https://api-sandbox.payabli.com/api/Invoice/send/\{idInvoice})

```curl SendInvoice
curl -G https://api-sandbox.payabli.com/api/Invoice/send/23548884 \
     -H "requestToken: <apiKey>" \
     -d attachfile=true \
     --data-urlencode mail2=tamara@example.com
```

```typescript SendInvoice
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient({
        apiKey: "YOUR_API_KEY_HERE",
    });
    await client.invoice.sendInvoice(23548884, {
        attachfile: true,
        mail2: "tamara@example.com",
    });
}
main();

```

```python SendInvoice
from payabli import payabli

client = payabli(
    api_key="YOUR_API_KEY_HERE",
)

client.invoice.send_invoice(
    id_invoice=23548884,
    attachfile=True,
    mail_2="tamara@example.com",
)

```

```java SendInvoice
package com.example.usage;

import io.github.payabli.api.PayabliPayabliApiClient;
import io.github.payabli.api.resources.invoice.requests.SendInvoiceRequest;

public class Example {
    public static void main(String[] args) {
        PayabliPayabliApiClient client = PayabliPayabliApiClient
            .builder()
            .apiKey("YOUR_API_KEY_HERE")
            .build();

        client.invoice().sendInvoice(
            23548884,
            SendInvoiceRequest
                .builder()
                .attachfile(true)
                .mail2("tamara@example.com")
                .build()
        );
    }
}
```

```ruby SendInvoice
require "payabli"

client = Payabli::Client.new(api_key: "YOUR_API_KEY_HERE")

client.invoice.send_invoice(
  id_invoice: 23548884,
  attachfile: true,
  mail_2: "tamara@example.com"
)

```

```csharp SendInvoice
using PayabliPayabliApi;
using System.Threading.Tasks;

namespace Usage;

public class Example
{
    public async Task Do() {
        var client = new PayabliPayabliApiClient(
            apiKey: "YOUR_API_KEY_HERE"
        );

        await client.Invoice.SendInvoiceAsync(
            23548884,
            new SendInvoiceRequest {
                Attachfile = true,
                Mail2 = "tamara@example.com"
            }
        );
    }

}

```

```go SendInvoice
package example

import (
    context "context"

    payabli "github.com/payabli/sdk-go"
    client "github.com/payabli/sdk-go/client"
    option "github.com/payabli/sdk-go/option"
)

func do() {
    client := client.NewClient(
        option.WithApiKey(
            "YOUR_API_KEY_HERE",
        ),
    )
    request := &payabli.SendInvoiceRequest{
        Attachfile: payabli.Bool(
            true,
        ),
        Mail2: payabli.String(
            "tamara@example.com",
        ),
    }
    client.Invoice.SendInvoice(
        context.TODO(),
        23548884,
        request,
    )
}

```

```php SendInvoice
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\Invoice\Requests\SendInvoiceRequest;

$client = new PayabliClient(
    apiKey: 'YOUR_API_KEY_HERE',
);
$client->invoice->sendInvoice(
    23548884,
    new SendInvoiceRequest([
        'attachfile' => true,
        'mail2' => 'tamara@example.com',
    ]),
);

```

```swift SendInvoice
import Foundation

let headers = ["requestToken": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/Invoice/send/23548884?attachfile=true&mail2=tamara%40example.com")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

A successful request returns a 200 response with a JSON body.

### Response (200)

```json
{
  "isSuccess": true,
  "responseText": "Success"
}
```

## Related resources

See these related resources to help you get the most out of Payabli.

**Manage bills with the API** - Don't confuse invoices with bills, which are used in Pay Out See [Manage bills with the API](/guides/pay-out-developer-bills-manage)