curl --request GET \
--url https://api.meetcampfire.com/coa/api/v1/bill/{id}/import requests
url = "https://api.meetcampfire.com/coa/api/v1/bill/{id}/"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.meetcampfire.com/coa/api/v1/bill/{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/bill/{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/bill/{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/bill/{id}/")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetcampfire.com/coa/api/v1/bill/{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": 31894,
"lines": [
{
"id": 298626,
"account_number": "6700",
"account_name": "6700 - Office Expenses",
"department_name": "Engineering",
"bill_customer_name": "ABC Bead Supply",
"tags": [
{
"id": 8355,
"group_name": "Projects",
"parent_name": null,
"parent": null,
"name": "Project A",
"created_at": "2025-07-17T16:21:02+0000",
"last_modified_at": "2025-07-17T16:21:02+0000",
"group": 727
}
],
"amortization_schedule": [
{
"id": 1234,
"date": "2025-09-01",
"amount": 1000,
"description": "Monthly amortization - Office equipment",
"bill_line": 298626,
"amortization": 567
}
],
"description": "1x Large Expense Line",
"amount": 10000,
"tax": 800,
"tax_description": "State Sales Tax",
"source": "MANUAL",
"source_id": null,
"currency": "USD",
"created_at": "2025-07-25T04:24:32+0000",
"last_modified_at": "2025-07-25T04:24:32+0000",
"account": 2622,
"bill_customer": 34182,
"department": 35
}
],
"payments": [
{
"id": 5234,
"amount": 5400,
"payment_date": "2025-08-15",
"currency": "USD",
"payment_transaction_bank_description": "ACH Transfer",
"payment_journal_entry_order": "JE-2025-001345",
"voided_journal_entry_order": null,
"created_at": "2025-08-15T14:22:33+0000",
"payment_journal_entry": 7491960,
"payment_transaction": 12345678,
"voided_journal_entry": null,
"source": "BANK_IMPORT"
}
],
"payment_journal_entries": [
7491960
],
"status": "partially_paid",
"past_due_days": null,
"entity_name": "Top Level",
"entity_currency": "USD",
"vendor_name": "ABC Bead Supply",
"attachments": [
{
"id": 9876,
"name": "invoice_abc_supply_20250801.pdf",
"file_size": 234567,
"content_type": "application/pdf",
"created_at": "2025-08-01T10:30:00+0000",
"url": "https://storage.example.com/files/invoice_abc_supply_20250801.pdf"
}
],
"total_amount": 10800,
"amount_due": 5400,
"amount_paid": 5400,
"item_date": "2025-08-01",
"voided_date": null,
"voided_journal_entry_order": null,
"search_vector": "abc bead supply office expenses project",
"search_text": "ABC Bead Supply 1234567 A really big expense",
"mailing_address": "1234 Campground Road. San Francisco CA 98765",
"terms": null,
"bill_number": "1234567",
"bill_date": "2025-08-01",
"due_date": "2025-08-31",
"paid_date": null,
"message_on_bill": "A really big expense",
"source_id": "IMPORT-2025-0001",
"source": "CSV_IMPORT",
"payment_status": "partial",
"currency": "USD",
"exchange_rate": 1,
"exchange_rate_book": 1,
"created_at": "2025-07-25T04:24:32+0000",
"last_modified_at": "2025-08-15T14:25:10+0000",
"entity": 54,
"vendor": 34182,
"payment_term": 1234,
"payment_term_name": "Net 30",
"journal_entry": 7491951,
"source_file": 8877,
"tax_rate": 8551,
"custom_fields": {
"purchase_order_number": "PO-2025-001234",
"department_approval": "John Smith",
"project_code": "PROJ-A-2025"
}
}Retrieve Accounting Bill
Retrieve a single accounting bill by ID with complete detail including all line items, payments, and related data.
This endpoint returns comprehensive bill information including:
- Full bill details with vendor, entity, and customer information
- All line items with account details, departments, tags, and amortization schedules
- Complete payment history with journal entry references
- Calculated fields including total amounts, amounts paid, amounts due, and payment status
- Journal entry references for accounting integration
- Exchange rate information for multi-currency bills
curl --request GET \
--url https://api.meetcampfire.com/coa/api/v1/bill/{id}/import requests
url = "https://api.meetcampfire.com/coa/api/v1/bill/{id}/"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.meetcampfire.com/coa/api/v1/bill/{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/bill/{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/bill/{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/bill/{id}/")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetcampfire.com/coa/api/v1/bill/{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": 31894,
"lines": [
{
"id": 298626,
"account_number": "6700",
"account_name": "6700 - Office Expenses",
"department_name": "Engineering",
"bill_customer_name": "ABC Bead Supply",
"tags": [
{
"id": 8355,
"group_name": "Projects",
"parent_name": null,
"parent": null,
"name": "Project A",
"created_at": "2025-07-17T16:21:02+0000",
"last_modified_at": "2025-07-17T16:21:02+0000",
"group": 727
}
],
"amortization_schedule": [
{
"id": 1234,
"date": "2025-09-01",
"amount": 1000,
"description": "Monthly amortization - Office equipment",
"bill_line": 298626,
"amortization": 567
}
],
"description": "1x Large Expense Line",
"amount": 10000,
"tax": 800,
"tax_description": "State Sales Tax",
"source": "MANUAL",
"source_id": null,
"currency": "USD",
"created_at": "2025-07-25T04:24:32+0000",
"last_modified_at": "2025-07-25T04:24:32+0000",
"account": 2622,
"bill_customer": 34182,
"department": 35
}
],
"payments": [
{
"id": 5234,
"amount": 5400,
"payment_date": "2025-08-15",
"currency": "USD",
"payment_transaction_bank_description": "ACH Transfer",
"payment_journal_entry_order": "JE-2025-001345",
"voided_journal_entry_order": null,
"created_at": "2025-08-15T14:22:33+0000",
"payment_journal_entry": 7491960,
"payment_transaction": 12345678,
"voided_journal_entry": null,
"source": "BANK_IMPORT"
}
],
"payment_journal_entries": [
7491960
],
"status": "partially_paid",
"past_due_days": null,
"entity_name": "Top Level",
"entity_currency": "USD",
"vendor_name": "ABC Bead Supply",
"attachments": [
{
"id": 9876,
"name": "invoice_abc_supply_20250801.pdf",
"file_size": 234567,
"content_type": "application/pdf",
"created_at": "2025-08-01T10:30:00+0000",
"url": "https://storage.example.com/files/invoice_abc_supply_20250801.pdf"
}
],
"total_amount": 10800,
"amount_due": 5400,
"amount_paid": 5400,
"item_date": "2025-08-01",
"voided_date": null,
"voided_journal_entry_order": null,
"search_vector": "abc bead supply office expenses project",
"search_text": "ABC Bead Supply 1234567 A really big expense",
"mailing_address": "1234 Campground Road. San Francisco CA 98765",
"terms": null,
"bill_number": "1234567",
"bill_date": "2025-08-01",
"due_date": "2025-08-31",
"paid_date": null,
"message_on_bill": "A really big expense",
"source_id": "IMPORT-2025-0001",
"source": "CSV_IMPORT",
"payment_status": "partial",
"currency": "USD",
"exchange_rate": 1,
"exchange_rate_book": 1,
"created_at": "2025-07-25T04:24:32+0000",
"last_modified_at": "2025-08-15T14:25:10+0000",
"entity": 54,
"vendor": 34182,
"payment_term": 1234,
"payment_term_name": "Net 30",
"journal_entry": 7491951,
"source_file": 8877,
"tax_rate": 8551,
"custom_fields": {
"purchase_order_number": "PO-2025-001234",
"department_approval": "John Smith",
"project_code": "PROJ-A-2025"
}
}Path Parameters
^\d+$Response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Return AP account name with number in 'number - name' format, similar to name_and_number.
Show child attributes
Show child attributes
-1000000000000000000 < x < 1000000000000000000-1000000000000000000 < x < 1000000000000000000Navan data region (US/EU) for a Navan-sourced bill, else None.
Mirrors ramp_use_sandbox: the frontend builds the "Open in Navan" deep
link from source_id and uses this to pick the web-app host
(US -> app.navan.com, EU -> app-fra.navan.com). Navan bills carry no FK to
their connection, so the region is resolved per customer and memoized to
avoid an N+1 lookup across a bill list.
Withholding context for the bill's entity (AP side).
estimated_withholding_amount covers only the remaining amount due (null once
fully paid); withheld_to_date is the signed sum of posted withholding (AP legs
are credits, reversals debits), so actuals replace the estimate as payments post.
Certificate-based schemes estimate from the vendor certificate's rate valid today
(falling back to the scheme default).
Show child attributes
Show child attributes
120custom- 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 9^\d{9}$Israel tax compliance: bill classification type
other- Otherequipment- Equipment
other, equipment 250partial- Partially Paidopen- Openpaid- Paidpayment_not_found- Payment Not Foundpayment_pending- Payment Pendingvoided- Voided
partial, open, paid, payment_not_found, payment_pending, voided 3-100000000000000 < x < 100000000000000-100000000000000 < x < 100000000000000inclusive- Inclusiveexclusive- Exclusive
inclusive, exclusive BILL- BillPAYROLL- PayrollREIMBURSEMENT- Reimbursement
BILL, PAYROLL, REIMBURSEMENT -2147483648 <= x <= 2147483647Payment term for this bill
Accounts Payable account for this bill