Skip to main content
POST
/
coa
/
api
/
v1
/
invoice
/
Create Invoice
curl --request POST \
  --url https://api.meetcampfire.com/coa/api/v1/invoice/ \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '{
  "terms": "net_30",
  "invoice_date": "2025-07-01",
  "due_date": "2025-07-31",
  "lines": [
    {
      "service_date": "2025-07-01",
      "amount": 50,
      "product": "2545",
      "product_name": "Product A",
      "product_is_taxable": false,
      "anrok_item_id": null,
      "rate": 50,
      "description": "Invoice Line Item",
      "quantity": 1,
      "tax": 5
    }
  ],
  "entity": "54",
  "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",
  "currency": "USD",
  "message_on_invoice": "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",
  "stripe_connection": "",
  "stripe_connection_name": "",
  "stripe_connection_entity": "54",
  "exchange_rate_book": 1,
  "exchange_rate": 1,
  "client": "33973",
  "client_name": "Client A",
  "client_email": null,
  "client_invoice_message": null,
  "billing_address": "",
  "shipping_address": "",
  "contract": "12954",
  "contract_name": "Campfire",
  "invoice_number": "987654321",
  "purchase_order_number": "123456789",
  "item_date": "2025-07-01",
  "period_start": "2025-07-01",
  "period_end": "2025-07-31"
}'
{
  "id": 145055,
  "lines": [
    {
      "id": 337587,
      "product_name": "Product A",
      "stripe_product_id": null,
      "product_is_taxable": false,
      "anrok_item_id": null,
      "service_date": "2025-07-01",
      "description": "Invoice Line Item",
      "quantity": 1,
      "rate": 50,
      "currency": "USD",
      "amount": 50,
      "tax": 5,
      "tax_description": null,
      "created_at": "2025-07-25T18:54:43+0000",
      "last_modified_at": "2025-07-25T18:54:43+0000",
      "product": 2545
    }
  ],
  "payments": [],
  "payment_journal_entries": [],
  "client_name": "Client A",
  "client_email": null,
  "client_invoice_message": null,
  "client_use_stripe_auto_bill": false,
  "status": "open",
  "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": 55,
  "amount_paid": 0,
  "amount_due": 55,
  "contract_name": "Campfire",
  "attachments": [],
  "invoice_number": "987654321",
  "revenue_transactions": [],
  "item_date": "2025-07-01",
  "voided_journal_entry_order": null,
  "search_vector": null,
  "search_text": 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": "123456789",
  "invoice_date": "2025-07-01",
  "due_date": "2025-07-31",
  "shipping_date": null,
  "paid_date": null,
  "uncollectible_date": null,
  "sent_date": null,
  "period_start": "2025-07-01",
  "period_end": "2025-07-31",
  "location_of_sale": null,
  "message_on_invoice": "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",
  "payment_status": "open",
  "warning_message": null,
  "created_at": "2025-07-25T18:54:43+0000",
  "last_modified_at": "2025-07-25T18:54:43+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": 33973,
  "bad_debt_journal_entry": null,
  "journal_entry": 7491952,
  "contract": 12954,
  "avalara_connection": null,
  "sphere_connection": null,
  "anrok_connection": null,
  "tax_rate": null,
  "stripe_connection": null,
  "source_file": null,
  "voided_journal_entry": null
}

Authorizations

Authorization
string
header
required

Token-based authentication with required prefix "Token"

Body

lines
object[]
required
invoice_date
string<date>
required
due_date
string<date>
required
entity
integer
required
invoice_number
string
revenue_transactions
integer[]
item_date
string<date> | null
migrated_journal_id
integer | null
department
integer | null
department_name
string | null
tags
integer[]
auto_send_invoice
boolean | null
auto_send_invoice_at
string<date> | null
auto_sent_at
string<date> | null
reminder_sent_dates
any

Dictionary tracking when reminders were sent for each day overdue (e.g., {'5': '2024-01-15', '10': '2024-01-20'})

billing_address
string | null
shipping_address
string | null
terms
  • custom - Custom
  • net_5 - Net 5
  • net_7 - Net 7
  • net_10 - Net 10
  • net_15 - Net 15
  • net_20 - Net 20
  • net_30 - Net 30
  • net_40 - Net 40
  • net_45 - Net 45
  • net_60 - Net 60
  • net_90 - Net 90
  • net_105 - Net 105
  • net_120 - Net 120
  • due_on_receipt - Due on Receipt
Available options:
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
ref_number
string | null
Maximum length: 120
purchase_order_number
string | null
Maximum length: 120
shipping_date
string<date> | null
paid_date
string<date> | null
uncollectible_date
string<date> | null
sent_date
string<date> | null
period_start
string<date> | null
period_end
string<date> | null
location_of_sale
string | null
message_on_invoice
string | null
payment_status
  • open - Open
  • sent - Sent
  • partial - Partially Paid
  • paid - Paid
  • uncollectible - Uncollectible
  • voided - Voided
