curl --request PATCH \
--url https://api.salesbricks.com/api/v2/invoices/{invoice_id} \
--header 'Content-Type: multipart/form-data' \
--header 'X-SALESBRICKS-KEY: <api-key>' \
--form due_at=2023-12-25 \
--form issued_at=2023-12-25 \
--form 'purchase_order=<string>' \
--form 'billing_address=<string>' \
--form 'company_name=<string>' \
--form accounts_payable_emails=jsmith@example.com \
--form 'invoice_memo=<string>' \
--form 'reason_for_updating=<string>' \
--form 'line_item_overrides=<string>' \
--form send_invoice=false \
--form persist_memo=false \
--form persist_purchase_order=false \
--form show_brick_descriptions=true \
--form 'pdf_attachments=<string>' \
--form 'pdf_attachments_config={}' \
--form 'tax_id=<string>' \
--form dunning_auto_retries=trueimport requests
url = "https://api.salesbricks.com/api/v2/invoices/{invoice_id}"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"due_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issued_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purchase_order\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"billing_address\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accounts_payable_emails\"\r\n\r\njsmith@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_memo\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"reason_for_updating\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"line_item_overrides\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"send_invoice\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_memo\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_purchase_order\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"show_brick_descriptions\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments_config\"\r\n\r\n{}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tax_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dunning_auto_retries\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
headers = {
"X-SALESBRICKS-KEY": "<api-key>",
"Content-Type": "multipart/form-data"
}
response = requests.patch(url, data=payload, headers=headers)
print(response.text)const form = new FormData();
form.append('due_at', '2023-12-25');
form.append('issued_at', '2023-12-25');
form.append('purchase_order', '<string>');
form.append('billing_address', '<string>');
form.append('company_name', '<string>');
form.append('accounts_payable_emails', 'jsmith@example.com');
form.append('invoice_memo', '<string>');
form.append('reason_for_updating', '<string>');
form.append('line_item_overrides', '<string>');
form.append('send_invoice', 'false');
form.append('persist_memo', 'false');
form.append('persist_purchase_order', 'false');
form.append('show_brick_descriptions', 'true');
form.append('pdf_attachments', '<string>');
form.append('pdf_attachments_config', '{}');
form.append('tax_id', '<string>');
form.append('dunning_auto_retries', 'true');
const options = {method: 'PATCH', headers: {'X-SALESBRICKS-KEY': '<api-key>'}};
options.body = form;
fetch('https://api.salesbricks.com/api/v2/invoices/{invoice_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.salesbricks.com/api/v2/invoices/{invoice_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"due_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issued_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purchase_order\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"billing_address\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accounts_payable_emails\"\r\n\r\njsmith@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_memo\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"reason_for_updating\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"line_item_overrides\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"send_invoice\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_memo\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_purchase_order\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"show_brick_descriptions\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments_config\"\r\n\r\n{}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tax_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dunning_auto_retries\"\r\n\r\ntrue\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"X-SALESBRICKS-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.salesbricks.com/api/v2/invoices/{invoice_id}"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"due_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issued_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purchase_order\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"billing_address\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accounts_payable_emails\"\r\n\r\njsmith@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_memo\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"reason_for_updating\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"line_item_overrides\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"send_invoice\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_memo\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_purchase_order\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"show_brick_descriptions\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments_config\"\r\n\r\n{}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tax_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dunning_auto_retries\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-SALESBRICKS-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.salesbricks.com/api/v2/invoices/{invoice_id}")
.header("X-SALESBRICKS-KEY", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"due_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issued_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purchase_order\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"billing_address\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accounts_payable_emails\"\r\n\r\njsmith@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_memo\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"reason_for_updating\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"line_item_overrides\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"send_invoice\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_memo\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_purchase_order\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"show_brick_descriptions\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments_config\"\r\n\r\n{}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tax_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dunning_auto_retries\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.salesbricks.com/api/v2/invoices/{invoice_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-SALESBRICKS-KEY"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"due_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issued_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purchase_order\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"billing_address\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accounts_payable_emails\"\r\n\r\njsmith@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_memo\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"reason_for_updating\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"line_item_overrides\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"send_invoice\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_memo\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_purchase_order\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"show_brick_descriptions\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments_config\"\r\n\r\n{}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tax_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dunning_auto_retries\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"invoice_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signed_pdf_url": "<string>",
"attachments": [
{
"attachment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"file_name": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}
]
}Update an invoice
Update an invoice with override fields, line item descriptions, and/or PDF attachments.
| Field | Affects this invoice | Persists to future invoices |
|---|---|---|
due_at | ✓ | ✗ |
purchase_order | ✓ | ✓ (if persist_purchase_order=true) |
billing_address | ✓ | ✓ (Updates subscription) |
company_name | ✓ | ✓ (Updates subscription) |
accounts_payable_emails | ✓ | ✓ (Updates subscription) |
invoice_memo | ✓ | ✓ (if persist_memo=true) |
line_item_overrides | ✓ | ✗ |
Upload PDF attachments as multipart form data using the pdf_attachments field.
curl --request PATCH \
--url https://api.salesbricks.com/api/v2/invoices/{invoice_id} \
--header 'Content-Type: multipart/form-data' \
--header 'X-SALESBRICKS-KEY: <api-key>' \
--form due_at=2023-12-25 \
--form issued_at=2023-12-25 \
--form 'purchase_order=<string>' \
--form 'billing_address=<string>' \
--form 'company_name=<string>' \
--form accounts_payable_emails=jsmith@example.com \
--form 'invoice_memo=<string>' \
--form 'reason_for_updating=<string>' \
--form 'line_item_overrides=<string>' \
--form send_invoice=false \
--form persist_memo=false \
--form persist_purchase_order=false \
--form show_brick_descriptions=true \
--form 'pdf_attachments=<string>' \
--form 'pdf_attachments_config={}' \
--form 'tax_id=<string>' \
--form dunning_auto_retries=trueimport requests
url = "https://api.salesbricks.com/api/v2/invoices/{invoice_id}"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"due_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issued_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purchase_order\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"billing_address\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accounts_payable_emails\"\r\n\r\njsmith@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_memo\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"reason_for_updating\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"line_item_overrides\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"send_invoice\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_memo\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_purchase_order\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"show_brick_descriptions\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments_config\"\r\n\r\n{}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tax_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dunning_auto_retries\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
headers = {
"X-SALESBRICKS-KEY": "<api-key>",
"Content-Type": "multipart/form-data"
}
response = requests.patch(url, data=payload, headers=headers)
print(response.text)const form = new FormData();
form.append('due_at', '2023-12-25');
form.append('issued_at', '2023-12-25');
form.append('purchase_order', '<string>');
form.append('billing_address', '<string>');
form.append('company_name', '<string>');
form.append('accounts_payable_emails', 'jsmith@example.com');
form.append('invoice_memo', '<string>');
form.append('reason_for_updating', '<string>');
form.append('line_item_overrides', '<string>');
form.append('send_invoice', 'false');
form.append('persist_memo', 'false');
form.append('persist_purchase_order', 'false');
form.append('show_brick_descriptions', 'true');
form.append('pdf_attachments', '<string>');
form.append('pdf_attachments_config', '{}');
form.append('tax_id', '<string>');
form.append('dunning_auto_retries', 'true');
const options = {method: 'PATCH', headers: {'X-SALESBRICKS-KEY': '<api-key>'}};
options.body = form;
fetch('https://api.salesbricks.com/api/v2/invoices/{invoice_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.salesbricks.com/api/v2/invoices/{invoice_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"due_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issued_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purchase_order\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"billing_address\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accounts_payable_emails\"\r\n\r\njsmith@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_memo\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"reason_for_updating\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"line_item_overrides\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"send_invoice\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_memo\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_purchase_order\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"show_brick_descriptions\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments_config\"\r\n\r\n{}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tax_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dunning_auto_retries\"\r\n\r\ntrue\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"X-SALESBRICKS-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.salesbricks.com/api/v2/invoices/{invoice_id}"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"due_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issued_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purchase_order\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"billing_address\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accounts_payable_emails\"\r\n\r\njsmith@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_memo\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"reason_for_updating\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"line_item_overrides\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"send_invoice\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_memo\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_purchase_order\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"show_brick_descriptions\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments_config\"\r\n\r\n{}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tax_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dunning_auto_retries\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-SALESBRICKS-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.salesbricks.com/api/v2/invoices/{invoice_id}")
.header("X-SALESBRICKS-KEY", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"due_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issued_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purchase_order\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"billing_address\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accounts_payable_emails\"\r\n\r\njsmith@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_memo\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"reason_for_updating\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"line_item_overrides\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"send_invoice\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_memo\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_purchase_order\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"show_brick_descriptions\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments_config\"\r\n\r\n{}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tax_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dunning_auto_retries\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.salesbricks.com/api/v2/invoices/{invoice_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-SALESBRICKS-KEY"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"due_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issued_at\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"purchase_order\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"billing_address\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accounts_payable_emails\"\r\n\r\njsmith@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_memo\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"reason_for_updating\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"line_item_overrides\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"send_invoice\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_memo\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"persist_purchase_order\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"show_brick_descriptions\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf_attachments_config\"\r\n\r\n{}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tax_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dunning_auto_retries\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"invoice_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signed_pdf_url": "<string>",
"attachments": [
{
"attachment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"file_name": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}
]
}Authorizations
API key for authentication
Path Parameters
^([a-zA-Z\d\-]+)$Body
Input serializer for updating an invoice.
Override the due date for this invoice. Pass null for no change.
Override the issue date for this invoice. Pass null for no change.
Purchase order with code. Pass null for no change, empty object or empty code to clear.
Billing address. Pass null for no change. Changes will reflect in the subscription.
Company name for the invoice. Pass null for no change, empty string to clear. Changes will reflect in the subscription.
255List of accounts payable contact emails. Pass null for no change, empty array to clear. Changes will reflect in the subscription.
Memo or notes to appear on the invoice. Pass empty string to clear.
2000Internal reason for updating the invoice (for audit purposes)
500Override descriptions for specific line items. Only affects this invoice, does not persist to future invoices.
Whether to send the invoice to the customer after updating. Defaults to false.
Whether to persist the invoice memo on all future invoices. Defaults to false.
Whether to persist the purchase order number on all future invoices. Defaults to false. When true, the PO number will be applied to all future invoices for this subscription. When false, the PO number is only set for this specific invoice.
Whether to show brick descriptions on the invoice PDF. Defaults to true if not specified.
PDF files to attach to the invoice.
Configuration for managing attachments. Each item specifies either an existing attachment to keep (by attachment_id) or a new file to add (by new_file_index), along with a 'target' to specify where to store it ('invoice' or 'subscription'). The order in this array determines the unified order of attachments in the PDF. Existing attachments NOT in this list will be DELETED. If omitted, pdf_attachments will replace all existing invoice-level attachments.
Show child attributes
Show child attributes
Tax ID for the invoice. Changes will reflect in the subscription.
255Whether to enable automatic retries for failed payments. When enabled, failed invoice payments will be retried using saved payment methods. Defaults to False.
Response
Output serializer for successful invoice update.
The unique identifier of the updated invoice
Signed URL to download the updated invoice PDF. Expires in 1 hour.
Current attachments for this invoice as a flat array. Array order reflects the PDF merge order (unified across both levels).
Show child attributes
Show child attributes