> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://beta-docs.payabli.com/developer-guides/pay-in-manage-invoices/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://beta-docs.payabli.com/_mcp/server. # Manage invoices 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](/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}) **`AddInvoice`** ```curl AddInvoice curl -X POST https://api-sandbox.payabli.com/api/Invoice/8cfec329267 \ -H "requestToken: " \ -H "Content-Type: application/json" \ -d '{ "customerData": { "customerNumber": "3", "firstName": "Tamara", "lastName": "Bagratoni" }, "invoiceData": { "discount": 10, "frequency": "one-time", "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 }, { "itemCost": 882.37, "itemDescription": "Deposit for trip planning", "itemProductName": "Deposit ", "itemQty": 1 } ] } }' ``` **`AddInvoice`** ```python AddInvoice import requests url = "https://api-sandbox.payabli.com/api/Invoice/8cfec329267" payload = { "customerData": { "customerNumber": "3", "firstName": "Tamara", "lastName": "Bagratoni" }, "invoiceData": { "discount": 10, "frequency": "one-time", "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 }, { "itemCost": 882.37, "itemDescription": "Deposit for trip planning", "itemProductName": "Deposit ", "itemQty": 1 } ] } } headers = { "requestToken": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` **`AddInvoice`** ```javascript AddInvoice const url = 'https://api-sandbox.payabli.com/api/Invoice/8cfec329267'; const options = { method: 'POST', headers: {requestToken: '', 'Content-Type': 'application/json'}, body: '{"customerData":{"customerNumber":"3","firstName":"Tamara","lastName":"Bagratoni"},"invoiceData":{"discount":10,"frequency":"one-time","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},{"itemCost":882.37,"itemDescription":"Deposit for trip planning","itemProductName":"Deposit ","itemQty":1}]}}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` **`AddInvoice`** ```go AddInvoice package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api-sandbox.payabli.com/api/Invoice/8cfec329267" payload := strings.NewReader("{\n \"customerData\": {\n \"customerNumber\": \"3\",\n \"firstName\": \"Tamara\",\n \"lastName\": \"Bagratoni\"\n },\n \"invoiceData\": {\n \"discount\": 10,\n \"frequency\": \"one-time\",\n \"invoiceAmount\": 982.37,\n \"invoiceDate\": \"2025-10-19\",\n \"invoiceNumber\": \"INV-3\",\n \"invoiceStatus\": 1,\n \"invoiceType\": 0,\n \"items\": [\n {\n \"itemCost\": 100,\n \"itemDescription\": \"Consultation for Georgian tours\",\n \"itemMode\": 1,\n \"itemProductName\": \"Adventure Consult\",\n \"itemQty\": 1\n },\n {\n \"itemCost\": 882.37,\n \"itemDescription\": \"Deposit for trip planning\",\n \"itemProductName\": \"Deposit \",\n \"itemQty\": 1\n }\n ]\n }\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("requestToken", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` **`AddInvoice`** ```ruby AddInvoice require 'uri' require 'net/http' url = URI("https://api-sandbox.payabli.com/api/Invoice/8cfec329267") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["requestToken"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"customerData\": {\n \"customerNumber\": \"3\",\n \"firstName\": \"Tamara\",\n \"lastName\": \"Bagratoni\"\n },\n \"invoiceData\": {\n \"discount\": 10,\n \"frequency\": \"one-time\",\n \"invoiceAmount\": 982.37,\n \"invoiceDate\": \"2025-10-19\",\n \"invoiceNumber\": \"INV-3\",\n \"invoiceStatus\": 1,\n \"invoiceType\": 0,\n \"items\": [\n {\n \"itemCost\": 100,\n \"itemDescription\": \"Consultation for Georgian tours\",\n \"itemMode\": 1,\n \"itemProductName\": \"Adventure Consult\",\n \"itemQty\": 1\n },\n {\n \"itemCost\": 882.37,\n \"itemDescription\": \"Deposit for trip planning\",\n \"itemProductName\": \"Deposit \",\n \"itemQty\": 1\n }\n ]\n }\n}" response = http.request(request) puts response.read_body ``` **`AddInvoice`** ```java AddInvoice import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api-sandbox.payabli.com/api/Invoice/8cfec329267") .header("requestToken", "") .header("Content-Type", "application/json") .body("{\n \"customerData\": {\n \"customerNumber\": \"3\",\n \"firstName\": \"Tamara\",\n \"lastName\": \"Bagratoni\"\n },\n \"invoiceData\": {\n \"discount\": 10,\n \"frequency\": \"one-time\",\n \"invoiceAmount\": 982.37,\n \"invoiceDate\": \"2025-10-19\",\n \"invoiceNumber\": \"INV-3\",\n \"invoiceStatus\": 1,\n \"invoiceType\": 0,\n \"items\": [\n {\n \"itemCost\": 100,\n \"itemDescription\": \"Consultation for Georgian tours\",\n \"itemMode\": 1,\n \"itemProductName\": \"Adventure Consult\",\n \"itemQty\": 1\n },\n {\n \"itemCost\": 882.37,\n \"itemDescription\": \"Deposit for trip planning\",\n \"itemProductName\": \"Deposit \",\n \"itemQty\": 1\n }\n ]\n }\n}") .asString(); ``` **`AddInvoice`** ```php AddInvoice request('POST', 'https://api-sandbox.payabli.com/api/Invoice/8cfec329267', [ 'body' => '{ "customerData": { "customerNumber": "3", "firstName": "Tamara", "lastName": "Bagratoni" }, "invoiceData": { "discount": 10, "frequency": "one-time", "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 }, { "itemCost": 882.37, "itemDescription": "Deposit for trip planning", "itemProductName": "Deposit ", "itemQty": 1 } ] } }', 'headers' => [ 'Content-Type' => 'application/json', 'requestToken' => '', ], ]); echo $response->getBody(); ``` **`AddInvoice`** ```csharp AddInvoice using RestSharp; var client = new RestClient("https://api-sandbox.payabli.com/api/Invoice/8cfec329267"); var request = new RestRequest(Method.POST); request.AddHeader("requestToken", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"customerData\": {\n \"customerNumber\": \"3\",\n \"firstName\": \"Tamara\",\n \"lastName\": \"Bagratoni\"\n },\n \"invoiceData\": {\n \"discount\": 10,\n \"frequency\": \"one-time\",\n \"invoiceAmount\": 982.37,\n \"invoiceDate\": \"2025-10-19\",\n \"invoiceNumber\": \"INV-3\",\n \"invoiceStatus\": 1,\n \"invoiceType\": 0,\n \"items\": [\n {\n \"itemCost\": 100,\n \"itemDescription\": \"Consultation for Georgian tours\",\n \"itemMode\": 1,\n \"itemProductName\": \"Adventure Consult\",\n \"itemQty\": 1\n },\n {\n \"itemCost\": 882.37,\n \"itemDescription\": \"Deposit for trip planning\",\n \"itemProductName\": \"Deposit \",\n \"itemQty\": 1\n }\n ]\n }\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` **`AddInvoice`** ```swift AddInvoice import Foundation let headers = [ "requestToken": "", "Content-Type": "application/json" ] let parameters = [ "customerData": [ "customerNumber": "3", "firstName": "Tamara", "lastName": "Bagratoni" ], "invoiceData": [ "discount": 10, "frequency": "one-time", "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 ], [ "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/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" } ``` ## 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](/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}) **`UpdateInvoice`** ```curl UpdateInvoice curl -X PUT https://api-sandbox.payabli.com/api/Invoice/332 \ -H "requestToken: " \ -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 } ] } }' ``` **`UpdateInvoice`** ```python UpdateInvoice import requests url = "https://api-sandbox.payabli.com/api/Invoice/332" payload = { "invoiceData": { "invoiceAmount": 982.37, "invoiceDate": "2025-10-19", "invoiceNumber": "INV-6", "items": [ { "itemCost": 882.37, "itemDescription": "Deposit for trip planning", "itemProductName": "Deposit", "itemQty": 1 } ] } } headers = { "requestToken": "", "Content-Type": "application/json" } response = requests.put(url, json=payload, headers=headers) print(response.json()) ``` **`UpdateInvoice`** ```javascript UpdateInvoice const url = 'https://api-sandbox.payabli.com/api/Invoice/332'; const options = { method: 'PUT', headers: {requestToken: '', 'Content-Type': 'application/json'}, 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}]}}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` **`UpdateInvoice`** ```go UpdateInvoice package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api-sandbox.payabli.com/api/Invoice/332" payload := strings.NewReader("{\n \"invoiceData\": {\n \"invoiceAmount\": 982.37,\n \"invoiceDate\": \"2025-10-19\",\n \"invoiceNumber\": \"INV-6\",\n \"items\": [\n {\n \"itemCost\": 882.37,\n \"itemDescription\": \"Deposit for trip planning\",\n \"itemProductName\": \"Deposit\",\n \"itemQty\": 1\n }\n ]\n }\n}") req, _ := http.NewRequest("PUT", url, payload) req.Header.Add("requestToken", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` **`UpdateInvoice`** ```ruby UpdateInvoice require 'uri' require 'net/http' url = URI("https://api-sandbox.payabli.com/api/Invoice/332") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Put.new(url) request["requestToken"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"invoiceData\": {\n \"invoiceAmount\": 982.37,\n \"invoiceDate\": \"2025-10-19\",\n \"invoiceNumber\": \"INV-6\",\n \"items\": [\n {\n \"itemCost\": 882.37,\n \"itemDescription\": \"Deposit for trip planning\",\n \"itemProductName\": \"Deposit\",\n \"itemQty\": 1\n }\n ]\n }\n}" response = http.request(request) puts response.read_body ``` **`UpdateInvoice`** ```java UpdateInvoice import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.put("https://api-sandbox.payabli.com/api/Invoice/332") .header("requestToken", "") .header("Content-Type", "application/json") .body("{\n \"invoiceData\": {\n \"invoiceAmount\": 982.37,\n \"invoiceDate\": \"2025-10-19\",\n \"invoiceNumber\": \"INV-6\",\n \"items\": [\n {\n \"itemCost\": 882.37,\n \"itemDescription\": \"Deposit for trip planning\",\n \"itemProductName\": \"Deposit\",\n \"itemQty\": 1\n }\n ]\n }\n}") .asString(); ``` **`UpdateInvoice`** ```php UpdateInvoice request('PUT', 'https://api-sandbox.payabli.com/api/Invoice/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 } ] } }', 'headers' => [ 'Content-Type' => 'application/json', 'requestToken' => '', ], ]); echo $response->getBody(); ``` **`UpdateInvoice`** ```csharp UpdateInvoice using RestSharp; var client = new RestClient("https://api-sandbox.payabli.com/api/Invoice/332"); var request = new RestRequest(Method.PUT); request.AddHeader("requestToken", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"invoiceData\": {\n \"invoiceAmount\": 982.37,\n \"invoiceDate\": \"2025-10-19\",\n \"invoiceNumber\": \"INV-6\",\n \"items\": [\n {\n \"itemCost\": 882.37,\n \"itemDescription\": \"Deposit for trip planning\",\n \"itemProductName\": \"Deposit\",\n \"itemQty\": 1\n }\n ]\n }\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` **`UpdateInvoice`** ```swift UpdateInvoice import Foundation let headers = [ "requestToken": "", "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](/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}) **`GetDetails`** ```curl GetDetails curl https://api-sandbox.payabli.com/api/Invoice/23548884 \ -H "requestToken: " ``` **`GetDetails`** ```python GetDetails import requests url = "https://api-sandbox.payabli.com/api/Invoice/23548884" headers = {"requestToken": ""} response = requests.get(url, headers=headers) print(response.json()) ``` **`GetDetails`** ```javascript GetDetails const url = 'https://api-sandbox.payabli.com/api/Invoice/23548884'; const options = {method: 'GET', headers: {requestToken: ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` **`GetDetails`** ```go GetDetails package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api-sandbox.payabli.com/api/Invoice/23548884" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("requestToken", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` **`GetDetails`** ```ruby GetDetails require 'uri' require 'net/http' url = URI("https://api-sandbox.payabli.com/api/Invoice/23548884") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["requestToken"] = '' response = http.request(request) puts response.read_body ``` **`GetDetails`** ```java GetDetails import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api-sandbox.payabli.com/api/Invoice/23548884") .header("requestToken", "") .asString(); ``` **`GetDetails`** ```php GetDetails request('GET', 'https://api-sandbox.payabli.com/api/Invoice/23548884', [ 'headers' => [ 'requestToken' => '', ], ]); echo $response->getBody(); ``` **`GetDetails`** ```csharp GetDetails using RestSharp; var client = new RestClient("https://api-sandbox.payabli.com/api/Invoice/23548884"); var request = new RestRequest(Method.GET); request.AddHeader("requestToken", ""); IRestResponse response = client.Execute(request); ``` **`GetDetails`** ```swift GetDetails import Foundation let headers = ["requestToken": ""] 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 { "AdditionalData": "AdditionalData", "billEvents": [ { "description": "TransferCreated", "eventTime": "2023-07-05T22:31:06Z", "extraData": { "key": "value" }, "refData": "refData", "source": "api" } ], "company": "company", "createdAt": "2022-07-01T15:00:01Z", "customer": { "AdditionalData": "AdditionalData", "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", "CreatedAt": "2022-07-01T15:00:01Z", "customerId": 4440, "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" }, "customerId": 4440, "discount": 10, "documentsRef": { "filelist": [ {} ], "zipfile": "zx45.zip" }, "dutyAmount": 0, "firstName": "firstName", "freightAmount": 10, "frequency": "frequency", "invoiceAmount": 105, "invoiceDate": "2025-07-01", "invoiceDueDate": "2025-07-01", "invoiceEndDate": "2025-07-01", "invoiceId": 236, "invoiceNumber": "INV-2345", "invoicePaidAmount": 0, "invoiceSentDate": "2025-10-19T00:00:00Z", "invoiceStatus": 1, "invoiceType": 0, "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" } ], "lastName": "lastName", "lastPaymentDate": "2025-10-19T00:00:00Z", "notes": "notes", "parentOrgName": "parentOrgName", "paylinkId": "paylinkId", "paymentTerms": "NET30", "paypointDbaname": "paypointDbaname", "paypointEntryname": "paypointEntryname", "paypointId": 56, "paypointLegalname": "paypointLegalname", "purchaseOrder": "PO-345", "scheduledOptions": { "includePaylink": true, "includePdf": true }, "shippingAddress1": "123 Walnut St", "shippingAddress2": "STE 900", "shippingCity": "Johnson City", "shippingCountry": "US", "shippingEmail": "example@email.com", "shippingFromZip": "30040", "shippingPhone": "shippingPhone", "shippingState": "TN", "shippingZip": "37619", "summaryCommodityCode": "501718", "tax": 2.05, "termsConditions": "termsConditions" } ``` ## Delete an invoice Send a DELETE request to `/api/Invoice/{idInvoice}` to delete an invoice. See the [API reference](/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}) **`DeleteInvoice`** ```curl DeleteInvoice curl -X DELETE https://api-sandbox.payabli.com/api/Invoice/23548884 \ -H "requestToken: " ``` **`DeleteInvoice`** ```python DeleteInvoice import requests url = "https://api-sandbox.payabli.com/api/Invoice/23548884" headers = {"requestToken": ""} response = requests.delete(url, headers=headers) print(response.json()) ``` **`DeleteInvoice`** ```javascript DeleteInvoice const url = 'https://api-sandbox.payabli.com/api/Invoice/23548884'; const options = {method: 'DELETE', headers: {requestToken: ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` **`DeleteInvoice`** ```go DeleteInvoice package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api-sandbox.payabli.com/api/Invoice/23548884" req, _ := http.NewRequest("DELETE", url, nil) req.Header.Add("requestToken", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` **`DeleteInvoice`** ```ruby DeleteInvoice require 'uri' require 'net/http' url = URI("https://api-sandbox.payabli.com/api/Invoice/23548884") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Delete.new(url) request["requestToken"] = '' response = http.request(request) puts response.read_body ``` **`DeleteInvoice`** ```java DeleteInvoice import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.delete("https://api-sandbox.payabli.com/api/Invoice/23548884") .header("requestToken", "") .asString(); ``` **`DeleteInvoice`** ```php DeleteInvoice request('DELETE', 'https://api-sandbox.payabli.com/api/Invoice/23548884', [ 'headers' => [ 'requestToken' => '', ], ]); echo $response->getBody(); ``` **`DeleteInvoice`** ```csharp DeleteInvoice using RestSharp; var client = new RestClient("https://api-sandbox.payabli.com/api/Invoice/23548884"); var request = new RestRequest(Method.DELETE); request.AddHeader("requestToken", ""); IRestResponse response = client.Execute(request); ``` **`DeleteInvoice`** ```swift DeleteInvoice import Foundation let headers = ["requestToken": ""] 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" } ``` ## Email an invoice Send a GET request to `/api/Invoice/send/{idInvoice}` to email an invoice to a customer. See the [API reference](/api-reference/invoice/send-invoice-via-email) for this endpoint for full documentation. > **Note** > > 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}) **`SendInvoice`** ```curl SendInvoice curl -G https://api-sandbox.payabli.com/api/Invoice/send/23548884 \ -H "requestToken: " \ -d attachfile=true \ --data-urlencode mail2=tamara@example.com ``` **`SendInvoice`** ```python SendInvoice import requests url = "https://api-sandbox.payabli.com/api/Invoice/send/23548884" querystring = {"attachfile":"true","mail2":"tamara@example.com"} headers = {"requestToken": ""} response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` **`SendInvoice`** ```javascript SendInvoice const url = 'https://api-sandbox.payabli.com/api/Invoice/send/23548884?attachfile=true&mail2=tamara%40example.com'; const options = {method: 'GET', headers: {requestToken: ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` **`SendInvoice`** ```go SendInvoice package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api-sandbox.payabli.com/api/Invoice/send/23548884?attachfile=true&mail2=tamara%40example.com" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("requestToken", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` **`SendInvoice`** ```ruby SendInvoice require 'uri' require 'net/http' url = URI("https://api-sandbox.payabli.com/api/Invoice/send/23548884?attachfile=true&mail2=tamara%40example.com") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["requestToken"] = '' response = http.request(request) puts response.read_body ``` **`SendInvoice`** ```java SendInvoice import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api-sandbox.payabli.com/api/Invoice/send/23548884?attachfile=true&mail2=tamara%40example.com") .header("requestToken", "") .asString(); ``` **`SendInvoice`** ```php SendInvoice request('GET', 'https://api-sandbox.payabli.com/api/Invoice/send/23548884?attachfile=true&mail2=tamara%40example.com', [ 'headers' => [ 'requestToken' => '', ], ]); echo $response->getBody(); ``` **`SendInvoice`** ```csharp SendInvoice using RestSharp; var client = new RestClient("https://api-sandbox.payabli.com/api/Invoice/send/23548884?attachfile=true&mail2=tamara%40example.com"); var request = new RestRequest(Method.GET); request.AddHeader("requestToken", ""); IRestResponse response = client.Execute(request); ``` **`SendInvoice`** ```swift SendInvoice import Foundation let headers = ["requestToken": ""] 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" } ``` > If you're a software company, you're a payments company™