Available options:
open,
sent,
partial,
paid,
uncollectible,
voided
warning_message
string | null
currency
string
Maximum length: 3
exchange_rate
number | null
Required range: -100000000000000 < x < 100000000000000
exchange_rate_book
number | null
Required range: -100000000000000 < x < 100000000000000
last_sent_at
string<date-time> | null
integration_id
string | null
Maximum length: 250
integration_context
any
vat_number
string | null
Maximum length: 250
discount
number | null

Discount amount for the invoice

Required range: -1000000000000000000 < x < 1000000000000000000
use_stripe_auto_bill
boolean | null
Maximum length: 500
stripe_payment_intent_id
string | null
Maximum length: 500
stripe_invoice_id
string | null
Maximum length: 500
stripe_pdf_url
string | null
Maximum length: 500
Maximum length: 500
source
string | null
Maximum length: 250
source_id
string | null
voided_date
string<date> | null
client
integer | null
bad_debt_journal_entry
integer | null
journal_entry
integer | null
voided_journal_entry
integer | null
entity_transfer_journal_entry
integer | null
contract
integer | null
avalara_connection
integer | null
sphere_connection
integer | null
anrok_connection
integer | null
tax_rate
integer | null
stripe_connection
integer | null
source_file
integer | null

Response

201 - application/json
id
integer
required
lines
object[]
required
payments
object[]
required
payment_journal_entries
integer[]
required
journal_entry_intercompany
string
required
client_name
string
required
client_email
string
required
client_invoice_message
string
required
client_use_stripe_auto_bill
boolean
required
status
string
required
past_due_days
integer | null
required
entity_name
string
required
entity_currency
string
required
entity_invoice_message
string
required
total_amount
number
required
Required range: -1000000000000000000 < x < 1000000000000000000
amount_paid
number
required
Required range: -1000000000000000000 < x < 1000000000000000000
amount_due
number
required
contract_name
string
required
attachments
object[]
required
stripe_connection_name
string
required
stripe_connection_entity
integer
required
stripe_connection_billing_portal_enabled
boolean
required
avalara_connection_name
string
required
avalara_connection_company
string
required
tax_rate_name
string
required
tax_rate_value
number
required
Required range: -1000000 < x < 1000000
voided_journal_entry_order
string
required
last_modified_at
string<date-time>
required
is_deleted
boolean
default:false
required
deleted_at
string<date-time> | null
required
search_vector
string | null
required
search_text
string | null
required
invoice_date
string<date>
required
due_date
string<date>
required
created_at
string<date-time>
required
customer
integer
required
entity
integer
required
invoice_number
string
revenue_transactions
integer[]
item_date
string<date> | null
auto_send_invoice
boolean | null
auto_send_invoice_at
string<date> | null
auto_sent_at
string<date> | null
reminder_sent_dates
any

Dictionary tracking when reminders were sent for each day overdue (e.g., {'5': '2024-01-15', '10': '2024-01-20'})

billing_address
string | null
shipping_address
string | null
terms
  • custom - Custom
  • net_5 - Net 5
  • net_7 - Net 7
  • net_10 - Net 10
  • net_15 - Net 15
  • net_20 - Net 20
  • net_30 - Net 30
  • net_40 - Net 40
  • net_45 - Net 45
  • net_60 - Net 60
  • net_90 - Net 90
  • net_105 - Net 105
  • net_120 - Net 120
  • due_on_receipt - Due on Receipt
Available options:
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
ref_number
string | null
Maximum length: 120
purchase_order_number
string | null
Maximum length: 120
shipping_date
string<date> | null
paid_date
string<date> | null
uncollectible_date
string<date> | null
sent_date
string<date> | null
period_start
string<date> | null
period_end
string<date> | null
location_of_sale
string | null
message_on_invoice
string | null
payment_status
  • open - Open
  • sent - Sent
  • partial - Partially Paid
  • paid - Paid
  • uncollectible - Uncollectible
  • voided - Voided
Available options:
open,
sent,
partial,
paid,
uncollectible,
voided
warning_message
string | null
currency
string
Maximum length: 3
exchange_rate
number | null
Required range: -100000000000000 < x < 100000000000000
exchange_rate_book
number | null
Required range: -100000000000000 < x < 100000000000000
last_sent_at
string<date-time> | null
integration_id
string | null
Maximum length: 250
integration_context
any
vat_number
string | null
Maximum length: 250
discount
number | null

Discount amount for the invoice

Required range: -1000000000000000000 < x < 1000000000000000000
use_stripe_auto_bill
boolean | null
Maximum length: 500
stripe_payment_intent_id
string | null
Maximum length: 500
stripe_invoice_id
string | null
Maximum length: 500
stripe_pdf_url
string | null
Maximum length: 500
Maximum length: 500
source
string | null
Maximum length: 250
source_id
string | null
voided_date
string<date> | null
client
integer | null
bad_debt_journal_entry
integer | null
journal_entry
integer | null
voided_journal_entry
integer | null
entity_transfer_journal_entry
integer | null
contract
integer | null
avalara_connection
integer | null
sphere_connection
integer | null
anrok_connection
integer | null
tax_rate
integer | null
stripe_connection
integer | null
source_file
integer | null
I