Create an Invoice
Scopes: invoice:create
curl --request POST \
--url https://api.sandbox.getasset.com/v0/business/{business_id}/invoice \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"number": "INV-001",
"description": "Web development services",
"due_at": "2025-02-15T00:00:00Z",
"sent_at": "2025-01-15T00:00:00Z",
"lines": [
{
"description": "Web development services",
"amount": 520.56,
"ledger_id": "<string>",
"metadata": {}
}
],
"customer_id": "cus_WQMDNUHpBThYSNh4AprDBo",
"customer_external_id": "cust_ext_001",
"metadata": {},
"tags": {
"Location": "NYC"
}
}
]
'import requests
url = "https://api.sandbox.getasset.com/v0/business/{business_id}/invoice"
payload = [
{
"number": "INV-001",
"description": "Web development services",
"due_at": "2025-02-15T00:00:00Z",
"sent_at": "2025-01-15T00:00:00Z",
"lines": [
{
"description": "Web development services",
"amount": 520.56,
"ledger_id": "<string>",
"metadata": {}
}
],
"customer_id": "cus_WQMDNUHpBThYSNh4AprDBo",
"customer_external_id": "cust_ext_001",
"metadata": {},
"tags": { "Location": "NYC" }
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
number: 'INV-001',
description: 'Web development services',
due_at: '2025-02-15T00:00:00Z',
sent_at: '2025-01-15T00:00:00Z',
lines: [
{
description: 'Web development services',
amount: 520.56,
ledger_id: '<string>',
metadata: {}
}
],
customer_id: 'cus_WQMDNUHpBThYSNh4AprDBo',
customer_external_id: 'cust_ext_001',
metadata: {},
tags: {Location: 'NYC'}
}
])
};
fetch('https://api.sandbox.getasset.com/v0/business/{business_id}/invoice', 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.sandbox.getasset.com/v0/business/{business_id}/invoice",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
[
'number' => 'INV-001',
'description' => 'Web development services',
'due_at' => '2025-02-15T00:00:00Z',
'sent_at' => '2025-01-15T00:00:00Z',
'lines' => [
[
'description' => 'Web development services',
'amount' => 520.56,
'ledger_id' => '<string>',
'metadata' => [
]
]
],
'customer_id' => 'cus_WQMDNUHpBThYSNh4AprDBo',
'customer_external_id' => 'cust_ext_001',
'metadata' => [
],
'tags' => [
'Location' => 'NYC'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.sandbox.getasset.com/v0/business/{business_id}/invoice"
payload := strings.NewReader("[\n {\n \"number\": \"INV-001\",\n \"description\": \"Web development services\",\n \"due_at\": \"2025-02-15T00:00:00Z\",\n \"sent_at\": \"2025-01-15T00:00:00Z\",\n \"lines\": [\n {\n \"description\": \"Web development services\",\n \"amount\": 520.56,\n \"ledger_id\": \"<string>\",\n \"metadata\": {}\n }\n ],\n \"customer_id\": \"cus_WQMDNUHpBThYSNh4AprDBo\",\n \"customer_external_id\": \"cust_ext_001\",\n \"metadata\": {},\n \"tags\": {\n \"Location\": \"NYC\"\n }\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.getasset.com/v0/business/{business_id}/invoice")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"number\": \"INV-001\",\n \"description\": \"Web development services\",\n \"due_at\": \"2025-02-15T00:00:00Z\",\n \"sent_at\": \"2025-01-15T00:00:00Z\",\n \"lines\": [\n {\n \"description\": \"Web development services\",\n \"amount\": 520.56,\n \"ledger_id\": \"<string>\",\n \"metadata\": {}\n }\n ],\n \"customer_id\": \"cus_WQMDNUHpBThYSNh4AprDBo\",\n \"customer_external_id\": \"cust_ext_001\",\n \"metadata\": {},\n \"tags\": {\n \"Location\": \"NYC\"\n }\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.getasset.com/v0/business/{business_id}/invoice")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"number\": \"INV-001\",\n \"description\": \"Web development services\",\n \"due_at\": \"2025-02-15T00:00:00Z\",\n \"sent_at\": \"2025-01-15T00:00:00Z\",\n \"lines\": [\n {\n \"description\": \"Web development services\",\n \"amount\": 520.56,\n \"ledger_id\": \"<string>\",\n \"metadata\": {}\n }\n ],\n \"customer_id\": \"cus_WQMDNUHpBThYSNh4AprDBo\",\n \"customer_external_id\": \"cust_ext_001\",\n \"metadata\": {},\n \"tags\": {\n \"Location\": \"NYC\"\n }\n }\n]"
response = http.request(request)
puts response.read_body{
"data": [
{
"business_id": "biz_Pk2fNFDd8wj7EFeLWJywc7",
"number": "INV-1234567890",
"description": "Invoice from Acme Corp",
"total_amount": 520.56,
"source": "manual",
"due_at": "2023-11-07T05:31:56Z",
"sent_at": "2023-11-07T05:31:56Z",
"status": "paid",
"id": "inv_GkBo16N66u2teKfFuFMMwf",
"customer_id": "cus_WxcM3ypJ5boFxsNQzcqRXe",
"total_paid": 520.56,
"voided_at": "2023-11-07T05:31:56Z",
"metadata": {},
"lines": [
{
"description": "Web development services",
"ledger_id": "ldg_ErisumsAc7qgmbTctM7zKK",
"amount": 520.56,
"id": "inl_GkBo16N66u2teKfFuFMMwf",
"invoice_id": "inv_WQMDNUHpBThYSNh4AprDBo",
"metadata": {}
}
],
"payments": [
{
"invoice_id": "inv_GkBo16N66u2teKfFuFMMwf",
"payment_id": "inp_ErisumsAc7qgmbTctM7zKK",
"datetime": "2021-01-01T00:00:00Z",
"payment_amount": 520.56,
"id": "inp_WQMDNUHpBThYSNh4AprDBo",
"transaction_id": "txn_WQMDNUHpBThYSNh4AprDBo",
"credit_journal_entry_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credit_memo_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invoice": "<unknown>",
"is_write_off": false
}
],
"tags": {
"Job": [
{
"amount": "3000.00",
"value": "Maple Street Remodel"
},
{
"amount": "1500.00",
"value": "Downtown Office Rewire"
}
]
}
}
],
"errors": [
{
"error": "<string>",
"invoice_number": "<string>"
}
]
}{
"error": "<string>",
"data": "<unknown>"
}{
"error": "<string>",
"data": "<unknown>"
}{
"error": "<string>",
"data": "<unknown>"
}{
"error": "<string>",
"data": "<unknown>"
}{
"error": "<string>",
"data": "<unknown>"
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Headers
Optional external entity identifier that performed the action
Path Parameters
The id of the business
"biz_GA6EG2qFxA97NZHtxeLPUy"
Body
100The number of the invoice
255"INV-001"
The description of the invoice
512"Web development services"
The due date of the invoice in ISO-8601 format
"2025-02-15T00:00:00Z"
The date the invoice was sent in ISO-8601 format
"2025-01-15T00:00:00Z"
The lines of the invoice
Show child attributes
Show child attributes
The ID of the Customer that the invoice is associated with. Required if customer_external_id is not provided.
"cus_WQMDNUHpBThYSNh4AprDBo"
The external ID of the Customer that the invoice is associated with. Required if customer_id is not provided.
255"cust_ext_001"
Inline tag input. Each field maps to either a single value (string, e.g. 'NYC') or a list of {value, amount} objects to allocate the invoice across multiple values. The tag field must already exist; values are created automatically if missing. Per-field sum of amounts must not exceed the invoice total.
Show child attributes
Show child attributes
{ "Location": "NYC" }
curl --request POST \
--url https://api.sandbox.getasset.com/v0/business/{business_id}/invoice \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"number": "INV-001",
"description": "Web development services",
"due_at": "2025-02-15T00:00:00Z",
"sent_at": "2025-01-15T00:00:00Z",
"lines": [
{
"description": "Web development services",
"amount": 520.56,
"ledger_id": "<string>",
"metadata": {}
}
],
"customer_id": "cus_WQMDNUHpBThYSNh4AprDBo",
"customer_external_id": "cust_ext_001",
"metadata": {},
"tags": {
"Location": "NYC"
}
}
]
'import requests
url = "https://api.sandbox.getasset.com/v0/business/{business_id}/invoice"
payload = [
{
"number": "INV-001",
"description": "Web development services",
"due_at": "2025-02-15T00:00:00Z",
"sent_at": "2025-01-15T00:00:00Z",
"lines": [
{
"description": "Web development services",
"amount": 520.56,
"ledger_id": "<string>",
"metadata": {}
}
],
"customer_id": "cus_WQMDNUHpBThYSNh4AprDBo",
"customer_external_id": "cust_ext_001",
"metadata": {},
"tags": { "Location": "NYC" }
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
number: 'INV-001',
description: 'Web development services',
due_at: '2025-02-15T00:00:00Z',
sent_at: '2025-01-15T00:00:00Z',
lines: [
{
description: 'Web development services',
amount: 520.56,
ledger_id: '<string>',
metadata: {}
}
],
customer_id: 'cus_WQMDNUHpBThYSNh4AprDBo',
customer_external_id: 'cust_ext_001',
metadata: {},
tags: {Location: 'NYC'}
}
])
};
fetch('https://api.sandbox.getasset.com/v0/business/{business_id}/invoice', 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.sandbox.getasset.com/v0/business/{business_id}/invoice",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
[
'number' => 'INV-001',
'description' => 'Web development services',
'due_at' => '2025-02-15T00:00:00Z',
'sent_at' => '2025-01-15T00:00:00Z',
'lines' => [
[
'description' => 'Web development services',
'amount' => 520.56,
'ledger_id' => '<string>',
'metadata' => [
]
]
],
'customer_id' => 'cus_WQMDNUHpBThYSNh4AprDBo',
'customer_external_id' => 'cust_ext_001',
'metadata' => [
],
'tags' => [
'Location' => 'NYC'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.sandbox.getasset.com/v0/business/{business_id}/invoice"
payload := strings.NewReader("[\n {\n \"number\": \"INV-001\",\n \"description\": \"Web development services\",\n \"due_at\": \"2025-02-15T00:00:00Z\",\n \"sent_at\": \"2025-01-15T00:00:00Z\",\n \"lines\": [\n {\n \"description\": \"Web development services\",\n \"amount\": 520.56,\n \"ledger_id\": \"<string>\",\n \"metadata\": {}\n }\n ],\n \"customer_id\": \"cus_WQMDNUHpBThYSNh4AprDBo\",\n \"customer_external_id\": \"cust_ext_001\",\n \"metadata\": {},\n \"tags\": {\n \"Location\": \"NYC\"\n }\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.getasset.com/v0/business/{business_id}/invoice")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"number\": \"INV-001\",\n \"description\": \"Web development services\",\n \"due_at\": \"2025-02-15T00:00:00Z\",\n \"sent_at\": \"2025-01-15T00:00:00Z\",\n \"lines\": [\n {\n \"description\": \"Web development services\",\n \"amount\": 520.56,\n \"ledger_id\": \"<string>\",\n \"metadata\": {}\n }\n ],\n \"customer_id\": \"cus_WQMDNUHpBThYSNh4AprDBo\",\n \"customer_external_id\": \"cust_ext_001\",\n \"metadata\": {},\n \"tags\": {\n \"Location\": \"NYC\"\n }\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.getasset.com/v0/business/{business_id}/invoice")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"number\": \"INV-001\",\n \"description\": \"Web development services\",\n \"due_at\": \"2025-02-15T00:00:00Z\",\n \"sent_at\": \"2025-01-15T00:00:00Z\",\n \"lines\": [\n {\n \"description\": \"Web development services\",\n \"amount\": 520.56,\n \"ledger_id\": \"<string>\",\n \"metadata\": {}\n }\n ],\n \"customer_id\": \"cus_WQMDNUHpBThYSNh4AprDBo\",\n \"customer_external_id\": \"cust_ext_001\",\n \"metadata\": {},\n \"tags\": {\n \"Location\": \"NYC\"\n }\n }\n]"
response = http.request(request)
puts response.read_body{
"data": [
{
"business_id": "biz_Pk2fNFDd8wj7EFeLWJywc7",
"number": "INV-1234567890",
"description": "Invoice from Acme Corp",
"total_amount": 520.56,
"source": "manual",
"due_at": "2023-11-07T05:31:56Z",
"sent_at": "2023-11-07T05:31:56Z",
"status": "paid",
"id": "inv_GkBo16N66u2teKfFuFMMwf",
"customer_id": "cus_WxcM3ypJ5boFxsNQzcqRXe",
"total_paid": 520.56,
"voided_at": "2023-11-07T05:31:56Z",
"metadata": {},
"lines": [
{
"description": "Web development services",
"ledger_id": "ldg_ErisumsAc7qgmbTctM7zKK",
"amount": 520.56,
"id": "inl_GkBo16N66u2teKfFuFMMwf",
"invoice_id": "inv_WQMDNUHpBThYSNh4AprDBo",
"metadata": {}
}
],
"payments": [
{
"invoice_id": "inv_GkBo16N66u2teKfFuFMMwf",
"payment_id": "inp_ErisumsAc7qgmbTctM7zKK",
"datetime": "2021-01-01T00:00:00Z",
"payment_amount": 520.56,
"id": "inp_WQMDNUHpBThYSNh4AprDBo",
"transaction_id": "txn_WQMDNUHpBThYSNh4AprDBo",
"credit_journal_entry_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credit_memo_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invoice": "<unknown>",
"is_write_off": false
}
],
"tags": {
"Job": [
{
"amount": "3000.00",
"value": "Maple Street Remodel"
},
{
"amount": "1500.00",
"value": "Downtown Office Rewire"
}
]
}
}
],
"errors": [
{
"error": "<string>",
"invoice_number": "<string>"
}
]
}{
"error": "<string>",
"data": "<unknown>"
}{
"error": "<string>",
"data": "<unknown>"
}{
"error": "<string>",
"data": "<unknown>"
}{
"error": "<string>",
"data": "<unknown>"
}{
"error": "<string>",
"data": "<unknown>"
}