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+0000",
"last_modified_at": "2025-05-02T16:24:50+0000",
"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+0000",
"voided_date": null,
"source": "MANUAL",
"last_modified_at": "2025-04-24T23:13:35+0000",
"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+0000",
"last_modified_at": "2025-05-02T16:24:50+0000",
"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+0000",
"last_modified_at": "2025-05-02T16:24:50+0000",
"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+0000",
"voided_date": null,
"source": "MANUAL",
"last_modified_at": "2025-04-24T23:13:35+0000",
"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+0000",
"last_modified_at": "2025-05-02T16:24:50+0000",
"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)
2553-100000000000000 < x < 100000000000000-100000000000000 < x < 100000000000000250250Discount amount for the invoice
-1000000000000000000 < x < 1000000000000000000Discount amount applied based on payment term early payment discount
-1000000000000000000 < x < 1000000000000000000500500500500500250True for invoices imported via opening balance migration (no finalization JE).
10-2147483648 <= x <= 2147483647