curl --request GET \
--url https://api.meetcampfire.com/coa/api/v1/invoice/{id}import requests
url = "https://api.meetcampfire.com/coa/api/v1/invoice/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.meetcampfire.com/coa/api/v1/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.meetcampfire.com/coa/api/v1/invoice/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.meetcampfire.com/coa/api/v1/invoice/{id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.meetcampfire.com/coa/api/v1/invoice/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetcampfire.com/coa/api/v1/invoice/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"id": 47864,
"lines": [
{
"id": 206228,
"product_name": "Enterprise Subscription",
"stripe_product_id": "prod_RncZVXRunpKxAk",
"product_is_taxable": true,
"anrok_item_id": null,
"service_date": "2028-04-01",
"description": "Enterprise Subscription (2028-04-01 - 2028-06-30)",
"quantity": 1,
"rate": 6249.99,
"currency": "USD",
"amount": 6249.99,
"tax": 0,
"tax_description": null,
"created_at": "2025-05-02T16:24:50+00:00",
"last_modified_at": "2025-05-02T16:24:50+00:00",
"product": 1717
}
],
"payments": [
{
"id": 22220,
"credit_memo": null,
"currency": "USD",
"amount": 6249.99,
"payment_date": "2025-04-30",
"created_at": "2025-04-24T23:13:35+00:00",
"voided_date": null,
"source": "MANUAL",
"last_modified_at": "2025-04-24T23:13:35+00:00",
"payment_journal_entry": null,
"payment_transaction": null,
"voided_journal_entry": null
}
],
"payment_journal_entries": [
null
],
"client_name": "Apple",
"client_email": null,
"client_invoice_message": null,
"client_use_stripe_auto_bill": false,
"status": "paid",
"past_due_days": null,
"entity_name": "Top Level",
"entity_currency": "USD",
"entity_invoice_message": "Please make a payment to the following bank:\n\nBank Name: JP Morgan Chase\nBank Address: 456 Another Rd, San Francisco, CA, USA\nSWIFT/BIC Code: XYZBUS22\nAccount Number: 123456789\nAccount Type: Checking\nAccount Name: Campfire Software",
"total_amount": 6249.99,
"amount_paid": 6249.99,
"amount_due": 0,
"attachments": [],
"invoice_number": "INV-0000493",
"item_date": null,
"voided_journal_entry_order": null,
"auto_send_invoice": false,
"auto_send_invoice_at": null,
"auto_sent_at": null,
"reminder_sent_dates": {},
"billing_address": "",
"shipping_address": "",
"terms": "net_30",
"ref_number": null,
"purchase_order_number": null,
"invoice_date": "2028-04-01",
"due_date": "2028-05-01",
"shipping_date": null,
"paid_date": "2025-04-30",
"uncollectible_date": null,
"sent_date": null,
"period_start": "2028-04-01",
"period_end": "2028-06-30",
"location_of_sale": null,
"message_on_invoice": "Pay invoice here: https://billing.stripe.com/p/login/test_8wM8At9rYeT3ayY4gm",
"payment_status": "paid",
"warning_message": null,
"created_at": "2025-03-21T19:39:47+00:00",
"last_modified_at": "2025-05-02T16:24:50+00:00",
"currency": "USD",
"exchange_rate": 1,
"exchange_rate_book": 1,
"last_sent_at": null,
"integration_id": null,
"integration_context": null,
"use_stripe_auto_bill": false,
"stripe_payment_link_id": null,
"stripe_payment_intent_id": null,
"stripe_invoice_id": null,
"stripe_pdf_url": null,
"stripe_payment_link": null,
"source": null,
"source_id": null,
"voided_date": null,
"entity": 54,
"client": 24020,
"bad_debt_journal_entry": null,
"journal_entry": 2681173,
"contract": null,
"avalara_connection": null,
"sphere_connection": null,
"anrok_connection": null,
"tax_rate": null,
"stripe_connection": null,
"source_file": null,
"voided_journal_entry": null
}Retrieve Invoice
Retrieves a single accounting invoice with complete details including line items, payments, and accounting relationships.
This endpoint provides comprehensive invoice information with:
- Complete invoice metadata (dates, amounts, status, terms)
- All associated line items with product details and tax information
- Payment history with journal entry references and transaction details
curl --request GET \
--url https://api.meetcampfire.com/coa/api/v1/invoice/{id}import requests
url = "https://api.meetcampfire.com/coa/api/v1/invoice/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.meetcampfire.com/coa/api/v1/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.meetcampfire.com/coa/api/v1/invoice/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.meetcampfire.com/coa/api/v1/invoice/{id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.meetcampfire.com/coa/api/v1/invoice/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetcampfire.com/coa/api/v1/invoice/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"id": 47864,
"lines": [
{
"id": 206228,
"product_name": "Enterprise Subscription",
"stripe_product_id": "prod_RncZVXRunpKxAk",
"product_is_taxable": true,
"anrok_item_id": null,
"service_date": "2028-04-01",
"description": "Enterprise Subscription (2028-04-01 - 2028-06-30)",
"quantity": 1,
"rate": 6249.99,
"currency": "USD",
"amount": 6249.99,
"tax": 0,
"tax_description": null,
"created_at": "2025-05-02T16:24:50+00:00",
"last_modified_at": "2025-05-02T16:24:50+00:00",
"product": 1717
}
],
"payments": [
{
"id": 22220,
"credit_memo": null,
"currency": "USD",
"amount": 6249.99,
"payment_date": "2025-04-30",
"created_at": "2025-04-24T23:13:35+00:00",
"voided_date": null,
"source": "MANUAL",
"last_modified_at": "2025-04-24T23:13:35+00:00",
"payment_journal_entry": null,
"payment_transaction": null,
"voided_journal_entry": null
}
],
"payment_journal_entries": [
null
],
"client_name": "Apple",
"client_email": null,
"client_invoice_message": null,
"client_use_stripe_auto_bill": false,
"status": "paid",
"past_due_days": null,
"entity_name": "Top Level",
"entity_currency": "USD",
"entity_invoice_message": "Please make a payment to the following bank:\n\nBank Name: JP Morgan Chase\nBank Address: 456 Another Rd, San Francisco, CA, USA\nSWIFT/BIC Code: XYZBUS22\nAccount Number: 123456789\nAccount Type: Checking\nAccount Name: Campfire Software",
"total_amount": 6249.99,
"amount_paid": 6249.99,
"amount_due": 0,
"attachments": [],
"invoice_number": "INV-0000493",
"item_date": null,
"voided_journal_entry_order": null,
"auto_send_invoice": false,
"auto_send_invoice_at": null,
"auto_sent_at": null,
"reminder_sent_dates": {},
"billing_address": "",
"shipping_address": "",
"terms": "net_30",
"ref_number": null,
"purchase_order_number": null,
"invoice_date": "2028-04-01",
"due_date": "2028-05-01",
"shipping_date": null,
"paid_date": "2025-04-30",
"uncollectible_date": null,
"sent_date": null,
"period_start": "2028-04-01",
"period_end": "2028-06-30",
"location_of_sale": null,
"message_on_invoice": "Pay invoice here: https://billing.stripe.com/p/login/test_8wM8At9rYeT3ayY4gm",
"payment_status": "paid",
"warning_message": null,
"created_at": "2025-03-21T19:39:47+00:00",
"last_modified_at": "2025-05-02T16:24:50+00:00",
"currency": "USD",
"exchange_rate": 1,
"exchange_rate_book": 1,
"last_sent_at": null,
"integration_id": null,
"integration_context": null,
"use_stripe_auto_bill": false,
"stripe_payment_link_id": null,
"stripe_payment_intent_id": null,
"stripe_invoice_id": null,
"stripe_pdf_url": null,
"stripe_payment_link": null,
"source": null,
"source_id": null,
"voided_date": null,
"entity": 54,
"client": 24020,
"bad_debt_journal_entry": null,
"journal_entry": 2681173,
"contract": null,
"avalara_connection": null,
"sphere_connection": null,
"anrok_connection": null,
"tax_rate": null,
"stripe_connection": null,
"source_file": null,
"voided_journal_entry": null
}Path Parameters
Response
Expose a stable two-decimal overage total on invoice serializers.
Invoice-currency overage before tax, as a two-decimal string.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
-1000000000000000000 < x < 1000000000000000000-1000000000000000000 < x < 1000000000000000000Withholding context for the invoice's entity.
estimated_withholding_amount covers only the remaining amount due (null once
fully paid); withheld_to_date is the signed sum of posted withholding, so
actuals replace the estimate as receipts come in. Certificate-based schemes
estimate from the entity certificate's rate (falling back to the scheme
default); rules-based schemes sum each line's selected rate over the line
amount, scaled by the remaining-due proportion.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
-1000000 < x < 1000000Show child attributes
Show child attributes
Accounts Receivable account for this invoice. Populated for single-AR and migrated invoices. NULL for multi-AR invoices (aging uses ChartTransactions instead).
Dictionary tracking when reminders were sent for each day overdue (e.g., {'5': '2024-01-15', '10': '2024-01-20'})
Dictionary tracking when pre-due reminders were sent for each day before due date (e.g., {'3': '2024-01-10', '7': '2024-01-06'})
255255custom- Customnet_5- Net 5net_7- Net 7net_10- Net 10net_15- Net 15net_20- Net 20net_30- Net 30net_40- Net 40net_45- Net 45net_60- Net 60net_90- Net 90net_105- Net 105net_120- Net 120due_on_receipt- Due on Receipt
custom, net_5, net_7, net_10, net_15, net_20, net_30, net_40, net_45, net_60, net_90, net_105, net_120, due_on_receipt 1201209^\d{9}$draft- Draftopen- Opensent- Sentpartial- Partially Paidpaid- Paiduncollectible- Uncollectiblevoided- Voided
draft, open, sent, partial, paid, uncollectible, voided ID of the transaction in Anrok (set when transaction is created)
255When true, no tax is calculated through, and no transaction is created in, the entity's tax connection for this invoice. Set at creation; cannot be changed.
3-100000000000000 < x < 100000000000000-100000000000000 < x < 100000000000000250250Set when the stamped vat_number came from the invoice's contract; the PDF then prints it instead of the client's current tax ID.
Set when the stamped shipping_address came from the invoice's contract; connector tax is then quoted at that address instead of the client's.
Snapshot of the contract's tax exemption when the invoice was generated; no tax is calculated.
Discount amount for the invoice
-1000000000000000000 < x < 1000000000000000000Discount amount applied based on payment term early payment discount
-1000000000000000000 < x < 1000000000000000000500500500250True for invoices imported via opening balance migration (no finalization JE).
10-2147483648 <= x <= 2147483647