Download OpenAPI specification:Download
Quaderno helps you scale your business without stressing about taxes. Our powerful REST API solves all your tax compliance needs:
Here you can check our OpenAPI reference. Don't miss our developer tools and guides too!
This section covers the conventions that apply across all Quaderno API endpoints: authentication, rate limits, pagination, error codes, and versioning.
Quaderno uses an API key to authorize all requests, combined with your account name in the endpoint URL. You can find your API keys at quadernoapp.com/users/api-keys.
The API key is passed via HTTP Basic Auth. Set the key as the username and leave the password blank:
-u <YOUR_API_KEY>:
Using that modifier with curl sends a request with an Authorization: Basic … header. Example authenticated request:
curl https://ACCOUNT_NAME.quadernoapp.com/api/invoices \
-u <YOUR_API_KEY>:
You can also call /ping to verify your credentials and check your remaining requests without consuming a real API call:
curl https://quadernoapp.com/api/ping \
-u <YOUR_API_KEY>:
Keep your API key secret. Anyone who has it can read and modify everything your account has access to.
To discover the ACCOUNT_NAME for your target account, call the /authorization endpoint:
curl https://quadernoapp.com/api/authorization \
-u <YOUR_API_KEY>:
Returns JSON structured like this:
{
"identity": {
"id": "999",
"name": "Sheldon Cooper",
"email": "[email protected]",
"publishable_key": "pk_1111111111111111",
"href": "https://nippur-999.quadernoapp.com/api/"
}
}
Response fields:
| Parameter | Description |
|---|---|
id |
An internal identifier. Do not use this to reference users in API requests. |
name |
The user's full name. |
email |
The user's email address. |
publishable_key |
The user's publishable key, for use in frontend integrations. |
href |
The custom API endpoint URL for this account. The ACCOUNT_NAME appears between https:// and .quadernoapp. |
If the user does not have permission to perform an action, the API returns
401 Unauthorized.
The current limit is 100 API calls per 15 seconds.
Every successful API response includes the following headers to help you track usage:
X-RateLimit-Limit: Maximum requests allowed per time window.X-RateLimit-Remaining: Requests remaining in the current window.X-RateLimit-Reset: UTC epoch timestamp when the window resets.When you exceed the limit, the API returns 429 Too Many Requests. We reserve the right to adjust these limits, but will keep them high enough for well-behaved applications.
List endpoints are paginated using a created_before parameter. Pass an object ID to retrieve objects created before that ID, in reverse chronological order (newest first).
Response headers:
X-Pages-HasMore: true if additional records can be fetched.X-Pages-NextPage: The URL to fetch the next page. Only present when more records exist.The default page size is 25 objects, configurable with the
limitparameter up to a maximum of 100.
Example paginated request:
curl https://ACCOUNT_NAME.quadernoapp.com/api/contacts?created_before=42 \
-u <YOUR_API_KEY>:
The Quaderno API uses standard HTTP status codes:
| Code | Text | Description |
|---|---|---|
400 |
Bad Request |
The request is malformed or missing required parameters. |
401 |
Unauthorized |
Invalid API key or insufficient permissions. |
403 |
Forbidden |
The requested resource is restricted. |
404 |
Not Found |
The requested resource does not exist. |
405 |
Method Not Allowed |
The HTTP method is not supported for this endpoint. |
406 |
Not Acceptable |
The request contains invalid parameter values (e.g. an unrecognized tax code). |
410 |
Gone |
The resource has been permanently removed. |
422 |
Unprocessable Entity |
The request is well-formed but cannot be processed for the given resource state. |
429 |
Too Many Requests |
You have exceeded the rate limit. See Rate Limiting. |
500 |
Internal Server Error |
An unexpected error occurred on our end. Please try again later. |
502 |
Bad Gateway |
A gateway error occurred on our end. Please try again later. |
503 |
Service Unavailable |
The API is temporarily offline for maintenance. Please try again later. |
504 |
Gateway Timeout |
The request timed out on our end. Please try again later. |
When an API error occurs, Quaderno does not retry or track the failed call. Retry logic is the responsibility of your integration.
The Quaderno API is versioned using the release date as the version name (e.g. 20241028).
A new version is released only when a breaking change is introduced — such as renaming a field, changing a field type, or removing an endpoint.
Non-breaking additions (new endpoints, new optional parameters, new response fields) are applied directly to your current API version without requiring an upgrade.
Quaderno considers the following to be backwards-compatible changes:
Your integration should handle backwards-compatible changes gracefully, ignoring unexpected fields rather than failing.
Example of a breaking change:
// Before version 20210316:
GET /taxes/calculate?country=US&postal_code=94010
// From version 20210316:
GET /tax_rates/calculate?to_country=US&to_postal_code=90210&tax_code=standard&amount=10
Upgrade to the latest API version to benefit from new functionality. All changes are documented in the API Changelog.
Because upgrades to versions with breaking changes may affect your integration, we recommend testing in Quaderno Sandbox before upgrading production.
To upgrade or view your current version, go to Profile → API Keys.
You can also override the API version programmatically on a per-request basis using the Accept header:
curl https://ACCOUNT_NAME.quadernoapp.com/api/contacts \
-u <YOUR_API_KEY>: \
-H 'Accept: application/json; api_version: 20160602'
We periodically sunset old API versions. Affected accounts are notified at least one month in advance, and our Engineering team provides full support during the transition.
In exceptional cases, we may backport breaking changes to all API versions for legal, security, or compliance reasons. These changes are communicated with the same advance notice as sunsetting.
To receive announcements about version sunsetting, backported changes, and new releases, ask your account admin to add a developer role with a valid email address.
For new features and product updates, see quaderno.io/blog/changelog.
Version 20220325 replaces the freeform notice field in /tax_rates/calculate responses with a structured status code:
taxable: The transaction is taxable and the calculator returns a non-zero rate.non_taxable: The transaction is exempt — either the product is not taxable in that jurisdiction (e.g. digital goods in California), or the customer's region is exempt within a registered jurisdiction.not_registered: You are not registered to collect tax in the customer's jurisdiction.reverse_charge: The transaction is subject to reverse charge; no VAT is calculated.If your integration reads the
noticefield, switch to thestatusfield. Thenoticefield is no longer returned.
From 1 July 2021, invoices and credit notes become final (non-editable) when any of the following occur:
To correct a finalized invoice, issue a credit note against it and create a new invoice.
Fields that remain editable on finalized documents: po_number, tag_list, payment_details, notes, custom_metadata, and billing address fields (street_line_1, street_line_2, city, region, postal_code).
API changes introduced:
DELETE /invoices/INVOICE_ID returns 410 Gone.PUT /invoices/INVOICE_ID only accepts the fields listed above.If your use case issues invoices automatically at the point of payment, consider migrating to the Transactions API, which creates the contact, invoice, and payment record in a single API call.
Version 20210316 introduces two breaking changes:
Tax calculation endpoint
The /taxes/calculate endpoint is replaced by /tax_rates/calculate:
curl https://ACCOUNT_NAME.quadernoapp.com/api/tax_rates/calculate?to_country=US&to_postal_code=90210&tax_code=standard&amount=10 \
-u <YOUR_API_KEY>:
The new endpoint only returns tax rates for jurisdictions where your account is registered. If you are getting a 0% rate, check your registered tax jurisdictions.
Pagination
Cursor-based pagination replaces page-based pagination. Replace the page parameter with created_before, passing the ID of the last object from the previous response. Response headers changed:
| Old header | New header |
|---|---|
X-Pages-CurrentPage |
X-Pages-HasMore |
X-Pages-TotalPages |
X-Pages-NextPage |
The maximum page size remains 100 objects, returned in reverse chronological order.
To test before committing, override the version on individual requests:
curl https://ACCOUNT_NAME.quadernoapp.com/api/contacts \
-u <YOUR_API_KEY>: \
-H 'Accept: application/json; api_version: 20210316'
Transactions create billing documents from payment processor events. Pass a sale, refund, or other event from Stripe, PayPal, or another processor and Quaderno will generate the correct invoice, receipt, or credit note, calculate the applicable taxes, and optionally deliver the document to your customer.
Creates a new sale or refund transaction.
| type | string Default: "sale" Enum: "sale" "refund" The transaction’s type. |
| currency | string or null Three-letter ISO currency code, in uppercase. Defaults to the account’s default currency. |
| custom_metadata | hash or null Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. You can have up to 20 keys, with key names up to 40 characters long and values up to 500 characters long. |
object (contact) The data of the customer who paid the transaction. You can reference an existing contact by its id, or pass the json object to create a new contact. | |
| date | string <date> The transaction’s date. Defaults to today. |
required | Array of objects (transaction_item) The list of individual items that make up the transaction. |
object The mailing address to where the order will be shipped. Use it if the order contains physical goods. | |
object (evidence) Evidence of the customer’s location. Highly recommended. | |
required | object Detailed information about the transaction payment. |
| processor | string or null The name of the platform that processed the transaction. E.g. shopify, woocommerce or any user agent you may want to use to identify yourself… Recommended |
| processor_id | string or null The ID of the transaction in the processor. Use the same ID to link sales and refunds for the same operation. Recommended |
| processor_fee_cents | integer or null Processor total fee, in cents. |
| exchange_rate | number or null <float> The rate used for currency conversion when the transaction currency differs from the account base currency. If omitted, the default ECB reference exchange rate for the transaction date is applied. |
| po_number | string or null The number of the related order. Recommended. |
| notes | string or null Optional notes attached to the transaction. |
| tags | string or null Tags attached to the transaction, formatted as a string of comma-separated values. Tags are additional short descriptors, commonly used for filtering and searching. Each individual tag is limited to 40 characters in length. |
{- "type": "sale",
- "currency": "USD",
- "custom_metadata": "anything_you_want: extra info",
- "customer": {
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "date": "2019-08-24",
- "items": [
- {
- "product_code": "012345678901-MFN",
- "description": "string",
- "quantity": 10,
- "discount_rate": 10,
- "amount": 10,
- "tax": {
- "name": "Sales tax",
- "rate": 8.875,
- "taxable_part": 100,
- "country": "US",
- "region": "NY",
- "tax_code": "eservice",
- "additional_name": "string",
- "additional_rate": 0.1,
- "additional_taxable_part": 0.1,
- "import": true
}
}
], - "shipping_address": {
- "street_line_1": "string",
- "street_line_2": "string",
- "city": "string",
- "country": "string",
- "region": "string",
- "postal_code": "string"
}, - "evidence": {
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled"
}, - "payment": {
- "method": "credit_card",
- "processor": "string",
- "processor_id": "string"
}, - "processor": "my_platform_user_agent",
- "processor_id": "my_internal_request_id",
- "processor_fee_cents": 99,
- "exchange_rate": 0.23345,
- "po_number": "po_xxxxxxxx",
- "notes": "A note.",
- "tags": "tagA, tagB"
}{- "id": 92732431,
- "created_at": "1593260908",
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Invoice"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "tag_list": "refund, product_return",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "Product return refund",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "exchange_rate": 0.680309,
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
}Contacts represent the customers and vendors who appear on your invoices, credit notes, and expenses. Each contact stores the billing information and tax identification data Quaderno uses to determine the correct tax treatment for every transaction.
Lists contacts, paginated and sorted by creation date (newest first).
| q | string Filters the contact list based on the contact's full name, email or tax id. Case-sensitive. |
| processor_id | string Filters the contact list based on its |
[- {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}
]Creates a new contact, representing a customer or vendor who appears on invoices, credit notes, and expenses.
| city | string or null City/District/Suburb/Town/Village. |
| contact_person | string or null If the contact is a |
| country | string 2-letter ISO country code. |
| department | string or null If the contact is a |
number or null Default discount for this contact. | |
string or null <email> The contact's email address | |
| first_name required | string The contact's first name. Only if the contact is a |
| kind | string Default: "company" Enum: "company" "person" The type of contact. |
| language | string The contact's preferred language. 2-letter ISO language code. Should be included in the account's translations list. |
| last_name | string or null The contact's last name. Only if the contact is a |
| notes | string or null Internal notes about the contact. |
| phone_1 | string or null The contact's phone number. |
| postal_code | string or null ZIP or postal code. |
| processor | string or null The external platform where the contact was imported from, if applicable. |
| processor_id | string or null The ID the |
| region | string or null State/Province/Region. |
| street_line_1 | string or null Address line 1 (Street address/PO Box). |
| street_line_2 | string or null Address line 2 (Apartment/Suite/Unit/Building). |
| tax_id | string or null The contact's tax identification number. Quaderno can validate EU VAT numbers, ABN, and NZBN. |
| tax_status | string Default: "taxable" Enum: "taxable" "exempt" "reverse" Specifies the tax status of the contact. |
| web | string or null <uri> The contact's website |
{- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}{- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}Retrieves the details of an existing contact.
| id required | string ID of the desired contact. |
{- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}Updates a contact. Any parameters not provided will be left unchanged.
| id required | integer ID of the contact to be updated. |
| city | string or null City/District/Suburb/Town/Village. |
| contact_person | string or null If the contact is a |
| country | string 2-letter ISO country code. |
| department | string or null If the contact is a |
number or null Default discount for this contact. | |
string or null <email> The contact's email address | |
| first_name required | string The contact's first name. Only if the contact is a |
| kind | string Default: "company" Enum: "company" "person" The type of contact. |
| language | string The contact's preferred language. 2-letter ISO language code. Should be included in the account's translations list. |
| last_name | string or null The contact's last name. Only if the contact is a |
| notes | string or null Internal notes about the contact. |
| phone_1 | string or null The contact's phone number. |
| postal_code | string or null ZIP or postal code. |
| processor | string or null The external platform where the contact was imported from, if applicable. |
| processor_id | string or null The ID the |
| region | string or null State/Province/Region. |
| street_line_1 | string or null Address line 1 (Street address/PO Box). |
| street_line_2 | string or null Address line 2 (Apartment/Suite/Unit/Building). |
| tax_id | string or null The contact's tax identification number. Quaderno can validate EU VAT numbers, ABN, and NZBN. |
| tax_status | string Default: "taxable" Enum: "taxable" "exempt" "reverse" Specifies the tax status of the contact. |
| web | string or null <uri> The contact's website |
{- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}{- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}Products describe the goods and services you sell. Attaching a product to an invoice line item ensures consistent tax classification across all documents.
Lists all products, paginated and sorted by creation date (newest first).
| q | string Filters a product list based on the product's name or code. Case-sensitive. |
[- {
- "id": 92732431,
- "code": "012345678901-MFN",
- "country": "US",
- "created_at": "1593260908",
- "currency": "USD",
- "description": "string",
- "paypal_interval_duration": 1,
- "paypal_interval_frequency": 0,
- "paypal_interval_unit": "monthly",
- "kind": "one_off",
- "name": "Ruby Essentials",
- "product_type": "good",
- "stripe_plan_id": "price_1GtYUvKYlo3Dy5yXgrQS",
- "tax_based_on": "customer_country",
- "tax_class": "consulting",
- "tax_type": "excluded",
- "unit_cost": "9.99",
- "stock": "10"
}
]Creates a new product, which could be used as line item on invoices, credit notes and expenses.
| code required | string The product’s SKU (Stock Keeping Unit) describe specific product variations, taking into account any combination of: attributes, currency, and cost. |
| country | string or null 2-letter ISO country code. Required if |
| currency | string or null Three-letter ISO currency code, in uppercase. Must be a supported currency in your payment processors. |
| description required | string or null The product’s description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes. |
| paypal_interval_duration | integer or null Only for |
| paypal_interval_frequency | integer or null Only for PayPal |
| paypal_interval_unit | string Default: "monthly" Enum: "daily" "weekly" "monthly" "yearly" Only for PayPal |
| kind required | string Default: "one_off" Enum: "one_off" "subscription" The type of transaction: one-off purchase or subscription. |
| name required | string The product’s name, meant to be displayable to the customer. |
| product_type required | string Default: "service" Enum: "good" "service" The type of the product. The product is either a tangible |
| stripe_plan_id | string or null Only for Stripe |
| tax_based_on required | string Default: "customer_country" Enum: "customer_country" "country" How taxes are going to be calculated: based on the customer country or a particular country. |
| tax_class required | string Default: "eservice" Enum: "consulting" "eservice" "ebook" "saas" "standard" "reduced" The tax class that applies to the product. |
| tax_type required | string Default: "included" Enum: "excluded" "included" Specify if taxes are included or excluded in the |
| unit_cost required | string The unit amount to be charged |
| stock required | string or null The stock of the physical product. |
{- "code": "012345678901-MFN",
- "country": "US",
- "currency": "USD",
- "description": "string",
- "paypal_interval_duration": 1,
- "paypal_interval_frequency": 0,
- "paypal_interval_unit": "monthly",
- "kind": "one_off",
- "name": "Ruby Essentials",
- "product_type": "good",
- "stripe_plan_id": "price_1GtYUvKYlo3Dy5yXgrQS",
- "tax_based_on": "customer_country",
- "tax_class": "consulting",
- "tax_type": "excluded",
- "unit_cost": "9.99",
- "stock": "10"
}{- "id": 92732431,
- "code": "012345678901-MFN",
- "country": "US",
- "created_at": "1593260908",
- "currency": "USD",
- "description": "string",
- "paypal_interval_duration": 1,
- "paypal_interval_frequency": 0,
- "paypal_interval_unit": "monthly",
- "kind": "one_off",
- "name": "Ruby Essentials",
- "product_type": "good",
- "stripe_plan_id": "price_1GtYUvKYlo3Dy5yXgrQS",
- "tax_based_on": "customer_country",
- "tax_class": "consulting",
- "tax_type": "excluded",
- "unit_cost": "9.99",
- "stock": "10"
}Retrieves the details of an existing product.
| id required | string ID of the desired product. |
{- "id": 92732431,
- "code": "012345678901-MFN",
- "country": "US",
- "created_at": "1593260908",
- "currency": "USD",
- "description": "string",
- "paypal_interval_duration": 1,
- "paypal_interval_frequency": 0,
- "paypal_interval_unit": "monthly",
- "kind": "one_off",
- "name": "Ruby Essentials",
- "product_type": "good",
- "stripe_plan_id": "price_1GtYUvKYlo3Dy5yXgrQS",
- "tax_based_on": "customer_country",
- "tax_class": "consulting",
- "tax_type": "excluded",
- "unit_cost": "9.99",
- "stock": "10"
}Updates a product. Any parameters not provided will be left unchanged.
| id required | integer ID of the product to be updated. |
| code required | string The product’s SKU (Stock Keeping Unit) describe specific product variations, taking into account any combination of: attributes, currency, and cost. |
| country | string or null 2-letter ISO country code. Required if |
| currency | string or null Three-letter ISO currency code, in uppercase. Must be a supported currency in your payment processors. |
| description required | string or null The product’s description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes. |
| paypal_interval_duration | integer or null Only for |
| paypal_interval_frequency | integer or null Only for PayPal |
| paypal_interval_unit | string Default: "monthly" Enum: "daily" "weekly" "monthly" "yearly" Only for PayPal |
| kind required | string Default: "one_off" Enum: "one_off" "subscription" The type of transaction: one-off purchase or subscription. |
| name required | string The product’s name, meant to be displayable to the customer. |
| product_type required | string Default: "service" Enum: "good" "service" The type of the product. The product is either a tangible |
| stripe_plan_id | string or null Only for Stripe |
| tax_based_on required | string Default: "customer_country" Enum: "customer_country" "country" How taxes are going to be calculated: based on the customer country or a particular country. |
| tax_class required | string Default: "eservice" Enum: "consulting" "eservice" "ebook" "saas" "standard" "reduced" The tax class that applies to the product. |
| tax_type required | string Default: "included" Enum: "excluded" "included" Specify if taxes are included or excluded in the |
| unit_cost required | string The unit amount to be charged |
| stock required | string or null The stock of the physical product. |
{- "code": "012345678901-MFN",
- "country": "US",
- "currency": "USD",
- "description": "string",
- "paypal_interval_duration": 1,
- "paypal_interval_frequency": 0,
- "paypal_interval_unit": "monthly",
- "kind": "one_off",
- "name": "Ruby Essentials",
- "product_type": "good",
- "stripe_plan_id": "price_1GtYUvKYlo3Dy5yXgrQS",
- "tax_based_on": "customer_country",
- "tax_class": "consulting",
- "tax_type": "excluded",
- "unit_cost": "9.99",
- "stock": "10"
}{- "id": 92732431,
- "code": "012345678901-MFN",
- "country": "US",
- "created_at": "1593260908",
- "currency": "USD",
- "description": "string",
- "paypal_interval_duration": 1,
- "paypal_interval_frequency": 0,
- "paypal_interval_unit": "monthly",
- "kind": "one_off",
- "name": "Ruby Essentials",
- "product_type": "good",
- "stripe_plan_id": "price_1GtYUvKYlo3Dy5yXgrQS",
- "tax_based_on": "customer_country",
- "tax_class": "consulting",
- "tax_type": "excluded",
- "unit_cost": "9.99",
- "stock": "10"
}The Tax Rates endpoint calculates the applicable tax rates for a given customer address and product type. Use it at checkout to show customers the correct tax before charging them, or to validate your own tax logic against Quaderno's engine.
Calculates the applicable tax rate for a given address and transaction type.
| from_country | string The seller's country. 2-letter ISO country code. Defaults to the account's |
| from_postal_code | string The seller's ZIP or postal code. Defaults to the account's |
| to_country required | |
| to_postal_code | string Example: to_postal_code=10128 The customer's ZIP or postal code. |
| to_city | string Example: to_city=New York The customer's city. Recommended for US Sales Tax calculations. |
| to_street | string Example: to_street=1395 Lexington Avenue The customer's street address. Recommended for US Sales Tax calculations. |
| tax_id | string The customer's tax ID. Quaderno can validate VAT/GST numbers from the EU, United Kingdom, Switzerland, Québec (Canada), Australia, and New Zealand. |
| tax_code | string Enum: "consulting" "eservice" "ebook" "saas" "standard" "reduced" "exempt" Example: tax_code=eservice The transaction's tax code. Tax codes can be obtained via GET /tax_codes. Defaults to the account's default |
| tax_behavior | string Enum: "inclusive" "exclusive" Specifies whether the price is considered inclusive of taxes or exclusive of taxes. |
| product_type | string Enum: "good" "service" Specifies whether the product is a good or a service. Defaults to the account's default. |
| date | string The transaction's date. Defaults to today. |
| amount | string The transaction's amount. |
| currency | string The transaction's currency. Three-letter ISO currency code, in uppercase. Defaults to the account's currency. |
{- "name": "Sales tax",
- "rate": 8.875,
- "taxable_part": 100,
- "country": "US",
- "region": "NY",
- "county": "NEW YORK",
- "city": "NEW YORK",
- "tax_code": "eservice",
- "tax_behavior": "eservice",
- "tax_amount": 100,
- "subtotal": 100,
- "total_amount": 100,
- "status": "not_registered",
- "notes": "Tax amount subject to reverse charge.",
- "notice": "You aren't registered for tax collection in United States - New York. If you need to collect taxes there, please add the tax jurisdiction to your Quaderno account.",
- "additional_name": "string",
- "additional_rate": 0.1,
- "additional_taxable_part": 0.1,
- "additional_tax_amount": 0.1
}Registrations represent your tax IDs — the numbers issued by tax authorities in each jurisdiction where your business is registered to collect tax. Use the validate endpoint to check whether a customer's tax ID is active before applying B2B exemptions such as EU reverse charge.
The result can be true (valid tax ID, meaning it represents a business), false (invalid tax ID) or null (the external validation service is temporarily unavailable).
| country required | string Example: country=DE Tax ID's registration country, represented as 2-letter ISO 3166-1 code. |
| tax_id | string Example: tax_id=DE303954554 The tax ID to be validated. |
{- "valid": true
}Tax jurisdictions are the geographic areas where specific tax rules apply — countries, states, and provinces. Use this endpoint to retrieve supported jurisdictions along with their applicable tax rates and registration requirements.
Retrieves a tax jurisdiction (area subject to its own tax regulations).
| id required | string ID of the desired jurisdiction. |
{- "id": 94,
- "name": "Canada - British Columbia",
- "country": "CA",
- "region": "BC"
}Retrieves the list of all tax jurisdictions (areas subject to its own tax regulations).
| country | string Example: country=CA Case-sensitive filter based on the jurisdiction's country 2-letter ISO 3166-1 code. |
| region | string Case-sensitive filter based on the jurisdiction's region.
Accepts the special string |
[- {
- "id": 0,
- "name": "Canada - British Columbia",
- "country": "Canada - British Columbia",
- "region": "BC"
}
]Registered jurisdictions are the locations where your business is registered to collect taxes and holds a local tax ID. This registration is independent of the countries or states where you sell your products or services.
[- {
- "id": 23546,
- "import_scheme": true,
- "jurisdiction": {
- "id": 94,
- "name": "Canada - British Columbia",
- "country": "Canada - British Columbia",
- "region": "BC"
}, - "permanent_establishment": true,
- "state": "verified",
- "valid_from": "2023-01-01",
- "valid_until": "2024-12-31",
- "value": "123456789BW0001",
- "created_at": 1681199310
}
]Registers a new tax ID representing a business and associates it to a specific tax jurisdiction.
| jurisdiction_id required | integer ID of the tax jurisdiction where the tax ID is registered. |
| value required | string Value of the tax ID. For instance, a VAT number. |
| valid_from | string The tax ID's validity date. Defaults to the beginning of the year. |
| valid_until | string The tax ID's expiration date, or null if the tax ID has no expiration date. |
| permanent_establishment | boolean Default: false Whether your business has physical presence (office, warehouse, etc) in the given jurisdiction. |
| import_scheme | boolean Default: false Whether the business is registered or not in the EU import scheme for foreign sellers of physical goods. |
{- "jurisdiction_id": 94,
- "value": "123456789BW0001",
- "valid_from": "2023-01-01",
- "valid_until": "",
- "permanent_establishment": true,
- "import_scheme": true
}{- "id": 23546,
- "import_scheme": true,
- "jurisdiction": {
- "id": 94,
- "name": "Canada - British Columbia",
- "country": "Canada - British Columbia",
- "region": "BC"
}, - "permanent_establishment": true,
- "state": "verified",
- "valid_from": "2023-01-01",
- "valid_until": "2024-12-31",
- "value": "123456789BW0001",
- "created_at": 1681199310
}Retrieves the details of an existing tax ID.
| id required | integer ID of the desired tax ID. |
{- "id": 23546,
- "import_scheme": true,
- "jurisdiction": {
- "id": 94,
- "name": "Canada - British Columbia",
- "country": "Canada - British Columbia",
- "region": "BC"
}, - "permanent_establishment": true,
- "state": "verified",
- "valid_from": "2023-01-01",
- "valid_until": "2024-12-31",
- "value": "123456789BW0001",
- "created_at": 1681199310
}Updates a tax ID. Any parameters not provided will be left unchanged.
| id required | any ID of the tax ID to be updated. |
| value | string Value of the tax ID you need fixing. |
| valid_from | string The tax ID's validity date. Defaults to the beginning of the year. |
| valid_until | string The tax ID's expiration date, or null if the tax ID has no expiration date. |
| permanent_establishment | boolean Default: false Whether your business has physical presence (office, warehouse, etc) in the given jurisdiction. |
| import_scheme | boolean Default: false Whether the business is registered or not in the EU import scheme for foreign sellers of physical goods. |
{- "value": "123456789BW0001",
- "valid_from": "2023-01-01",
- "valid_until": "2024-12-31",
- "permanent_establishment": true,
- "import_scheme": true
}{- "id": 23546,
- "import_scheme": true,
- "jurisdiction": {
- "id": 94,
- "name": "Canada - British Columbia",
- "country": "Canada - British Columbia",
- "region": "BC"
}, - "permanent_establishment": true,
- "state": "verified",
- "valid_from": "2023-01-01",
- "valid_until": "2024-12-31",
- "value": "123456789BW0001",
- "created_at": 1681199310
}Tax codes classify your products and services for tax purposes. Different jurisdictions apply different rules depending on whether an item is a physical good, a digital service, a SaaS subscription, or an ebook. Assigning the right tax code ensures Quaderno applies the correct rate — and the correct exemption — for every sale.
Retrieves a tax code, which classify goods and services for tax purposes.
| id required | string Enum: "consulting" "ebook" "eservice" "exempt" "reduced" "saas" "standard" Example: eservice The ID of the tax code to retrieve. |
{- "id": "eservice",
- "description": "Service that is delivered over the internet. It is essentially automated, involves minimal human intervention and in the absence of information technology does not have viability.",
- "name": "Electronically supplied services"
}Retrieves the list of supported tax codes.
[- {
- "id": "consulting",
- "description": "Any consulting and professional service (e.g., lawyers, designers, engineers, tax advisors, etc.).",
- "name": "Consulting"
}, - {
- "id": "ebook",
- "description": "An electronic book that is sold with unlimited use.",
- "name": "eBook"
}, - {
- "id": "eservice",
- "description": "Service that is delivered over the internet. It is essentially automated, involves minimal human intervention and in the absence of information technology does not have viability.",
- "name": "Electronically supplied services"
}, - {
- "id": "exempt",
- "description": "Any nontaxable good or service. No tax is applied for jurisdictions that impose a tax.",
- "name": "Non-taxable"
}, - {
- "id": "reduced",
- "description": "Specific goods and services with a reduced tax rate.",
- "name": "Reduced tax rate"
}, - {
- "id": "saas",
- "description": "Cloud services software delivered over the internet. The software is not customized for the specific buyer. Assumes no software is downloaded by the buyer.",
- "name": "Software as a service (SaaS)"
}, - {
- "id": "standard",
- "description": "Any taxable good or service. For jurisdictions that impose a tax, the standard rate is applied.",
- "name": "Generally taxable"
}
]Evidence records the customer location signals — IP address, billing country, bank country — that you have collected for a sale. For EU VAT on digital services, you must store at least two non-conflicting pieces of evidence per transaction to comply with the rules-of-origin requirements.
Retrieves the list of evidence objects, paginated and sorted by creation date (newest first).
| state | string A filter on the list based on the evidence's state. You can combine multiple states separated by commas. Valid states are |
| document_id | integer A filter on the list based on the evidence's related document. |
[- {
- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}
]Creates a new evidence.
| additional_evidence | string or null Additional evidence used to proof the customer's location. Required if there's a `additional_evidence_country'. |
| additional_evidence_country | string or null 2-letter ISO 3166-1 code. |
| bank_country | string or null 2-letter ISO 3166-1 code. |
| billing_country | string or null 2-letter ISO 3166-1 code. |
| document_id required | integer Unique identifier for the related invoice. |
| ip_address | string or null The customer's IP address |
| notes | string or null Internal notes about the evidence. |
| state | string Default: "unsettled" Enum: "unsettled" "conflicting" "confirmed" State of the evidence |
{- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled"
}{- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}Retrieves updated info from the evidence.
| id required | string Example: 41 The ID of the evidence to retrieve. |
{- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}Updates the specified evidence by setting the values of the parameters passed. Any parameters not provided will be left unchanged. This request accepts mostly the same arguments as the evidence creation call.
| id required | integer The ID of the evidence to be updated. |
| additional_evidence | string or null Additional evidence used to proof the customer's location. Required if there's a `additional_evidence_country'. |
| additional_evidence_country | string or null 2-letter ISO 3166-1 code. |
| bank_country | string or null 2-letter ISO 3166-1 code. |
| billing_country | string or null 2-letter ISO 3166-1 code. |
| document_id required | integer Unique identifier for the related invoice. |
| ip_address | string or null The customer's IP address |
| notes | string or null Internal notes about the evidence. |
| state | string Default: "unsettled" Enum: "unsettled" "conflicting" "confirmed" State of the evidence |
{- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled"
}{- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}Invoices are formal payment requests that document amounts owed by customers for goods or services. Once issued, invoices are legally immutable in most jurisdictions — only administrative fields can be changed. Use the void endpoint to correct a finalized invoice.
Lists all invoices, paginated and sorted by creation date (newest first).
| q | string Filters an invoices list based on the invoice number, customer name or PO number. |
| date | string Filters an invoices list based on the issue date. A date range must be entered. Allowed formats are |
| state | string Enum: "outstanding" "late" "uncollectible" "paid" Filters an invoices list based on the invoice state. |
| processor_id | string Filters an invoices list based on its |
| contact | integer Filters an invoices list based on the customer ID. |
[- {
- "id": 92732431,
- "created_at": 1593260908,
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Recurring"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "city": "Pasadena",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "string",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "evidence": {
- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
],
}
]Creates a new invoice. If a payment_method is provided, a payment for the full amount is automatically recorded and the invoice is immediately marked as paid.
| number | string Unique, sequential number identifying this invoice. Invoice numbers must be sequential without gaps or duplicates to comply with legal requirements. Automatically generated if not provided. |
| issue_date | string <date> Date the invoice was issued. May differ from the actual delivery or service date. |
| po_number | string or null Customer's purchase order number for reference and tracking. |
| due_date | string or null <date> Payment due date. Defines when payment is expected and affects the invoice state (outstanding, late, etc.). |
| currency | string Three-letter ISO 4217 currency code in uppercase. |
| exchange_rate | number or null <float> Exchange rate applied when converting from transaction currency to account base currency. If omitted, the ECB (European Central Bank) reference rate for the issue date is automatically applied. |
| tag_list | Array of strings or null Array of tags for categorizing and filtering invoices. Useful for organizing by product line, sales channel, or custom categories. |
| payment_details | string or null Additional information about accepted payment methods, displayed to the customer. |
| notes | string or null Internal notes or additional information about this invoice. Not typically shown to customers. |
required | contact (object) or object Customer being billed. Can reference an existing contact by ID or include full contact details. |
object (attachment) Invoices and expenses can have attached files. | |
| street_line_1 | string or null First line of customer's billing address (street address or PO Box). |
| street_line_2 | string or null Second line of customer's billing address (apartment, suite, unit, or building number). |
| tax_id | string or null Customer's tax identification number (VAT number, EIN, etc.). Important for B2B transactions and tax exemptions. |
| subject | string or null Brief summary or title describing what this invoice is for. Displayed prominently on the document. |
required | Array of objects (document_item) Line items included in this invoice (products, services, fees, etc.). Maximum 200 items per request; use update requests to add more. Total limit: 1000 items per invoice. |
object (evidence) Location evidence (IP address, billing country, etc.) used to determine applicable tax rates and jurisdictions. | |
| payment_processor | string or null Name of the payment processor that handled this transaction (e.g., "stripe", "paypal", "braintree"). |
| payment_processor_id | string or null Transaction ID from the payment processor. Used to link this invoice to the original payment gateway transaction. |
| processor_fee_cents | integer or null Payment processing fee charged by the payment processor, in cents. |
| custom_metadata | object or null Custom key-value pairs for storing additional structured data. Useful for integrations and storing application-specific information. |
| payment_method | string Enum: "credit_card" "cash" "wire_transfer" "direct_debit" "check" "iou" "paypal" "offset" "other" If provided, a payment for the full invoice amount is automatically recorded using this method, marking the invoice as paid immediately upon creation. |
{- "number": "00001",
- "issue_date": "2020-06-27",
- "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "attachment": {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}, - "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "string",
- "items": [
- {
- "description": "Ruby Essentials",
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "evidence": {
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled"
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "payment_method": "credit_card"
}{- "id": 92732431,
- "created_at": 1593260908,
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Recurring"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "city": "Pasadena",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "string",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "evidence": {
- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
],
}Retrieves the details of an existing invoice. You need only supply the unique invoice identifier that was returned upon invoice creation.
| id required | string The ID of the desired invoice. |
{- "id": 92732431,
- "created_at": 1593260908,
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Recurring"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "city": "Pasadena",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "string",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "evidence": {
- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
],
}Updates an existing invoice. Once finalized, invoices are legally immutable — tax law prohibits altering amounts, line items, dates, or customer details on issued invoices. Only administrative fields (tag_list, payment_details, notes, custom_metadata) can still be modified. If a correction is needed, void the invoice and issue a new one.
| id required | integer The ID of the invoice to be updated. |
| tag_list | Array of strings or null Multiple tags should be separated by commas. |
| payment_details | string or null Detailed information about the accepted payment methods. |
| notes | string or null Extra notes about the document. |
| custom_metadata | object or null Set of key-value pairs that you can attach to an object. |
object (attachment) Invoices and expenses can have attached files. |
{- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "custom_metadata": {
- "key": "value"
}, - "attachment": {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}
}{- "id": 92732431,
- "created_at": 1593260908,
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Recurring"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "city": "Pasadena",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "string",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "evidence": {
- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
],
}Marks an invoice as uncollectible. This is useful for tracking invoices that you have determined will not be paid.
| id required | string The ID of the desired invoice. |
{- "id": 92732431,
- "created_at": 1593260908,
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Recurring"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "city": "Pasadena",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "string",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "evidence": {
- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
],
}Voids an invoice by creating a credit note with the given reason. If the invoice is pending, it will be marked as paid via an offset payment.
| id required | string The ID of the invoice to void. |
| void_reason required | string |
{- "void_reason": "string"
}{- "id": 92732431,
- "created_at": 1593260908,
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Recurring"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "city": "Pasadena",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "string",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "evidence": {
- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
],
}Records a payment against an invoice. When the total payments reach the invoice amount, the invoice is automatically marked as paid.
| id required | string The ID of the invoice. |
| amount | number <float> Paid amount. |
| date | string or null <date> Default is current date. |
| payment_method | string or null Enum: "credit_card" "cash" "wire_transfer" "direct_debit" "check" "iou" "paypal" "other" "credit" "offset" |
| processor | string or null The payment processor used to process the payment. |
| processor_id | string or null The ID the |
{- "amount": 56.6,
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999"
}{- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}Sends the invoice to the customer via email using the account's configured invoice template and language. The contact must have a valid email address. Delivery history is recorded and accessible via the deliveries field.
| id required | string The ID of the desired invoice. |
Receipts document completed transactions. Unlike invoices, receipts are always paid by definition — a payment method is required at creation. They are immutable after creation; use the void endpoint if a correction is needed.
Lists all receipts, paginated and sorted by creation date (newest first). All receipts are paid by definition.
| q | string Filters an receipts list based on the receipt number, customer name or PO number. |
| date | string Filters an receipts list based on the issue date. A date range must be entered. Allowed formats are |
| processor_id | string Filters an receipts list based on its |
| contact | integer Filters an receipts list based on the customer ID. |
[- {
- "id": 92732431,
- "created_at": 1593260908,
- "number": "00001",
- "issue_date": "2020-06-27",
- "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "attachments": [
- {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}
], - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "city": "Pasadena",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "evidence": {
- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "paid",
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
],
}
]Creates a new receipt documenting a completed transaction. Unlike invoices, receipts are always paid — a payment_method is required. Receipts are immutable after creation and cannot be updated or deleted. Use the void endpoint if a correction is needed.
| number | string Unique, sequential number identifying this receipt. Receipt numbers must be sequential without gaps or duplicates to comply with legal requirements. Automatically generated if not provided. |
| issue_date | string <date> Date the receipt was issued. May differ from the actual transaction date. |
| po_number | string or null Customer's purchase order number for reference and tracking. |
| due_date | string or null <date> Payment due date. For receipts this is typically the same as the issue date since payment is usually immediate. |
| currency | string Three-letter ISO 4217 currency code in uppercase. |
| exchange_rate | number or null <float> Exchange rate applied when converting from transaction currency to account base currency. If omitted, the ECB (European Central Bank) reference rate for the issue date is automatically applied. |
| tag_list | Array of strings or null Array of tags for categorizing and filtering receipts. Useful for organizing by product line, sales channel, or custom categories. |
| payment_details | string or null Additional information about accepted payment methods, displayed to the customer. |
| notes | string or null Internal notes or additional information about this receipt. Not typically shown to customers. |
required | contact (object) or object Customer receiving this receipt. Can reference an existing contact by ID or include full contact details. |
| street_line_1 | string or null First line of customer's billing address (street address or PO Box). |
| street_line_2 | string or null Second line of customer's billing address (apartment, suite, unit, or building number). |
| subject | string or null Brief summary or title describing what this receipt is for. Displayed prominently on the document. |
required | Array of objects (document_item) Line items included in this receipt (products, services, fees, etc.). Maximum 200 items per request; use update requests to add more. Total limit: 1000 items per receipt. |
object (evidence) Location evidence (IP address, billing country, etc.) used to determine applicable tax rates and jurisdictions. | |
| payment_processor | string or null Name of the payment processor that handled this transaction (e.g., "stripe", "paypal", "braintree"). |
| payment_processor_id | string or null Transaction ID from the payment processor. Used to link this receipt to the original payment gateway transaction. |
| processor_fee_cents | integer or null Payment processing fee charged by the payment processor, in cents. |
| custom_metadata | object or null Custom key-value pairs for storing additional structured data. Useful for integrations and storing application-specific information. |
| payment_method required | string Enum: "credit_card" "cash" "wire_transfer" "direct_debit" "check" "iou" "paypal" "offset" "other" How the customer paid. Required — receipts document completed transactions and must always record the payment method used. |
{- "number": "00001",
- "issue_date": "2020-06-27",
- "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "items": [
- {
- "description": "Ruby Essentials",
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "evidence": {
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled"
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "payment_method": "credit_card"
}{- "id": 92732431,
- "created_at": 1593260908,
- "number": "00001",
- "issue_date": "2020-06-27",
- "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "attachments": [
- {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}
], - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "city": "Pasadena",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "evidence": {
- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "paid",
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
],
}Retrieves the details of an existing receipt.
| id required | string The ID of the desired receipt. |
{- "id": 92732431,
- "created_at": 1593260908,
- "number": "00001",
- "issue_date": "2020-06-27",
- "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "attachments": [
- {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}
], - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "city": "Pasadena",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "evidence": {
- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "paid",
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
],
}Voids a receipt by automatically issuing an offsetting credit note. Tax law prohibits deleting receipts — voiding is the only way to reverse a completed transaction. A void_reason is required for audit purposes.
| id required | string The ID of the receipt to void. |
| void_reason required | string |
{- "void_reason": "string"
}{- "id": 92732431,
- "created_at": 1593260908,
- "number": "00001",
- "issue_date": "2020-06-27",
- "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "attachments": [
- {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}
], - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "city": "Pasadena",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "evidence": {
- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "paid",
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
],
}Sends the receipt to the customer via email using the account's configured invoice template and language. The contact must have a valid email address. Delivery history is recorded and accessible via the deliveries field.
| id required | string The ID of the desired receipt. |
Credit notes reduce or cancel amounts owed by customers. They are used for refunds, order cancellations, and pricing corrections. Tax law prohibits deleting credit notes — voiding is the only way to reverse one.
Lists all credit notes, paginated and sorted by creation date (newest first). Credit notes are used to cancel or partially refund an invoice.
| q | string Filters a credit notes list based on the credit number, customer name or PO number. |
| date | string Filters a credit notes list based on the issue date. A date range must be entered. Allowed formats are |
| state | string Enum: "outstanding" "late" "paid" Filters a credit notes list based on the credit state. |
| processor_id | string Filters a credit notes list based on its |
[- {
- "id": 92732431,
- "created_at": "1593260908",
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Invoice"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "tag_list": "refund, product_return",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "Product return refund",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "exchange_rate": 0.680309,
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
}
]Creates a credit note against an existing invoice. The credit note offsets the invoice amount — fully or partially — and automatically records the refund. Credit notes are immutable after creation and cannot be updated or deleted. Use the void endpoint if a correction is needed.
| invoice_id required | integer The ID of the refunded invoice. |
| payment_method | string Enum: "credit_card" "cash" "wire_transfer" "direct_debit" "check" "iou" "paypal" "other" Payment method used to refund the credited amount. |
| credited_amount | number Total amount to be credited, equal or lower than the total amount of the related invoice. Only works for refunds of invoices with one single item. When empty, defaults to the total amount of the related invoice. |
{- "invoice_id": 139331
}{- "id": 92732431,
- "created_at": "1593260908",
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Invoice"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "tag_list": "refund, product_return",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "Product return refund",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "exchange_rate": 0.680309,
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
}Retrieves the details of an existing credit note. You need only supply the unique identifier returned upon creation.
| id required | string The ID of the desired credit. |
{- "id": 92732431,
- "created_at": "1593260908",
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Invoice"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "tag_list": "refund, product_return",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "Product return refund",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "exchange_rate": 0.680309,
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
}Updates an existing credit note. Once finalized, credit notes are legally immutable — tax law prohibits altering amounts, line items, or customer details. Only administrative fields (tag_list, payment_details, notes, custom_metadata) can still be modified. If a correction is needed, void the credit note and issue a new one.
| id required | integer The ID of the credit to be updated. |
| tag_list | Array of strings or null Multiple tags should be separated by commas. |
| payment_details | string or null Detailed information about the accepted payment methods. |
| notes | string or null Extra notes about the document. |
| custom_metadata | object or null Set of key-value pairs that you can attach to an object. |
object (attachment) Invoices and expenses can have attached files. |
{- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "custom_metadata": {
- "key": "value"
}, - "attachment": {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}
}{- "id": 92732431,
- "created_at": "1593260908",
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Invoice"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "tag_list": "refund, product_return",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "Product return refund",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "exchange_rate": 0.680309,
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
}Records a payment against a credit note. When the total payments reach the credit note amount, it is automatically marked as paid.
| id required | string The ID of the credit note. |
| amount | number <float> Paid amount. |
| date | string or null <date> Default is current date. |
| payment_method | string or null Enum: "credit_card" "cash" "wire_transfer" "direct_debit" "check" "iou" "paypal" "other" "credit" "offset" |
| processor | string or null The payment processor used to process the payment. |
| processor_id | string or null The ID the |
{- "amount": 56.6,
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999"
}{- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}Voids a credit note, effectively canceling it. Tax law prohibits deleting credit notes — voiding is the only way to reverse one. A void_reason is required for audit purposes. Voiding reopens the original invoice if it was closed by this credit note.
| id required | integer The ID of the credit to be voided. |
| void_reason required | string |
{- "void_reason": "string"
}{- "id": 92732431,
- "created_at": "1593260908",
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Invoice"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "tag_list": "refund, product_return",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "Product return refund",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "exchange_rate": 0.680309,
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
}Sends the credit note to the customer via email using the account's configured template and language. The contact must have a valid email address. Delivery history is recorded and accessible via the deliveries field.
| id required | string The ID of the desired credit. |
Proformas are preliminary documents sent to customers before a sale is confirmed. They outline the expected cost and can be accepted, declined, or converted into a full invoice once the customer agrees.
Lists all proformas, paginated and sorted by creation date (newest first).
| q | string Filters a proformas list based on the proforma number, customer name or PO number. |
| date | string Filters a proformas list based on the issue date. A date range must be entered. Allowed formats are |
| state | string Enum: "outstanding" "accepted" "declined" "invoiced" "late" Filters a proformas list based on the proforma state. |
| contact | integer Filters a proformas list based on the customer ID. |
[- {
- "id": 92732431,
- "created_at": 1593260908,
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
], - "city": "Pasadena",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "currency": "USD",
- "custom_metadata": { },
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "due_days": 30,
- "discount_cents": 0,
- "issue_date": "2020-06-27",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "notes": "string",
- "number": "E-00001",
- "payment_details": "string",
- "po_number": "999",
- "postal_code": "91104",
- "region": "CA",
- "state": "outstanding",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "subtotal_cents": 9375,
- "tag_list": "consulting, premium",
- "tax_id": "string",
- "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "total_cents": 9375,
- "valid_until": "2020-07-27"
}
]Creates a new proforma object.
object (attachment) Invoices and expenses can have attached files. | |
required | contact (object) or object Customer receiving the proforma. Can reference an existing contact by ID or include full contact details. |
| currency | string Three-letter ISO 4217 currency code in uppercase. |
| custom_metadata | object or null Custom key-value pairs for storing additional structured data. |
| due_days | integer or null Number of days after the invoice issue date when payment is due. When the proforma is converted to an invoice, the invoice due_date is calculated as issue_date + due_days. |
required | Array of objects (document_item) Line items included in this proforma (products, services, fees, etc.). |
| notes | string or null Internal notes or additional information about this proforma. |
| payment_details | string or null Additional information about accepted payment methods, displayed to the customer. |
| po_number | string or null Customer's purchase order number for reference and tracking. |
| street_line_1 | string or null First line of customer's billing address. |
| street_line_2 | string or null Second line of customer's billing address. |
| subject | string or null Brief summary or title describing what this proforma is for. Displayed prominently on the document. |
| tag_list | Array of strings or null Array of tags for categorizing and filtering proformas. |
| tax_id | string or null Customer's tax identification number (VAT number, EIN, etc.). |
| valid_until | string or null <date> Expiration date of the proforma. Once this date is passed and the proforma has not been accepted, it transitions to the "late" state. |
{- "attachment": {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}, - "contact": {
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "currency": "USD",
- "custom_metadata": { },
- "due_days": 30,
- "items": [
- {
- "description": "Ruby Essentials",
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "notes": "string",
- "payment_details": "string",
- "po_number": "999",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "tag_list": "consulting, premium",
- "tax_id": "string",
- "valid_until": "2020-07-27"
}{- "id": 92732431,
- "created_at": 1593260908,
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
], - "city": "Pasadena",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "currency": "USD",
- "custom_metadata": { },
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "due_days": 30,
- "discount_cents": 0,
- "issue_date": "2020-06-27",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "notes": "string",
- "number": "E-00001",
- "payment_details": "string",
- "po_number": "999",
- "postal_code": "91104",
- "region": "CA",
- "state": "outstanding",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "subtotal_cents": 9375,
- "tag_list": "consulting, premium",
- "tax_id": "string",
- "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "total_cents": 9375,
- "valid_until": "2020-07-27"
}Retrieves the details of an existing proforma.
| id required | string The ID of the desired proforma. |
{- "id": 92732431,
- "created_at": 1593260908,
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
], - "city": "Pasadena",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "currency": "USD",
- "custom_metadata": { },
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "due_days": 30,
- "discount_cents": 0,
- "issue_date": "2020-06-27",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "notes": "string",
- "number": "E-00001",
- "payment_details": "string",
- "po_number": "999",
- "postal_code": "91104",
- "region": "CA",
- "state": "outstanding",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "subtotal_cents": 9375,
- "tag_list": "consulting, premium",
- "tax_id": "string",
- "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "total_cents": 9375,
- "valid_until": "2020-07-27"
}Updates an existing proforma. Accepted and invoiced proformas cannot be modified.
| id required | integer The ID of the proforma to be updated. |
object (attachment) Invoices and expenses can have attached files. | |
required | contact (object) or object Customer receiving the proforma. Can reference an existing contact by ID or include full contact details. |
| currency | string Three-letter ISO 4217 currency code in uppercase. |
| custom_metadata | object or null Custom key-value pairs for storing additional structured data. |
| due_days | integer or null Number of days after the invoice issue date when payment is due. When the proforma is converted to an invoice, the invoice due_date is calculated as issue_date + due_days. |
required | Array of objects (document_item) Line items included in this proforma (products, services, fees, etc.). |
| notes | string or null Internal notes or additional information about this proforma. |
| payment_details | string or null Additional information about accepted payment methods, displayed to the customer. |
| po_number | string or null Customer's purchase order number for reference and tracking. |
| street_line_1 | string or null First line of customer's billing address. |
| street_line_2 | string or null Second line of customer's billing address. |
| subject | string or null Brief summary or title describing what this proforma is for. Displayed prominently on the document. |
| tag_list | Array of strings or null Array of tags for categorizing and filtering proformas. |
| tax_id | string or null Customer's tax identification number (VAT number, EIN, etc.). |
| valid_until | string or null <date> Expiration date of the proforma. Once this date is passed and the proforma has not been accepted, it transitions to the "late" state. |
{- "attachment": {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}, - "contact": {
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "currency": "USD",
- "custom_metadata": { },
- "due_days": 30,
- "items": [
- {
- "description": "Ruby Essentials",
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "notes": "string",
- "payment_details": "string",
- "po_number": "999",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "tag_list": "consulting, premium",
- "tax_id": "string",
- "valid_until": "2020-07-27"
}{- "id": 92732431,
- "created_at": 1593260908,
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
], - "city": "Pasadena",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "currency": "USD",
- "custom_metadata": { },
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "due_days": 30,
- "discount_cents": 0,
- "issue_date": "2020-06-27",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "notes": "string",
- "number": "E-00001",
- "payment_details": "string",
- "po_number": "999",
- "postal_code": "91104",
- "region": "CA",
- "state": "outstanding",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "subtotal_cents": 9375,
- "tag_list": "consulting, premium",
- "tax_id": "string",
- "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "total_cents": 9375,
- "valid_until": "2020-07-27"
}Marks a proforma as accepted by the customer. Only proformas in "outstanding" or "late" state can be accepted.
| id required | string The ID of the proforma to accept. |
{- "id": 92732431,
- "created_at": 1593260908,
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
], - "city": "Pasadena",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "currency": "USD",
- "custom_metadata": { },
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "due_days": 30,
- "discount_cents": 0,
- "issue_date": "2020-06-27",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "notes": "string",
- "number": "E-00001",
- "payment_details": "string",
- "po_number": "999",
- "postal_code": "91104",
- "region": "CA",
- "state": "outstanding",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "subtotal_cents": 9375,
- "tag_list": "consulting, premium",
- "tax_id": "string",
- "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "total_cents": 9375,
- "valid_until": "2020-07-27"
}Marks a proforma as declined by the customer. Only proformas in "outstanding" or "late" state can be declined.
| id required | string The ID of the proforma to decline. |
{- "id": 92732431,
- "created_at": 1593260908,
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
], - "city": "Pasadena",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "currency": "USD",
- "custom_metadata": { },
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "due_days": 30,
- "discount_cents": 0,
- "issue_date": "2020-06-27",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "notes": "string",
- "number": "E-00001",
- "payment_details": "string",
- "po_number": "999",
- "postal_code": "91104",
- "region": "CA",
- "state": "outstanding",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "subtotal_cents": 9375,
- "tag_list": "consulting, premium",
- "tax_id": "string",
- "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "total_cents": 9375,
- "valid_until": "2020-07-27"
}Reverts a proforma back to "outstanding" from "accepted" or "declined". Invoiced proformas cannot be reverted.
| id required | string The ID of the proforma to revert. |
{- "id": 92732431,
- "created_at": 1593260908,
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
], - "city": "Pasadena",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "currency": "USD",
- "custom_metadata": { },
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "due_days": 30,
- "discount_cents": 0,
- "issue_date": "2020-06-27",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "notes": "string",
- "number": "E-00001",
- "payment_details": "string",
- "po_number": "999",
- "postal_code": "91104",
- "region": "CA",
- "state": "outstanding",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "subtotal_cents": 9375,
- "tag_list": "consulting, premium",
- "tax_id": "string",
- "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "total_cents": 9375,
- "valid_until": "2020-07-27"
}Converts an accepted proforma into an invoice. The proforma state transitions to "invoiced" and a new invoice is returned. Only proformas in the "accepted" state can be converted.
| id required | string The ID of the proforma to convert. |
{- "id": 92732431,
- "created_at": 1593260908,
- "number": "00001",
- "issue_date": "2020-06-27",
- "related_document": {
- "id": 92732430,
- "type": "Recurring"
}, - "po_number": "999",
- "due_date": "2020-07-27",
- "currency": "USD",
- "exchange_rate": 0.680309,
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "city": "Pasadena",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "subject": "string",
- "deliveries": [
- {
- "delivered_at": "1593260908",
- "recipient": "ticketbai_araba",
- "service_response": "string",
- "type": "registration"
}
], - "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "evidence": {
- "id": 92732431,
- "additional_evidence": "Phone bill",
- "additional_evidence_country": "DE",
- "bank_country": "DE",
- "billing_country": "DE",
- "created_at": "1593260908",
- "document_id": 43123,
- "ip_address": "127.0.0.1",
- "ip_country": "DE",
- "notes": "Some private notes about the evidence.",
- "state": "unsettled",
}, - "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "processor_fee_cents": 99,
- "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
- "alerts": [
- {
- "kind": "conflicting_evidence",
- "description": "Location evidence indicates customer is in US, but billing address shows CA. Tax calculated based on evidence."
}
],
}Expenses record the costs your business incurs from vendors and suppliers. They appear in your financial reports and can be used to track deductible business expenditures.
Lists all expenses, paginated and sorted by creation date (newest first).
| q | string Filters an expenses list based on the expense number, customer name or PO number. |
| date | string Filters an expenses list based on the issue date. A date range must be entered. Allowed formats are |
| state | string Enum: "outstanding" "late" "paid" Filters an expenses list based on the expense state: |
| contact | integer Filters an expenses list based on the customer ID. |
[- {
- "id": 927324,
- "created_at": 1593260908,
- "issue_date": "2023-09-01",
- "po_number": "999",
- "currency": "USD",
- "tag_list": "consulting, office",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
}
]Creates a new expense.
| issue_date | string <date> Date when the expense was issued. |
| po_number | string or null Purchase order number. |
| currency | string Three-letter ISO currency code, in uppercase. |
| tag_list | Array of strings or null Multiple tags should be separated by commas. |
| payment_details | string or null Detailed information about the payment. |
| notes | string or null Extra notes about the expense. |
required | contact (object) or object Provider of your expense. |
object (attachment) Invoices and expenses can have attached files. | |
| country | string The customer’s billing country. 2-letter ISO country code. |
| postal_code | string or null The customer’s billing ZIP or postal code. |
| region | string or null The customer’s billing state/province/region. |
| street_line_1 | string or null The customer’s billing address line 1 (Street address/PO Box). |
| street_line_2 | string or null The customer’s billing address line 2 (Apartment/Suite/Unit/Building). |
| subject | string or null An optional summary description of the document. |
required | Array of objects (document_item) The individual line items that make up the expense. No more than 200 items are allowed in a request. To add more use subsequent update requests. Maximum items per document are limited up to 1000 items. |
| payment_method | string Enum: "credit_card" "cash" "wire_transfer" "direct_debit" "check" "iou" "paypal" "other" Payment method used. |
| payment_processor | string or null The payment processor used to pay the expense. |
| payment_processor_id | string or null The ID the |
| custom_metadata | object or null Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. |
{- "issue_date": "2023-09-01",
- "po_number": "999",
- "currency": "USD",
- "tag_list": "consulting, office",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "attachment": {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "items": [
- {
- "description": "Ruby Essentials",
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "payment_method": "credit_card",
- "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "custom_metadata": { }
}{- "id": 927324,
- "created_at": 1593260908,
- "issue_date": "2023-09-01",
- "po_number": "999",
- "currency": "USD",
- "tag_list": "consulting, office",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
}Retrieves the details of an existing expense.
| id required | string The ID of the desired expense. |
{- "id": 927324,
- "created_at": 1593260908,
- "issue_date": "2023-09-01",
- "po_number": "999",
- "currency": "USD",
- "tag_list": "consulting, office",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
}Updates an expense.
| id required | integer The ID of the expense to be updated. |
| issue_date | string <date> Date when the expense was issued. |
| po_number | string or null Purchase order number. |
| currency | string Three-letter ISO currency code, in uppercase. |
| tag_list | Array of strings or null Multiple tags should be separated by commas. |
| payment_details | string or null Detailed information about the payment. |
| notes | string or null Extra notes about the expense. |
required | contact (object) or object Provider of your expense. |
object (attachment) Invoices and expenses can have attached files. | |
| country | string The customer’s billing country. 2-letter ISO country code. |
| postal_code | string or null The customer’s billing ZIP or postal code. |
| region | string or null The customer’s billing state/province/region. |
| street_line_1 | string or null The customer’s billing address line 1 (Street address/PO Box). |
| street_line_2 | string or null The customer’s billing address line 2 (Apartment/Suite/Unit/Building). |
| subject | string or null An optional summary description of the document. |
required | Array of objects (document_item) The individual line items that make up the expense. No more than 200 items are allowed in a request. To add more use subsequent update requests. Maximum items per document are limited up to 1000 items. |
| payment_method | string Enum: "credit_card" "cash" "wire_transfer" "direct_debit" "check" "iou" "paypal" "other" Payment method used. |
| payment_processor | string or null The payment processor used to pay the expense. |
| payment_processor_id | string or null The ID the |
| custom_metadata | object or null Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. |
{- "issue_date": "2023-09-01",
- "po_number": "999",
- "currency": "USD",
- "tag_list": "consulting, office",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "attachment": {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "items": [
- {
- "description": "Ruby Essentials",
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "payment_method": "credit_card",
- "payment_processor": "stripe",
- "payment_processor_id": "ch_999999999999",
- "custom_metadata": { }
}{- "id": 927324,
- "created_at": 1593260908,
- "issue_date": "2023-09-01",
- "po_number": "999",
- "currency": "USD",
- "tag_list": "consulting, office",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "country": "US",
- "postal_code": "91104",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "subject": "string",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "payments": [
- {
- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}
], - "custom_metadata": { },
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "total_cents": 9375,
- "state": "outstanding",
}Recurring documents automatically generate invoices or expenses on a defined schedule — daily, weekly, monthly, or yearly. Use them to automate subscription billing and regular vendor payments without manual intervention.
Lists all recurring, paginated and sorted by creation date (newest first).
| q | string Filters a recurring list based on the recurring number, customer name or PO number. |
| date | string Filters a recurring list based on the issue date. A date range must be entered. Allowed formats are |
| state | string Enum: "active" "archived" Filters a recurring list based on the recurring state. |
| contact | integer Filters a recurring list based on the customer ID. |
[- {
- "id": 92732431,
- "start_date": "2023-01-27",
- "end_date": "2024-01-27",
- "frequency": "daily",
- "recurring_period": "days",
- "recurring_frequency": 1,
- "due_days": "2020-07-27",
- "po_number": "999",
- "currency": "USD",
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "subject": "string",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "custom_metadata": { },
- "total_cents": 9375,
- "state": "active",
}
]Creates a new recurring.
| start_date | string <date> Date of the issue of the first document for this recurring. Defaults to 1 months from today. |
| end_date | string or null <date> Date of the issue of the last document for this recurring. |
| frequency | string Default: "monthly" Enum: "daily" "weekly" "biweekly" "monthly" "bimonthly" "quarterly" "semiyearly" "yearly" "biyearly" Recurring frequency. Deprecated. Use recurring_period and recurring_frequency instead. |
| recurring_period | string Default: "months" Enum: "days" "weeks" "months" "years" Recurring period. |
| recurring_frequency | integer Default: 1 The number of recurring periods between each document. |
| due_days | string or null <date> The date on which payment for this recurring is due. |
| po_number | string or null Purchase order number. |
| currency | string Three-letter ISO currency code, in uppercase. |
| tag_list | Array of strings or null Multiple tags should be separated by commas. |
| payment_details | string or null Detailed information about the accepted payment methods. |
| notes | string or null Extra notes about the recurring. |
required | contact (object) or object Customer who will be billed. |
| subject | string or null An optional summary description for the document. |
required | Array of objects (document_item) The individual line items that make up the recurring. No more than 200 items are allowed in a request. To add more use subsequent update requests. Maximum items per document are limited up to 1000 items. |
| custom_metadata | object or null Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. |
{- "start_date": "2023-01-27",
- "end_date": "2024-01-27",
- "frequency": "daily",
- "recurring_period": "days",
- "recurring_frequency": 1,
- "due_days": "2020-07-27",
- "po_number": "999",
- "currency": "USD",
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "subject": "string",
- "items": [
- {
- "description": "Ruby Essentials",
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "custom_metadata": { }
}{- "id": 92732431,
- "start_date": "2023-01-27",
- "end_date": "2024-01-27",
- "frequency": "daily",
- "recurring_period": "days",
- "recurring_frequency": 1,
- "due_days": "2020-07-27",
- "po_number": "999",
- "currency": "USD",
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "subject": "string",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "custom_metadata": { },
- "total_cents": 9375,
- "state": "active",
}Retrieves the details of an existing recurring.
| id required | string The ID of the desired recurring. |
{- "id": 92732431,
- "start_date": "2023-01-27",
- "end_date": "2024-01-27",
- "frequency": "daily",
- "recurring_period": "days",
- "recurring_frequency": 1,
- "due_days": "2020-07-27",
- "po_number": "999",
- "currency": "USD",
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "subject": "string",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "custom_metadata": { },
- "total_cents": 9375,
- "state": "active",
}Updates a recurring.
| id required | integer The ID of the recurring to be updated. |
| start_date | string <date> Date of the issue of the first document for this recurring. Defaults to 1 months from today. |
| end_date | string or null <date> Date of the issue of the last document for this recurring. |
| frequency | string Default: "monthly" Enum: "daily" "weekly" "biweekly" "monthly" "bimonthly" "quarterly" "semiyearly" "yearly" "biyearly" Recurring frequency. Deprecated. Use recurring_period and recurring_frequency instead. |
| recurring_period | string Default: "months" Enum: "days" "weeks" "months" "years" Recurring period. |
| recurring_frequency | integer Default: 1 The number of recurring periods between each document. |
| due_days | string or null <date> The date on which payment for this recurring is due. |
| po_number | string or null Purchase order number. |
| currency | string Three-letter ISO currency code, in uppercase. |
| tag_list | Array of strings or null Multiple tags should be separated by commas. |
| payment_details | string or null Detailed information about the accepted payment methods. |
| notes | string or null Extra notes about the recurring. |
required | contact (object) or object Customer who will be billed. |
| subject | string or null An optional summary description for the document. |
required | Array of objects (document_item) The individual line items that make up the recurring. No more than 200 items are allowed in a request. To add more use subsequent update requests. Maximum items per document are limited up to 1000 items. |
| custom_metadata | object or null Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. |
{- "start_date": "2023-01-27",
- "end_date": "2024-01-27",
- "frequency": "daily",
- "recurring_period": "days",
- "recurring_frequency": 1,
- "due_days": "2020-07-27",
- "po_number": "999",
- "currency": "USD",
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "subject": "string",
- "items": [
- {
- "description": "Ruby Essentials",
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "custom_metadata": { }
}{- "id": 92732431,
- "start_date": "2023-01-27",
- "end_date": "2024-01-27",
- "frequency": "daily",
- "recurring_period": "days",
- "recurring_frequency": 1,
- "due_days": "2020-07-27",
- "po_number": "999",
- "currency": "USD",
- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "contact": {
- "id": 92732431,
- "city": "Pasadena",
- "contact_person": "string",
- "country": "US",
- "created_at": 1648037653,
- "department": "string",
- "discount": 0,
- "first_name": "Leonard",
- "kind": "person",
- "language": "EN",
- "last_name": "Hofstadter",
- "notes": "Some private notes about the contact.",
- "phone_1": "202-555-0104",
- "postal_code": "91104",
- "processor": "stripe",
- "processor_id": "cus_999999999999",
- "region": "CA",
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "tax_id": "string",
- "tax_status": "taxable",
}, - "subject": "string",
- "items": [
- {
- "id": 92732431,
- "description": "Ruby Essentials",
- "subtotal_cents": 9375,
- "discount_cents": 0,
- "discount_rate": 25.5,
- "quantity": 2,
- "product_code": "012345678901-MFN",
- "tax_1_transaction_type": "eservice",
- "tax_1_country": "CA",
- "tax_1_name": "GST",
- "tax_1_rate": 5,
- "tax_1_region": "BC",
- "tax_2_transaction_type": "eservice",
- "tax_2_country": "CA",
- "tax_2_name": "PST",
- "tax_2_rate": 7,
- "tax_2_region": "BC",
- "total_amount": 19.98,
- "unit_price": 9.99
}
], - "taxes": [
- {
- "label": "GST",
- "rate": 5,
- "country": "CA",
- "region": "BC",
- "county": "Los Angeles",
- "transaction_type": "eservice",
- "amount_cents": 1000
}
], - "custom_metadata": { },
- "total_cents": 9375,
- "state": "active",
}Checkout sessions power the Quaderno Checkout hosted payment page. A session holds the line items, customer details, and tax settings for a single checkout flow. When a customer completes checkout, Quaderno creates the corresponding invoice or receipt automatically.
Lists all your Quaderno Checkout sessions, paginated and sorted by creation date (newest first).
| status | string Filters a session based on the session's status. |
[- {
- "id": 92732431,
- "billing_details_collection": "auto",
- "coupon": {
- "id": 92732431,
- "amount_off": 0.1,
- "code": "25_5OFF",
- "created_at": "1593260908",
- "currency": "USD",
- "kind": "amount_off",
- "max_redemptions": 100,
- "name": "Special offer!",
- "percent_off": 25.5,
- "redeem_by": "2020-07-21",
- "times_redeemed": 10
}, - "coupon_collection": false,
- "created_at": "1593260908",
- "custom": "{ stripe: { metadata: { user_id: 999 } }, paypal: { no_shipping: 0 } }",
- "customer": {
- "billing_city": "Pasadena",
- "billing_country": "US",
- "billing_postal_code": "91104",
- "billing_street_line_1": "2311 North Los Robles Av.",
- "billing_street_line_2": "Apartment C",
- "company": "",
- "contact": 0,
- "first_name": "Leonard",
- "last_name": "Hofstadter",
- "tax_id": "string"
}, - "items": [
- {
- "amount": 9.99,
- "currency": "USD",
- "description": "string",
- "name": "Ruby Essentials",
- "product": "012345678901-MFN",
- "quantity": 1
}
], - "locale": "auto",
- "metadata": { },
- "payment_methods": [
- "card"
], - "processor": "stripe",
- "processor_id": "ch_999999999999",
- "status": "pending",
- "updatable_quantity": false
}
]Creates a new Quaderno Checkout session object.
| billing_details_collection | string Default: "required" Enum: "auto" "required" The value for whether Checkout collected the customer’s billing address. |
| cancel_url required | string <uri> The URL the customer will be directed to if they decide to cancel payment and return to your website. |
(object or null) or (object or null) (coupon) | |
| coupon_collection | boolean Default: false The value for whether Checkout collected coupons. |
| custom | object or null Set of key-value pairs that you want to forward to the payment processor. This can be useful for setting up additional options in the payment processor. If you want to send specific data to one processor, you can create a subhash with the name of that particular processor. |
object or null (checkout_customer) The customer’s billing information. | |
required | Array of objects (checkout_item) The list of products being purchased. |
| locale | string Default: "auto" Enum: "auto" "ca" "de" "en" "es" "fi" "fr" "hu" "it" "nb" "nl" "sv" The 2-letter ISO language code of the locale Checkout is displayed in. If |
| metadata | object or null Set of key-value pairs that you can attach to the session. This can be useful for storing additional information about the purchase. |
| payment_methods | Array of strings Default: ["card"] Items Enum: "card" "paypal" Accepted payment methods for this session. |
| permalink | string <uri> The URL of this Checkout Session. |
| processor | string or null The payment processor used to process the charge. |
| processor_id | string or null The ID the |
| status | string Default: "pending" Enum: "pending" "processing" "failed" "completed" "abandoned"
|
| success_url required | string <uri> The URL the customer will be directed to after the payment or subscription creation is successful. |
| updatable_quantity | boolean Default: false The value for whether customers can update items’ quantities. |
{- "billing_details_collection": "auto",
- "coupon": {
- "amount_off": 0.1,
- "code": "25_5OFF",
- "currency": "USD",
- "kind": "amount_off",
- "max_redemptions": 100,
- "name": "Special offer!",
- "percent_off": 25.5,
- "redeem_by": "2020-07-21"
}, - "coupon_collection": false,
- "custom": "{ stripe: { metadata: { user_id: 999 } }, paypal: { no_shipping: 0 } }",
- "customer": {
- "billing_city": "Pasadena",
- "billing_country": "US",
- "billing_postal_code": "91104",
- "billing_street_line_1": "2311 North Los Robles Av.",
- "billing_street_line_2": "Apartment C",
- "company": "",
- "contact": 0,
- "first_name": "Leonard",
- "last_name": "Hofstadter",
- "tax_id": "string"
}, - "items": [
- {
- "amount": 9.99,
- "currency": "USD",
- "description": "string",
- "name": "Ruby Essentials",
- "product": "012345678901-MFN",
- "quantity": 1
}
], - "locale": "auto",
- "metadata": { },
- "payment_methods": [
- "card"
], - "processor": "stripe",
- "processor_id": "ch_999999999999",
- "status": "pending",
- "updatable_quantity": false
}{- "id": 92732431,
- "billing_details_collection": "auto",
- "coupon": {
- "id": 92732431,
- "amount_off": 0.1,
- "code": "25_5OFF",
- "created_at": "1593260908",
- "currency": "USD",
- "kind": "amount_off",
- "max_redemptions": 100,
- "name": "Special offer!",
- "percent_off": 25.5,
- "redeem_by": "2020-07-21",
- "times_redeemed": 10
}, - "coupon_collection": false,
- "created_at": "1593260908",
- "custom": "{ stripe: { metadata: { user_id: 999 } }, paypal: { no_shipping: 0 } }",
- "customer": {
- "billing_city": "Pasadena",
- "billing_country": "US",
- "billing_postal_code": "91104",
- "billing_street_line_1": "2311 North Los Robles Av.",
- "billing_street_line_2": "Apartment C",
- "company": "",
- "contact": 0,
- "first_name": "Leonard",
- "last_name": "Hofstadter",
- "tax_id": "string"
}, - "items": [
- {
- "amount": 9.99,
- "currency": "USD",
- "description": "string",
- "name": "Ruby Essentials",
- "product": "012345678901-MFN",
- "quantity": 1
}
], - "locale": "auto",
- "metadata": { },
- "payment_methods": [
- "card"
], - "processor": "stripe",
- "processor_id": "ch_999999999999",
- "status": "pending",
- "updatable_quantity": false
}Retrieves the details of an existing session.
| id required | string The ID of the desired session. |
{- "id": 92732431,
- "billing_details_collection": "auto",
- "coupon": {
- "id": 92732431,
- "amount_off": 0.1,
- "code": "25_5OFF",
- "created_at": "1593260908",
- "currency": "USD",
- "kind": "amount_off",
- "max_redemptions": 100,
- "name": "Special offer!",
- "percent_off": 25.5,
- "redeem_by": "2020-07-21",
- "times_redeemed": 10
}, - "coupon_collection": false,
- "created_at": "1593260908",
- "custom": "{ stripe: { metadata: { user_id: 999 } }, paypal: { no_shipping: 0 } }",
- "customer": {
- "billing_city": "Pasadena",
- "billing_country": "US",
- "billing_postal_code": "91104",
- "billing_street_line_1": "2311 North Los Robles Av.",
- "billing_street_line_2": "Apartment C",
- "company": "",
- "contact": 0,
- "first_name": "Leonard",
- "last_name": "Hofstadter",
- "tax_id": "string"
}, - "items": [
- {
- "amount": 9.99,
- "currency": "USD",
- "description": "string",
- "name": "Ruby Essentials",
- "product": "012345678901-MFN",
- "quantity": 1
}
], - "locale": "auto",
- "metadata": { },
- "payment_methods": [
- "card"
], - "processor": "stripe",
- "processor_id": "ch_999999999999",
- "status": "pending",
- "updatable_quantity": false
}Updates a session. Any parameters not provided will be left unchanged. Only pending sessions can be updated.
| id required | integer The ID of the session to be updated. |
| billing_details_collection | string Default: "required" Enum: "auto" "required" The value for whether Checkout collected the customer’s billing address. |
| cancel_url required | string <uri> The URL the customer will be directed to if they decide to cancel payment and return to your website. |
(object or null) or (object or null) (coupon) | |
| coupon_collection | boolean Default: false The value for whether Checkout collected coupons. |
| custom | object or null Set of key-value pairs that you want to forward to the payment processor. This can be useful for setting up additional options in the payment processor. If you want to send specific data to one processor, you can create a subhash with the name of that particular processor. |
object or null (checkout_customer) The customer’s billing information. | |
required | Array of objects (checkout_item) The list of products being purchased. |
| locale | string Default: "auto" Enum: "auto" "ca" "de" "en" "es" "fi" "fr" "hu" "it" "nb" "nl" "sv" The 2-letter ISO language code of the locale Checkout is displayed in. If |
| metadata | object or null Set of key-value pairs that you can attach to the session. This can be useful for storing additional information about the purchase. |
| payment_methods | Array of strings Default: ["card"] Items Enum: "card" "paypal" Accepted payment methods for this session. |
| permalink | string <uri> The URL of this Checkout Session. |
| processor | string or null The payment processor used to process the charge. |
| processor_id | string or null The ID the |
| status | string Default: "pending" Enum: "pending" "processing" "failed" "completed" "abandoned"
|
| success_url required | string <uri> The URL the customer will be directed to after the payment or subscription creation is successful. |
| updatable_quantity | boolean Default: false The value for whether customers can update items’ quantities. |
{- "billing_details_collection": "auto",
- "coupon": {
- "amount_off": 0.1,
- "code": "25_5OFF",
- "currency": "USD",
- "kind": "amount_off",
- "max_redemptions": 100,
- "name": "Special offer!",
- "percent_off": 25.5,
- "redeem_by": "2020-07-21"
}, - "coupon_collection": false,
- "custom": "{ stripe: { metadata: { user_id: 999 } }, paypal: { no_shipping: 0 } }",
- "customer": {
- "billing_city": "Pasadena",
- "billing_country": "US",
- "billing_postal_code": "91104",
- "billing_street_line_1": "2311 North Los Robles Av.",
- "billing_street_line_2": "Apartment C",
- "company": "",
- "contact": 0,
- "first_name": "Leonard",
- "last_name": "Hofstadter",
- "tax_id": "string"
}, - "items": [
- {
- "amount": 9.99,
- "currency": "USD",
- "description": "string",
- "name": "Ruby Essentials",
- "product": "012345678901-MFN",
- "quantity": 1
}
], - "locale": "auto",
- "metadata": { },
- "payment_methods": [
- "card"
], - "processor": "stripe",
- "processor_id": "ch_999999999999",
- "status": "pending",
- "updatable_quantity": false
}{- "id": 92732431,
- "billing_details_collection": "auto",
- "coupon": {
- "id": 92732431,
- "amount_off": 0.1,
- "code": "25_5OFF",
- "created_at": "1593260908",
- "currency": "USD",
- "kind": "amount_off",
- "max_redemptions": 100,
- "name": "Special offer!",
- "percent_off": 25.5,
- "redeem_by": "2020-07-21",
- "times_redeemed": 10
}, - "coupon_collection": false,
- "created_at": "1593260908",
- "custom": "{ stripe: { metadata: { user_id: 999 } }, paypal: { no_shipping: 0 } }",
- "customer": {
- "billing_city": "Pasadena",
- "billing_country": "US",
- "billing_postal_code": "91104",
- "billing_street_line_1": "2311 North Los Robles Av.",
- "billing_street_line_2": "Apartment C",
- "company": "",
- "contact": 0,
- "first_name": "Leonard",
- "last_name": "Hofstadter",
- "tax_id": "string"
}, - "items": [
- {
- "amount": 9.99,
- "currency": "USD",
- "description": "string",
- "name": "Ruby Essentials",
- "product": "012345678901-MFN",
- "quantity": 1
}
], - "locale": "auto",
- "metadata": { },
- "payment_methods": [
- "card"
], - "processor": "stripe",
- "processor_id": "ch_999999999999",
- "status": "pending",
- "updatable_quantity": false
}Coupons apply discounts to Quaderno Checkout sessions. Each coupon has a code and a discount amount or percentage that is applied to the checkout total before tax is calculated.
Lists all coupons, sorted by creation date (newest first).
[- {
- "id": 92732431,
- "amount_off": 0.1,
- "code": "25_5OFF",
- "created_at": "1593260908",
- "currency": "USD",
- "kind": "amount_off",
- "max_redemptions": 100,
- "name": "Special offer!",
- "percent_off": 25.5,
- "redeem_by": "2020-07-21",
- "times_redeemed": 10
}
]Creates a new coupon, which represents a discount.
| amount_off required | number or null <float> Amount (in the |
| code required | string Coupon code |
| currency required | string or null If |
| kind | string Default: "percent_off" Enum: "amount_off" "percent_off" The type of coupon: amount or percentage off. |
| max_redemptions | integer or null Maximum number of times this coupon can be redeemed, in total, across all customers, before it is no longer valid. |
| name | string or null Name of the coupon displayed to customers on invoices. |
| percent_off | number or null <float> Percent that will be taken off the subtotal of the purchase. For example, a coupon with |
| redeem_by | string or null <date> Date after which the coupon can no longer be redeemed. |
{- "amount_off": 0.1,
- "code": "25_5OFF",
- "currency": "USD",
- "kind": "amount_off",
- "max_redemptions": 100,
- "name": "Special offer!",
- "percent_off": 25.5,
- "redeem_by": "2020-07-21"
}{- "id": 92732431,
- "amount_off": 0.1,
- "code": "25_5OFF",
- "created_at": "1593260908",
- "currency": "USD",
- "kind": "amount_off",
- "max_redemptions": 100,
- "name": "Special offer!",
- "percent_off": 25.5,
- "redeem_by": "2020-07-21",
- "times_redeemed": 10
}Retrieves the details of an existing coupon.
| id required | string The ID of the desired coupon. |
{- "id": 92732431,
- "amount_off": 0.1,
- "code": "25_5OFF",
- "created_at": "1593260908",
- "currency": "USD",
- "kind": "amount_off",
- "max_redemptions": 100,
- "name": "Special offer!",
- "percent_off": 25.5,
- "redeem_by": "2020-07-21",
- "times_redeemed": 10
}Updates a coupon. Any parameters not provided will be left unchanged.
| id required | integer The ID of the coupon to be updated. |
| amount_off required | number or null <float> Amount (in the |
| code required | string Coupon code |
| currency required | string or null If |
| kind | string Default: "percent_off" Enum: "amount_off" "percent_off" The type of coupon: amount or percentage off. |
| max_redemptions | integer or null Maximum number of times this coupon can be redeemed, in total, across all customers, before it is no longer valid. |
| name | string or null Name of the coupon displayed to customers on invoices. |
| percent_off | number or null <float> Percent that will be taken off the subtotal of the purchase. For example, a coupon with |
| redeem_by | string or null <date> Date after which the coupon can no longer be redeemed. |
{- "amount_off": 0.1,
- "code": "25_5OFF",
- "currency": "USD",
- "kind": "amount_off",
- "max_redemptions": 100,
- "name": "Special offer!",
- "percent_off": 25.5,
- "redeem_by": "2020-07-21"
}{- "id": 92732431,
- "amount_off": 0.1,
- "code": "25_5OFF",
- "created_at": "1593260908",
- "currency": "USD",
- "kind": "amount_off",
- "max_redemptions": 100,
- "name": "Special offer!",
- "percent_off": 25.5,
- "redeem_by": "2020-07-21",
- "times_redeemed": 10
}Quaderno Connect accounts are sub-accounts that belong to your platform. Each account has its own invoices, contacts, and tax settings. Use this API to create and manage accounts on behalf of your users.
Retrieves the details of an existing Quaderno Connect custom account.
| id required | integer Example: 41 The ID of the custom account to retrieve. |
{- "id": 0,
- "business_name": "string",
- "created_at": 0,
- "currency": "string",
- "default_product_type": "good",
- "default_tax_code": "eservice",
- "email": "string",
- "state": "string",
- "subdomain": "string",
- "web": "string",
- "registration_number": "string",
- "authentication": {
- "access_token": "bDFVtZRvVK9vg_H9RJFD7Oq6Oi_NMzDMiw_xxx",
- "token_type": "Bearer"
}
}Updates the details of an existing Quaderno Connect custom account.
| id required | integer The ID of the custom account to update. |
| business_name | string Legal or trade name of the business. |
| default_product_type | string or null Enum: "good" "service" Fallback product type for documents and tax calculations. Defaults to "service". |
| default_tax_code | string or null Enum: "eservice" "ebook" "saas" "consulting" "standard" "reduced" "retention" Fallback tax code for items and tax calculations. Defaults to "eservice". |
string Primary contact email for account notifications. | |
| web | string Business website URL. |
| registration_number | string Official government-issued number that identifies the business entity (e.g., EIN in the US, SIREN in France, W-IdNr. in Germany, ABN in Australia). |
{- "business_name": "string",
- "default_product_type": "good",
- "default_tax_code": "eservice",
- "email": "string",
- "web": "string",
- "registration_number": "string"
}{- "id": 0,
- "business_name": "string",
- "created_at": 0,
- "currency": "string",
- "default_product_type": "good",
- "default_tax_code": "eservice",
- "email": "string",
- "state": "string",
- "subdomain": "string",
- "web": "string",
- "registration_number": "string",
- "authentication": {
- "access_token": "bDFVtZRvVK9vg_H9RJFD7Oq6Oi_NMzDMiw_xxx",
- "token_type": "Bearer"
}
}Creates a new Quaderno Connect custom account.
| business_name required | string Legal or trade name of the business. |
| country required | string Two-letter ISO 3166-1 alpha-2 country code. Cannot be changed after creation. |
| currency | string or null Three-letter ISO 4217 currency code. Defaults to the country's official currency. |
| default_product_type | string or null Enum: "good" "service" Fallback product type for documents and tax calculations. Defaults to "service". |
| default_tax_code | string or null Enum: "eservice" "ebook" "saas" "consulting" "standard" "reduced" "retention" Fallback tax code for items and tax calculations. Defaults to "eservice". |
| email required | string Primary contact email for account notifications. |
| local_tax_id | string or null Tax ID that registers the account for tax collection in the country. Cannot be changed after creation. |
| postal_code | string or null ZIP or postal code of the business location. Cannot be changed after creation. |
| web | string or null Business website URL. |
| registration_number | string or null Official government-issued number that identifies the business entity (e.g., EIN in the US, SIREN in France, W-IdNr. in Germany, ABN in Australia). |
{- "business_name": "string",
- "country": "string",
- "currency": "string",
- "default_product_type": "good",
- "default_tax_code": "eservice",
- "email": "string",
- "local_tax_id": "string",
- "postal_code": "string",
- "web": "string",
- "registration_number": "string"
}{- "id": 0,
- "business_name": "string",
- "created_at": 0,
- "currency": "string",
- "default_product_type": "good",
- "default_tax_code": "eservice",
- "email": "string",
- "state": "string",
- "subdomain": "string",
- "web": "string",
- "registration_number": "string",
- "authentication": {
- "access_token": "bDFVtZRvVK9vg_H9RJFD7Oq6Oi_NMzDMiw_xxx",
- "token_type": "Bearer"
}
}Retrieves a list of all Quaderno Connect accounts.
[- {
- "id": 0,
- "business_name": "string",
- "created_at": 0,
- "currency": "string",
- "default_product_type": "good",
- "default_tax_code": "eservice",
- "email": "string",
- "state": "string",
- "subdomain": "string",
- "web": "string",
- "registration_number": "string",
- "authentication": {
- "access_token": "bDFVtZRvVK9vg_H9RJFD7Oq6Oi_NMzDMiw_xxx",
- "token_type": "Bearer"
}
}
]Addresses store the location history of a Quaderno Connect account. Each address has a validity period, allowing Quaderno to apply the correct tax rules based on where the business was located at any given point in time.
Lists all addresses from a Quaderno Connect custom account, paginated and sorted by creation date (newest first).
[- {
- "id": 16,
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "city": "Pasadena",
- "region": "CA",
- "postal_code": "91104",
- "country": "US",
- "valid_from": "2023-07-01",
- "valid_until": "2024-02-03"
}
]Creates a new address to be used on a Quaderno Connect custom account.
| street_line_1 | string or null Primary street address, including street number and name or PO Box. |
| street_line_2 | string or null Secondary address line for apartment, suite, unit, or building details. |
| city | string or null City, district, suburb, town, or village name. |
| region | string or null State, province, or region code. |
| postal_code | string or null ZIP or postal code. |
| country | string or null Two-letter ISO 3166-1 alpha-2 country code. Defaults to the account's original country. WARNING: Changing the country is not recommended, especially if the new country uses a different official currency than the account currency. This may lead to tax calculation errors, reporting inconsistencies, and compliance issues. If you need to operate in a different country with a different currency, consider creating a new account instead. |
| valid_from | string <date> Date when this address becomes effective (ISO 8601 format: YYYY-MM-DD). Defaults to the current date. |
| valid_until | string or null <date> Date when this address expires, if applicable (ISO 8601 format: YYYY-MM-DD). Leave empty for addresses with no end date. |
{- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "city": "Pasadena",
- "region": "CA",
- "postal_code": "91104",
- "country": "US",
- "valid_from": "2023-07-01",
- "valid_until": "2024-02-03"
}{- "id": 16,
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "city": "Pasadena",
- "region": "CA",
- "postal_code": "91104",
- "country": "US",
- "valid_from": "2023-07-01",
- "valid_until": "2024-02-03"
}Retrieves the details of an existing address.
| id required | string ID of the desired address. |
{- "id": 16,
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "city": "Pasadena",
- "region": "CA",
- "postal_code": "91104",
- "country": "US",
- "valid_from": "2023-07-01",
- "valid_until": "2024-02-03"
}Updates a address. Any parameters not provided will be left unchanged.
| id required | integer ID of the address to be updated. |
| street_line_1 | string or null Primary street address, including street number and name or PO Box. |
| street_line_2 | string or null Secondary address line for apartment, suite, unit, or building details. |
| city | string or null City, district, suburb, town, or village name. |
| region | string or null State, province, or region code. |
| postal_code | string or null ZIP or postal code. |
| country | string or null Two-letter ISO 3166-1 alpha-2 country code. Defaults to the account's original country. WARNING: Changing the country is not recommended, especially if the new country uses a different official currency than the account currency. This may lead to tax calculation errors, reporting inconsistencies, and compliance issues. If you need to operate in a different country with a different currency, consider creating a new account instead. |
| valid_from | string <date> Date when this address becomes effective (ISO 8601 format: YYYY-MM-DD). Defaults to the current date. |
| valid_until | string or null <date> Date when this address expires, if applicable (ISO 8601 format: YYYY-MM-DD). Leave empty for addresses with no end date. |
{- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "city": "Pasadena",
- "region": "CA",
- "postal_code": "91104",
- "country": "US",
- "valid_from": "2023-07-01",
- "valid_until": "2024-02-03"
}{- "id": 16,
- "street_line_1": "2311 North Los Robles Av.",
- "street_line_2": "Apartment C",
- "city": "Pasadena",
- "region": "CA",
- "postal_code": "91104",
- "country": "US",
- "valid_from": "2023-07-01",
- "valid_until": "2024-02-03"
}Reporting requests generate downloadable tax and billing reports asynchronously. Submit a request, then poll or wait for the report URL to become available once processing is complete.
Retrieves the list of reporting requests.
[- {
- "id": 0,
- "report_type": "tax_summary",
- "report_url": null,
- "state": "succeeded",
- "parameters": {
- "from_date": "2022-10-10",
- "to_date": "2022-11-11"
}, - "completed_at": 1632985500,
- "created_at": 1632985500
}
]Creates a new reporting request. The report file will be ready some minutes after creating a new request.
| report_type | string Enum: "tax_summary" "invoices_list" "credits_list" The type of report. |
object Parameters specifying report details. |
{- "report_type": "tax_summary",
- "parameters": {
- "from_date": "2022-10-10",
- "to_date": "2022-11-11"
}
}{- "id": 0,
- "report_type": "tax_summary",
- "report_url": null,
- "state": "pending",
- "parameters": {
- "from_date": "2022-10-10",
- "to_date": "2022-11-11"
}, - "completed_at": 1632985500,
- "created_at": 1632985500
}Retrieves updated info from the reporting request.
| id required | integer Example: 41 The ID of the reporting request to retrieve. |
{- "id": 0,
- "report_type": "tax_summary",
- "report_url": null,
- "state": "pending",
- "parameters": {
- "from_date": "2022-10-10",
- "to_date": "2022-11-11"
}, - "completed_at": 1632985500,
- "created_at": 1632985500
}Webhooks notify your server in real time when events happen in a Quaderno account — such as an invoice being created, a payment being recorded, or a tax transaction being processed. Each webhook delivers a signed payload to a URL you control.
Lists all webhooks, sorted by creation date (newest first).
[- {
- "id": 92732431,
- "auth_key": "zXQgArTtQxAMaYppMrDoUQ",
- "created_at": "2023-01-24T10:59:15.000Z",
- "events_sent": 0,
- "events_types": [
- "invoice.created",
- "credit.created"
], - "last_error": "Response code 503 returned.",
- "last_error_at": "2023-01-24T10:59:15.000Z",
- "last_sent_at": "2023-01-24T10:59:15.000Z",
}
]Creates a new webhook object. The url provided needs to respond with 200 OK to HEAD requests in order to validate the callback endpoint.
| events_types required | Array of strings The list of events to enable for this endpoint. |
| url required | string <uri> The URL of the webhook endpoint. |
{- "events_types": [
- "invoice.created",
- "credit.created"
],
}{- "id": 92732431,
- "auth_key": "zXQgArTtQxAMaYppMrDoUQ",
- "created_at": "2023-01-24T10:59:15.000Z",
- "events_sent": 0,
- "events_types": [
- "invoice.created",
- "credit.created"
], - "last_error": "Response code 503 returned.",
- "last_error_at": "2023-01-24T10:59:15.000Z",
- "last_sent_at": "2023-01-24T10:59:15.000Z",
}Retrieves the details of an existing webhook.
| id required | string The ID of the desired webhook. |
{- "id": 92732431,
- "auth_key": "zXQgArTtQxAMaYppMrDoUQ",
- "created_at": "2023-01-24T10:59:15.000Z",
- "events_sent": 0,
- "events_types": [
- "invoice.created",
- "credit.created"
], - "last_error": "Response code 503 returned.",
- "last_error_at": "2023-01-24T10:59:15.000Z",
- "last_sent_at": "2023-01-24T10:59:15.000Z",
}Updates the specified webhook.
| id required | integer The ID of the webhook to be updated. |
| events_types required | Array of strings The list of events to enable for this endpoint. |
| url required | string <uri> The URL of the webhook endpoint. |
{- "events_types": [
- "invoice.created",
- "credit.created"
],
}{- "id": 92732431,
- "auth_key": "zXQgArTtQxAMaYppMrDoUQ",
- "created_at": "2023-01-24T10:59:15.000Z",
- "events_sent": 0,
- "events_types": [
- "invoice.created",
- "credit.created"
], - "last_error": "Response code 503 returned.",
- "last_error_at": "2023-01-24T10:59:15.000Z",
- "last_sent_at": "2023-01-24T10:59:15.000Z",
}