Skip to main content
POST
/
v1
/
platform
/
businesses
/
{business_id}
/
invoices
Create invoice
curl --request POST \
  --url https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/ \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "external_id": "<string>",
  "sent_at": "2023-11-07T05:31:56Z",
  "line_items": [
    {
      "quantity": 123,
      "unit_price": 123,
      "external_id": "<string>",
      "description": "<string>",
      "account_identifier": "<unknown>",
      "product": "<string>",
      "discount_amount": 0,
      "sales_taxes": [
        {
          "amount": 123,
          "tax_account": "<unknown>",
          "discount_amount": 0
        }
      ]
    }
  ],
  "due_at": "2023-11-07T05:31:56Z",
  "voided_at": "2023-11-07T05:31:56Z",
  "invoice_number": "<string>",
  "invoice_type": "invoice",
  "customer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "customer_external_id": "<string>",
  "memo": "<string>",
  "additional_discount": 0,
  "additional_sales_taxes": [
    {}
  ],
  "additional_sales_taxes_total": 0,
  "tips": 0,
  "tips_account": "<unknown>",
  "transaction_tags": [
    "<string>"
  ],
  "metadata": "<unknown>",
  "document": {
    "file": "<string>",
    "document_type": "sales_invoice",
    "upload_source": "<string>",
    "metadata": "<unknown>",
    "tags": "<unknown>"
  }
}
'
{
  "type": "<string>",
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "business_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "status": "SENT",
  "sent_at": "2023-11-07T05:31:56Z",
  "due_at": "2023-11-07T05:31:56Z",
  "paid_at": "2023-11-07T05:31:56Z",
  "voided_at": "2023-11-07T05:31:56Z",
  "is_overdue": false,
  "invoice_number": "<string>",
  "invoice_type": "invoice",
  "currency": "<string>",
  "customer": {
    "type": "<string>",
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "external_id": "<string>",
    "reference_number": "<string>",
    "individual_name": "<string>",
    "company_name": "<string>",
    "display_name": "<string>",
    "email": "[email protected]",
    "mobile_phone": "<string>",
    "office_phone": "<string>",
    "address_line1": "<string>",
    "address_line2": "<string>",
    "city": "<string>",
    "state_county": "<string>",
    "postal_code": "<string>",
    "country": "<string>",
    "full_address": "<string>",
    "address_string": "<string>",
    "vat_number": "<string>",
    "tax_exempt": true,
    "status": "<string>",
    "is_active": true,
    "is_archived": true,
    "transaction_tags": [
      "<unknown>"
    ],
    "notes": "<string>",
    "metadata": "<unknown>",
    "payment_terms_days": 123,
    "credit_limit": 123,
    "credit_limit_cents": 123,
    "outstanding_balance": 123,
    "documents": [
      {
        "url": "<string>",
        "expires_in": 123,
        "document_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "file_name": "<string>",
        "file_size": 123,
        "mime_type": "<string>"
      }
    ],
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z",
    "archived_at": "2023-11-07T05:31:56Z"
  },
  "line_items": [
    {
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "invoice_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "account_identifier": {
        "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "type": "AccountId"
      },
      "description": "<string>",
      "unit_price": 123,
      "quantity": 123,
      "subtotal": 123,
      "discount_amount": 123,
      "sales_taxes_total": 123,
      "total_amount": 123,
      "external_id": "<string>",
      "product": "<string>"
    }
  ],
  "subtotal": 123,
  "additional_discount": 123,
  "additional_sales_taxes": [
    {
      "amount": 123,
      "tax_account": "<unknown>",
      "rate": "<string>",
      "name": "<string>"
    }
  ],
  "additional_sales_taxes_total": 123,
  "tips": 123,
  "tips_account": "<string>",
  "total_amount": 123,
  "outstanding_balance": 123,
  "payment_allocations": [
    {
      "amount_cents": 123,
      "payment_date": "2023-12-25",
      "payment_method": "<string>",
      "payment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
    }
  ],
  "credit_allocations": [
    {
      "amount_cents": 123,
      "applied_at": "2023-11-07T05:31:56Z",
      "credit_note_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "reference_number": "<string>"
    }
  ],
  "refund_allocations": [
    {
      "refund_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "amount_cents": 123,
      "allocated_at": "2023-11-07T05:31:56Z",
      "reference_number": "<string>"
    }
  ],
  "write_offs": [
    {
      "write_off_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "amount_cents": 123,
      "reason": "<string>",
      "status": "<string>",
      "write_off_at": "2023-11-07T05:31:56Z"
    }
  ],
  "document": {
    "url": "<string>",
    "expires_in": 123,
    "document_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "file_name": "<string>",
    "file_size": 123,
    "mime_type": "<string>"
  },
  "imported_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z",
  "external_id": "<string>",
  "memo": "<string>"
}

