Download OpenAPI specification:
API for managing accounts receivable, customers, payments, and reconciliation
Returns a paginated list of invoices. Filter by status or customer.
| page | integer Default: 1 Page number |
| per_page | integer Default: 25 Items per page (max 100) |
| status | string Filter by status |
| customer_id | string <uuid> Filter by customer UUID |
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "invoice_number": "string",
- "customer_name": "string",
- "amount": 0,
- "amount_due": 0,
- "due_date": "2019-08-24",
- "status": "string"
}
], - "pagination": {
- "page": 0,
- "per_page": 0,
- "total": 0,
- "total_pages": 0
}
}Creates a new invoice linked to an existing customer.
| invoice_number required | string Unique invoice number |
| customer_id required | string <uuid> UUID of an existing customer in your account |
| amount required | number Total invoice amount |
| due_date required | string <date> Payment due date |
| customer_name | string Override customer name on this invoice |
| customer_address | string Override address |
| amount_due | number Remaining balance |
| issue_date | string <date> Issue date (defaults to today) |
| status | string Invoice status (defaults to pending) |
| notes | string Internal notes |
{- "invoice_number": "string",
- "customer_id": "160c0c4b-9966-4dc1-a916-8407eb10d74e",
- "amount": 0,
- "due_date": "2019-08-24",
- "customer_name": "string",
- "customer_address": "string",
- "amount_due": 0,
- "issue_date": "2019-08-24",
- "status": "string",
- "notes": "string"
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "invoice_number": "string",
- "customer_name": "string",
- "amount": 0,
- "amount_due": 0,
- "due_date": "2019-08-24",
- "status": "string"
}
}Returns detailed information about a specific invoice.
| id required | string <uuid> Invoice UUID |
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "invoice_number": "string",
- "customer_id": "160c0c4b-9966-4dc1-a916-8407eb10d74e",
- "customer_name": "string",
- "amount": 0,
- "amount_due": 0,
- "issue_date": "2019-08-24",
- "due_date": "2019-08-24",
- "status": "string",
- "notes": "string",
- "payment_token": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
}Updates an existing invoice.
| id required | string <uuid> Invoice UUID |
| customer_name | string Customer display name |
| customer_address | string Customer billing address |
| amount | number Total amount |
| amount_due | number Remaining balance |
| due_date | string <date> Due date |
| status | string Invoice status |
| notes | string Internal notes |
| external_payment_amount | number Amount paid via external/offline methods |
{- "customer_name": "string",
- "customer_address": "string",
- "amount": 0,
- "amount_due": 0,
- "due_date": "2019-08-24",
- "status": "string",
- "notes": "string",
- "external_payment_amount": 0
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "amount_due": 0,
- "status": "string",
- "updated_at": "2019-08-24T14:15:22Z"
}
}Returns a paginated list of customers with tags.
| page | integer Default: 1 Page number |
| per_page | integer Default: 25 Items per page (max 100) |
| search | string Search company name or customer ID |
| tag_id | string <uuid> Filter by tag UUID |
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "customer_id": "string",
- "company_name": "string",
- "address": "string",
- "source": "string",
- "/tags": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "color": "string",
- "customer_count": 0,
- "created_at": "2019-08-24T14:15:22Z"
}
]
}
], - "pagination": {
- "page": 0,
- "per_page": 0,
- "total": 0,
- "total_pages": 0
}
}Creates a new customer with at least one contact.
| company_name required | string Company display name |
Array of objects (ContactInput) At least one contact with contact_name and email or phone | |
| customer_id | string Your external customer ID |
| address | string Mailing address |
| /tags | Array of strings Array of tag names |
{- "company_name": "string",
- "/contacts": [
- {
- "contact_name": "string",
- "email": "string",
- "phone": "string",
- "phone_type": "string",
- "is_primary": true
}
], - "customer_id": "string",
- "address": "string",
- "/tags": [
- "string"
]
}{- "data": {
- "customer_id": "160c0c4b-9966-4dc1-a916-8407eb10d74e",
- "company_name": "string",
- "/contacts": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "contact_name": "string",
- "email": "string",
- "phone": "string",
- "phone_type": "string",
- "is_primary": true,
- "escalation_level": 0,
- "title": "string",
- "notes": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
]
}
}Returns customer details including all contacts.
| id required | string <uuid> Customer UUID |
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "company_name": "string",
- "/contacts": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "contact_name": "string",
- "email": "string",
- "phone": "string",
- "phone_type": "string",
- "is_primary": true,
- "escalation_level": 0,
- "title": "string",
- "notes": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
]
}
}Updates customer fields, tags, and/or contacts.
| id required | string <uuid> Customer UUID |
| company_name | string Company name |
| address | string Address |
| timezone | string IANA timezone |
| /tags | Array of strings Replace all tags |
Array of objects (ContactUpdate) Upsert contacts | |
| delete_contact_ids | Array of strings <uuid> [ items <uuid > ] UUIDs of contacts to delete |
{- "company_name": "string",
- "address": "string",
- "timezone": "string",
- "/tags": [
- "string"
], - "/contacts": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "contact_name": "string",
- "email": "string",
- "phone": "string",
- "phone_type": "string",
- "is_primary": true,
- "escalation_level": 0
}
], - "delete_contact_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "company_name": "string",
- "/contacts": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "contact_name": "string",
- "email": "string",
- "phone": "string",
- "phone_type": "string",
- "is_primary": true,
- "escalation_level": 0,
- "title": "string",
- "notes": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "/tags": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "color": "string",
- "customer_count": 0,
- "created_at": "2019-08-24T14:15:22Z"
}
]
}
}Returns a paginated list of contacts for a given customer.
| customer_id required | string <uuid> Customer UUID |
| page | integer Default: 1 Page number |
| per_page | integer Default: 25 Items per page (max 100) |
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "contact_name": "string",
- "email": "string",
- "phone": "string",
- "phone_type": "string",
- "is_primary": true,
- "escalation_level": 0,
- "title": "string",
- "notes": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "page": 0,
- "per_page": 0,
- "total": 0,
- "total_pages": 0
}
}Adds a new contact to an existing customer.
| customer_id required | string <uuid> UUID of the parent customer |
| contact_name required | string Full name of the contact |
| email required | string Email address |
| phone | string Primary phone number |
| phone_type | string Phone type |
| phone_secondary | string Secondary phone number |
| phone_type_secondary | string Secondary phone type |
| is_primary | boolean Mark as primary contact |
| escalation_level | integer Escalation order |
| title | string Job title |
| notes | string Internal notes |
{- "customer_id": "160c0c4b-9966-4dc1-a916-8407eb10d74e",
- "contact_name": "string",
- "email": "string",
- "phone": "string",
- "phone_type": "string",
- "phone_secondary": "string",
- "phone_type_secondary": "string",
- "is_primary": true,
- "escalation_level": 0,
- "title": "string",
- "notes": "string"
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "contact_name": "string",
- "email": "string",
- "is_primary": true,
- "escalation_level": 0,
- "created_at": "2019-08-24T14:15:22Z"
}
}Returns a single contact by its UUID.
| id required | string <uuid> Contact UUID |
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "customer_id": "160c0c4b-9966-4dc1-a916-8407eb10d74e",
- "contact_name": "string",
- "email": "string",
- "phone": "string",
- "phone_type": "string",
- "phone_secondary": "string",
- "phone_type_secondary": "string",
- "is_primary": true,
- "escalation_level": 0,
- "title": "string",
- "notes": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}Updates contact fields.
| id required | string <uuid> Contact UUID |
| contact_name | string Full name |
string Email address | |
| phone | string Primary phone number |
| phone_type | string Phone type |
| phone_secondary | string Secondary phone number |
| phone_type_secondary | string Secondary phone type |
| is_primary | boolean Set as primary contact |
| escalation_level | integer Escalation order |
| title | string Job title |
| notes | string Internal notes |
{- "contact_name": "string",
- "email": "string",
- "phone": "string",
- "phone_type": "string",
- "phone_secondary": "string",
- "phone_type_secondary": "string",
- "is_primary": true,
- "escalation_level": 0,
- "title": "string",
- "notes": "string"
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "string",
- "updated_at": "2019-08-24T14:15:22Z"
}
}Returns a paginated list of imported payments.
| page | integer Default: 1 Page number |
| per_page | integer Default: 25 Items per page (max 100) |
| invoice_id | string <uuid> Filter by matched invoice |
| reviewed | string Filter by reviewed status |
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "amount": 0,
- "payment_date": "2019-08-24",
- "payment_method": "string",
- "source": "string",
- "payer_name": "string",
- "reviewed": true,
- "is_unidentified": true
}
], - "pagination": {
- "page": 0,
- "per_page": 0,
- "total": 0,
- "total_pages": 0
}
}Imports a payment into the reconciliation queue.
| amount required | number Payment amount |
| payment_date required | string <date> Date of payment |
| payment_method | string Payment method |
| payer_name | string Name of the payer |
| payer_reference | string External reference |
| external_payment_id | string External payment ID |
| notes | string Internal notes |
{- "amount": 0,
- "payment_date": "2019-08-24",
- "payment_method": "string",
- "payer_name": "string",
- "payer_reference": "string",
- "external_payment_id": "string",
- "notes": "string"
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "amount": 0,
- "payment_date": "2019-08-24",
- "source": "string",
- "is_unidentified": true,
- "reviewed": true,
- "invoice_id": "f4c4edb8-11e0-4b33-bcc1-482dc59ebb32"
}
}Returns detailed payment information.
| id required | string <uuid> Payment UUID |
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "invoice_id": "f4c4edb8-11e0-4b33-bcc1-482dc59ebb32",
- "amount": 0,
- "payment_date": "2019-08-24",
- "payment_method": "string",
- "source": "string",
- "payer_name": "string"
}
}Updates metadata or manually links the payment to an invoice.
| id required | string <uuid> Payment UUID |
| invoice_id | string <uuid> Match to invoice |
| payer_name | string Payer name |
| payer_reference | string External reference |
| reviewed | boolean Mark as reviewed |
| notes | string Notes |
{- "invoice_id": "f4c4edb8-11e0-4b33-bcc1-482dc59ebb32",
- "payer_name": "string",
- "payer_reference": "string",
- "reviewed": true,
- "notes": "string"
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "invoice_id": "f4c4edb8-11e0-4b33-bcc1-482dc59ebb32",
- "reviewed": true,
- "is_unidentified": true
}
}Returns all registered webhook endpoints.
| page | integer Default: 1 Page number |
| per_page | integer Default: 25 Items per page (max 100) |
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "url": "string",
- "description": "string",
- "events": [
- "string"
], - "is_active": true,
- "created_at": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "page": 0,
- "per_page": 0,
- "total": 0,
- "total_pages": 0
}
}Registers a new HTTPS endpoint.
| url required | string Destination URL |
| events | Array of strings Event types to subscribe to |
| description | string Internal label |
{- "url": "string",
- "events": [
- "string"
], - "description": "string"
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "url": "string",
- "events": [
- "string"
], - "is_active": true,
- "secret": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
}Update URL, subscribed events, description, or active status.
| id required | string <uuid> Endpoint UUID |
| url | string New destination URL |
| events | Array of strings Replace subscribed event types |
| description | string Internal label |
| is_active | boolean Pause or resume delivery |
{- "url": "string",
- "events": [
- "string"
], - "description": "string",
- "is_active": true
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "is_active": true,
- "updated_at": "2019-08-24T14:15:22Z"
}
}Returns paginated delivery attempts for this endpoint.
| id required | string <uuid> Endpoint UUID |
| status | string Filter by status |
| page | integer Default: 1 Page number |
| per_page | integer Default: 25 Items per page |
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "event_type": "string",
- "status": "string",
- "attempt_count": 0,
- "last_http_status": 0,
- "delivered_at": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "page": 0,
- "per_page": 0,
- "total": 0,
- "total_pages": 0
}
}Returns a paginated list of approved accounting changes.
| page | integer Default: 1 Page number |
| per_page | integer Default: 25 Items per page (max 100) |
| change_type | string Filter by change type |
| invoice_id | string <uuid> Filter by invoice UUID |
| customer_id | string <uuid> Filter by customer UUID |
{- "data": [
- {
- "change_id": "53a22efb-209d-4639-a6e7-7072a755c213",
- "change_type": "string",
- "amount": 0,
- "description": "string",
- "invoice_id": "f4c4edb8-11e0-4b33-bcc1-482dc59ebb32",
- "invoice_number": "string",
- "invoice_total": 0,
- "invoice_amount_due": 0,
- "customer_name": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "page": 0,
- "per_page": 0,
- "total": 0,
- "total_pages": 0
}
}Mark accounting changes as synced or failed.
| action required | string mark_synced or mark_failed |
| change_ids required | Array of strings <uuid> [ items <uuid > ] Array of accounting change UUIDs |
| error_message | string Error description |
{- "action": "string",
- "change_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "error_message": "string"
}{- "data": {
- "action": "string",
- "count": 0
}
}Returns a single approved accounting change by its UUID.
| id required | string <uuid> Accounting change UUID |
{- "data": {
- "change_id": "53a22efb-209d-4639-a6e7-7072a755c213",
- "change_type": "string",
- "amount": 0,
- "description": "string",
- "reference_id": "string",
- "invoice_id": "f4c4edb8-11e0-4b33-bcc1-482dc59ebb32",
- "invoice_number": "string",
- "invoice_total": 0,
- "invoice_amount_due": 0,
- "invoice_source_type": "string",
- "invoice_source_id": "string",
- "customer_id": "160c0c4b-9966-4dc1-a916-8407eb10d74e",
- "customer_name": "string",
- "change_customer_id": "string",
- "customer_source": "string",
- "metadata": { },
- "created_at": "2019-08-24T14:15:22Z"
}
}