Authorizations

Authorization
string
header
required

Partner-level JWT token (unscoped). Token payload includes partner_id. Business access is validated via partner ownership. Format: Bearer <your-jwt-token>

Use this for: Multi-business operations where the business_id is specified in the URL and partner has access to multiple businesses.

Path Parameters

business_id
string<uuid>
required

Business UUID provided by Thred (unique identifier for the business)

Body

Invoice creation serializer for API requests Maps API format to internal models and creates invoices with line items

external_id
string
required

External system identifier for this invoice

Minimum string length: 1
sent_at
string<date-time>
required

When the invoice was sent (ISO 8601 format)

line_items
object[]
required

Array of line items for this invoice

due_at
string<date-time>

When payment is due (ISO 8601 format). Defaults to 30 days from sent_at

voided_at
string<date-time>

When the invoice was voided (not used - we use cancelled status)

invoice_number
string

Invoice number for display. Auto-generated if not provided

invoice_type
enum<string>
default:invoice

Type of invoice: invoice or receipt

  • invoice - Invoice
  • receipt - Receipt
Available options:
invoice,
receipt
customer_id
string<uuid> | null

Existing customer ID to assign invoice to

customer_external_id
string

External customer ID. Will create customer if not found

memo
string

Invoice description or memo

additional_discount
integer
default:0

Additional invoice-level discount in cents

additional_sales_taxes
object[]

Array of additional tax objects

additional_sales_taxes_total
integer
default:0

Total additional sales taxes in cents

tips
integer
default:0

Tips amount in cents

tips_account
any | null

Tips account information

transaction_tags
string[]

Array of transaction tags for categorization

Minimum string length: 1
metadata
any

Additional metadata for the invoice

document
object

Optional document upload

Response

Invoice serializer for API responses All monetary amounts are returned in cents

type
string
required

Resource type identifier

id
string<uuid>
required

Unique invoice identifier

business_id
string<uuid>
required

Business this invoice belongs to

status
enum<string>
required

Invoice status in uppercase format

Available options:
DRAFT,
SENT,
PAID,
PARTIALLY_PAID,
OVERDUE,
CANCELLED,
REFUNDED
Example:

"SENT"

sent_at
string<date-time>
required

When the invoice was sent to customer

due_at
string<date-time>
required

When payment is due (ISO timestamp)

paid_at
string<date-time>
required

When the invoice was fully paid

voided_at
string<date-time> | null
required

When the invoice was voided (always null - we use cancelled status)

is_overdue
boolean
required

True if invoice is past due date and has outstanding balance

Example:

false

invoice_number
string
required

Invoice number for display and reference

Maximum string length: 100
invoice_type
enum<string>
required

Type of invoice: invoice or receipt

  • invoice - Invoice
  • receipt - Receipt
Available options:
invoice,
receipt
currency
string
required

ISO 4217 currency code (e.g., EUR, GBP, USD)

Maximum string length: 3
customer
object
required

Customer information

line_items
object[]
required

Array of invoice line items

subtotal
integer
required

Subtotal amount in cents before taxes

additional_discount
integer
required

Additional invoice-level discount in cents

additional_sales_taxes
object[]
required

Additional sales taxes array

additional_sales_taxes_total
integer
required

Total additional sales taxes in cents

tips
integer
required

Tips amount in cents

tips_account
string | null
required

Tips account information

total_amount
integer
required

Total invoice amount in cents including taxes

outstanding_balance
integer
required

Outstanding balance in cents

payment_allocations
object[]
required

Array of payment allocations

credit_allocations
object[]
required

Array of customer credit note allocations

refund_allocations
object[]
required

Array of refund allocations

write_offs
object[]
required

Array of write-offs on this invoice

document
object
required

Latest invoice document file with presigned URL

imported_at
string<date-time>
required

When the invoice was imported/created

updated_at
string<date-time>
required

When the invoice was last updated

external_id
string

External system identifier

memo
string

Invoice description or memo