Quaderno API (20241028)
Download OpenAPI specification:Download
Quaderno helps you scale your business without stressing about taxes. Our powerful REST API solves all your tax compliance needs:
- Accurate tax calculation on every sale, worldwide.
- Billing with automatic invoices and credit notes.
- Alerts for new tax obligations and registrations.
- Tax reports by country or state.
- Quaderno Checkout, if you don't have your own checkout.
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:
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:trueif 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:
- Adding new API resources.
- Adding new optional request parameters to existing methods.
- Adding new properties to existing API responses.
- Changing the order of properties in existing API responses.
- Changing the length or format of opaque strings (object IDs, error messages, etc.).
- Adding new webhook event types.
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'
Version sunsetting and backported changes
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.
Stay informed
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.
Safely upgrading to API version 20220325
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.
Safely upgrading to API version 20210701
From 1 July 2021, invoices and credit notes become final (non-editable) when any of the following occur:
- The document has been sent to the customer.
- The document has been paid.
- The document has been manually marked as final in the dashboard.
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_IDreturns410 Gone.PUT /invoices/INVOICE_IDonly 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.
Safely upgrading to API version 20210316
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.
Create a transaction
Creates a new sale or refund transaction.
Authorizations:
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 201
{- "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.
List contacts
Lists contacts, paginated and sorted by creation date (newest first).
Authorizations:
query Parameters
| 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 |
Responses
Response samples
- 200
[- {
- "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",
}
]Create a contact
Creates a new contact, representing a customer or vendor who appears on invoices, credit notes, and expenses.
Authorizations:
Request Body schema: application/json
| 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 |
Responses
Request samples
- Payload
{- "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",
}Response samples
- 201
{- "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",
}Retrieve a contact
Retrieves the details of an existing contact.
Authorizations:
path Parameters
| id required | string ID of the desired contact. |
Responses
Response samples
- 200
{- "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",
}Update a contact
Updates a contact. Any parameters not provided will be left unchanged.
Authorizations:
path Parameters
| id required | integer ID of the contact to be updated. |
Request Body schema: application/json
| 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 |
Responses
Request samples
- Payload
{- "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",
}Response samples
- 200
{- "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.
List products
Lists all products, paginated and sorted by creation date (newest first).
Authorizations:
query Parameters
| q | string Filters a product list based on the product's name or code. Case-sensitive. |
Responses
Response samples
- 200
[- {
- "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"
}
]Create a product
Creates a new product, which could be used as line item on invoices, credit notes and expenses.
Authorizations:
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 201
{- "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"
}Retrieve a product
Retrieves the details of an existing product.
Authorizations:
path Parameters
| id required | string ID of the desired product. |
Responses
Response samples
- 200
{- "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"
}Update a product
Updates a product. Any parameters not provided will be left unchanged.
Authorizations:
path Parameters
| id required | integer ID of the product to be updated. |
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 200
{- "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.
Calculate a tax rate
Calculates the applicable tax rate for a given address and transaction type.
Authorizations:
query Parameters
| 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. |
Responses
Response samples
- 200
{- "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.
Validate a tax id
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).
Authorizations:
query Parameters
| 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. |
Responses
Response samples
- 200
{- "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.
Retrieve a jurisdiction
Retrieves a tax jurisdiction (area subject to its own tax regulations).
Authorizations:
path Parameters
| id required | string ID of the desired jurisdiction. |
Responses
Response samples
- 200
{- "id": 94,
- "name": "Canada - British Columbia",
- "country": "CA",
- "region": "BC"
}List all jurisdiction
Retrieves the list of all tax jurisdictions (areas subject to its own tax regulations).
Authorizations:
query Parameters
| 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 |
Responses
Response samples
- 200
[- {
- "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.
Response samples
- 200
[- {
- "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
}
]Create a tax ID
Registers a new tax ID representing a business and associates it to a specific tax jurisdiction.
Authorizations:
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "jurisdiction_id": 94,
- "value": "123456789BW0001",
- "valid_from": "2023-01-01",
- "valid_until": "",
- "permanent_establishment": true,
- "import_scheme": true
}Response samples
- 201
{- "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
}Retrieve a tax ID
Retrieves the details of an existing tax ID.
Authorizations:
path Parameters
| id required | integer ID of the desired tax ID. |
Responses
Response samples
- 200
{- "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
}Update a tax ID
Updates a tax ID. Any parameters not provided will be left unchanged.
Authorizations:
path Parameters
| id required | any ID of the tax ID to be updated. |
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "value": "123456789BW0001",
- "valid_from": "2023-01-01",
- "valid_until": "2024-12-31",
- "permanent_establishment": true,
- "import_scheme": true
}Response samples
- 200
{- "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.
Retrieve a tax code
Retrieves a tax code, which classify goods and services for tax purposes.
Authorizations:
path Parameters
| id required | string Enum: "consulting" "ebook" "eservice" "exempt" "reduced" "saas" "standard" Example: eservice The ID of the tax code to retrieve. |
Responses
Response samples
- 200
{- "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"
}List all tax codes
Retrieves the list of supported tax codes.
Authorizations:
Responses
Response samples
- 200
[- {
- "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.
List all evidence objects
Retrieves the list of evidence objects, paginated and sorted by creation date (newest first).
Authorizations:
query Parameters
| 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. |
Responses
Response samples
- 200
[- {
- "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",
}
]Create an evidence
Creates a new evidence.
Authorizations:
Request Body schema: application/json
| 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 |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 201
{- "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",
}Retrieve an evidence
Retrieves updated info from the evidence.
Authorizations:
path Parameters
| id required | string Example: 41 The ID of the evidence to retrieve. |
Responses
Response samples
- 200
{- "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",
}Update an evidence
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.
Authorizations:
path Parameters
| id required | integer The ID of the evidence to be updated. |
Request Body schema: application/json
| 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 |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 200
{- "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.
List all invoices
Lists all invoices, paginated and sorted by creation date (newest first).
Authorizations:
query Parameters
| 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. |
Responses
Response samples
- 200
[- {
- "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."
}
],
}
]Create an invoice
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.
Authorizations:
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 201
{- "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."
}
],
}Retrieve an invoice
Retrieves the details of an existing invoice. You need only supply the unique invoice identifier that was returned upon invoice creation.
Authorizations:
path Parameters
| id required | string The ID of the desired invoice. |
Responses
Response samples
- 200
{- "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."
}
],
}Update an invoice
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.
Authorizations:
path Parameters
| id required | integer The ID of the invoice to be updated. |
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "custom_metadata": {
- "key": "value"
}, - "attachment": {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}
}Response samples
- 200
{- "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."
}
],
}Mark an invoice as uncollectible
Marks an invoice as uncollectible. This is useful for tracking invoices that you have determined will not be paid.
Authorizations:
path Parameters
| id required | string The ID of the desired invoice. |
Responses
Response samples
- 200
{- "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."
}
],
}Void an invoice
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.
Authorizations:
path Parameters
| id required | string The ID of the invoice to void. |
Request Body schema: application/json
| void_reason required | string |
Responses
Request samples
- Payload
{- "void_reason": "string"
}Response samples
- 200
{- "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."
}
],
}Record a payment
Records a payment against an invoice. When the total payments reach the invoice amount, the invoice is automatically marked as paid.
Authorizations:
path Parameters
| id required | string The ID of the invoice. |
Request Body schema: application/json
| 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 |
Responses
Request samples
- Payload
{- "amount": 56.6,
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999"
}Response samples
- 201
{- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}Deliver an invoice
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.
Authorizations:
path Parameters
| id required | string The ID of the desired invoice. |
Responses
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.
List all receipts
Lists all receipts, paginated and sorted by creation date (newest first). All receipts are paid by definition.
Authorizations:
query Parameters
| 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. |
Responses
Response samples
- 200
[- {
- "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."
}
],
}
]Create a receipt
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.
Authorizations:
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 201
{- "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."
}
],
}Retrieve an receipt
Retrieves the details of an existing receipt.
Authorizations:
path Parameters
| id required | string The ID of the desired receipt. |
Responses
Response samples
- 200
{- "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."
}
],
}Void a receipt
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.
Authorizations:
path Parameters
| id required | string The ID of the receipt to void. |
Request Body schema: application/json
| void_reason required | string |
Responses
Request samples
- Payload
{- "void_reason": "string"
}Response samples
- 200
{- "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."
}
],
}Deliver an receipt
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.
Authorizations:
path Parameters
| id required | string The ID of the desired receipt. |
Responses
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.
List all credit notes
Lists all credit notes, paginated and sorted by creation date (newest first). Credit notes are used to cancel or partially refund an invoice.
Authorizations:
query Parameters
| 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 |
Responses
Response samples
- 200
[- {
- "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",
}
]Create a credit note
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.
Authorizations:
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "invoice_id": 139331
}Response samples
- 201
{- "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",
}Retrieve a credit note
Retrieves the details of an existing credit note. You need only supply the unique identifier returned upon creation.
Authorizations:
path Parameters
| id required | string The ID of the desired credit. |
Responses
Response samples
- 200
{- "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",
}Update a credit note
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.
Authorizations:
path Parameters
| id required | integer The ID of the credit to be updated. |
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "tag_list": "consulting, premium",
- "payment_details": "string",
- "notes": "string",
- "custom_metadata": {
- "key": "value"
}, - "attachment": {
- "data": "string",
- "filename": "ticket.jpeg",
- "public": true
}
}Response samples
- 200
{- "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",
}Record a payment
Records a payment against a credit note. When the total payments reach the credit note amount, it is automatically marked as paid.
Authorizations:
path Parameters
| id required | string The ID of the credit note. |
Request Body schema: application/json
| 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 |
Responses
Request samples
- Payload
{- "amount": 56.6,
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999"
}Response samples
- 201
{- "id": 92732431,
- "amount": 56.6,
- "created_at": "1593260908",
- "date": "2020-06-27",
- "payment_method": "credit_card",
- "processor": "stripe",
- "processor_id": "ch_999999999999",
}Void a credit note
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.
Authorizations:
path Parameters
| id required | integer The ID of the credit to be voided. |
Request Body schema: application/json
| void_reason required | string |
Responses
Request samples
- Payload
{- "void_reason": "string"
}Response samples
- 200
{- "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",
}Deliver a credit
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.
Authorizations:
path Parameters
| id required | string The ID of the desired credit. |
Responses
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.
List all proformas
Lists all proformas, paginated and sorted by creation date (newest first).
Authorizations:
query Parameters
| 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. |
Responses
Response samples
- 200
[- {
- "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"
}
]Create a proforma
Creates a new proforma object.
Authorizations:
Request Body schema: application/json
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. |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 201
{- "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"
}Retrieve a proforma
Retrieves the details of an existing proforma.
Authorizations:
path Parameters
| id required | string The ID of the desired proforma. |
Responses
Response samples
- 200
{- "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"
}Update a proforma
Updates an existing proforma. Accepted and invoiced proformas cannot be modified.
Authorizations:
path Parameters
| id required | integer The ID of the proforma to be updated. |
Request Body schema: application/json
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. |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 200
{- "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"
}Accept a proforma
Marks a proforma as accepted by the customer. Only proformas in "outstanding" or "late" state can be accepted.
Authorizations:
path Parameters
| id required | string The ID of the proforma to accept. |
Responses
Response samples
- 200
{- "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"
}Decline a proforma
Marks a proforma as declined by the customer. Only proformas in "outstanding" or "late" state can be declined.
Authorizations:
path Parameters
| id required | string The ID of the proforma to decline. |
Responses
Response samples
- 200
{- "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"
}Revert a proforma
Reverts a proforma back to "outstanding" from "accepted" or "declined". Invoiced proformas cannot be reverted.
Authorizations:
path Parameters
| id required | string The ID of the proforma to revert. |
Responses
Response samples
- 200
{- "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"
}Convert a proforma into an invoice
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.
Authorizations:
path Parameters
| id required | string The ID of the proforma to convert. |
Responses
Response samples
- 201
{- "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.
List all expenses
Lists all expenses, paginated and sorted by creation date (newest first).
Authorizations:
query Parameters
| 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. |
Responses
Response samples
- 200
[- {
- "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",
}
]Create an expense
Creates a new expense.
Authorizations:
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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": { }
}Response samples
- 201
{- "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",
}Retrieve an expense
Retrieves the details of an existing expense.
Authorizations:
path Parameters
| id required | string The ID of the desired expense. |
Responses
Response samples
- 200
{- "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",
}Update an expense
Updates an expense.
Authorizations:
path Parameters
| id required | integer The ID of the expense to be updated. |
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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": { }
}Response samples
- 200
{- "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.
List all recurring
Lists all recurring, paginated and sorted by creation date (newest first).
Authorizations:
query Parameters
| 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. |
Responses
Response samples
- 200
[- {
- "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",
}
]Create a recurring
Creates a new recurring.
Authorizations:
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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": { }
}Response samples
- 201
{- "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",
}Retrieve a recurring
Retrieves the details of an existing recurring.
Authorizations:
path Parameters
| id required | string The ID of the desired recurring. |
Responses
Response samples
- 200
{- "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",
}Update a recurring
Updates a recurring.
Authorizations:
path Parameters
| id required | integer The ID of the recurring to be updated. |
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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": { }
}Response samples
- 200
{- "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.
List all sessions
Lists all your Quaderno Checkout sessions, paginated and sorted by creation date (newest first).
Authorizations:
query Parameters
| status | string Filters a session based on the session's status. |
Responses
Response samples
- 200
[- {
- "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
}
]Create a session
Creates a new Quaderno Checkout session object.
Authorizations:
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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
}Response samples
- 201
{- "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
}Retrieve a session
Retrieves the details of an existing session.
Authorizations:
path Parameters
| id required | string The ID of the desired session. |
Responses
Response samples
- 200
{- "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
}Update a session
Updates a session. Any parameters not provided will be left unchanged. Only pending sessions can be updated.
Authorizations:
path Parameters
| id required | integer The ID of the session to be updated. |
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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
}Response samples
- 200
{- "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.
List all coupons
Lists all coupons, sorted by creation date (newest first).
Authorizations:
Responses
Response samples
- 200
[- {
- "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
}
]Create a coupon
Creates a new coupon, which represents a discount.
Authorizations:
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 201
{- "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
}Retrieve a coupon
Retrieves the details of an existing coupon.
Authorizations:
path Parameters
| id required | string The ID of the desired coupon. |
Responses
Response samples
- 200
{- "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
}Update a coupon
Updates a coupon. Any parameters not provided will be left unchanged.
Authorizations:
path Parameters
| id required | integer The ID of the coupon to be updated. |
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 200
{- "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.
Retrieve a custom account
Retrieves the details of an existing Quaderno Connect custom account.
Authorizations:
path Parameters
| id required | integer Example: 41 The ID of the custom account to retrieve. |
Responses
Response samples
- 200
{- "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"
}
}Update a custom account
Updates the details of an existing Quaderno Connect custom account.
Authorizations:
path Parameters
| id required | integer The ID of the custom account to update. |
Request Body schema: application/jsonrequired
| 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). |
Responses
Request samples
- Payload
{- "business_name": "string",
- "default_product_type": "good",
- "default_tax_code": "eservice",
- "email": "string",
- "web": "string",
- "registration_number": "string"
}Response samples
- 200
{- "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"
}
}Create a custom account
Creates a new Quaderno Connect custom account.
Authorizations:
Request Body schema: application/jsonrequired
| 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). |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 201
{- "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"
}
}List all accounts
Retrieves a list of all Quaderno Connect accounts.
Authorizations:
Responses
Response samples
- 200
[- {
- "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.
List addresses
Lists all addresses from a Quaderno Connect custom account, paginated and sorted by creation date (newest first).
Authorizations:
Responses
Response samples
- 200
[- {
- "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"
}
]Create an address
Creates a new address to be used on a Quaderno Connect custom account.
Authorizations:
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 201
{- "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"
}Retrieve an address
Retrieves the details of an existing address.
Authorizations:
path Parameters
| id required | string ID of the desired address. |
Responses
Response samples
- 200
{- "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"
}Update an address
Updates a address. Any parameters not provided will be left unchanged.
Authorizations:
path Parameters
| id required | integer ID of the address to be updated. |
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "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"
}Response samples
- 200
{- "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.
List all reporting requests
Retrieves the list of reporting requests.
Authorizations:
Responses
Response samples
- 200
[- {
- "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
}
]Requests a report
Creates a new reporting request. The report file will be ready some minutes after creating a new request.
Authorizations:
Request Body schema: application/json
| report_type | string Enum: "tax_summary" "invoices_list" "credits_list" The type of report. |
object Parameters specifying report details. |
Responses
Request samples
- Payload
{- "report_type": "tax_summary",
- "parameters": {
- "from_date": "2022-10-10",
- "to_date": "2022-11-11"
}
}Response samples
- 201
{- "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
}Retrieve a reporting request
Retrieves updated info from the reporting request.
Authorizations:
path Parameters
| id required | integer Example: 41 The ID of the reporting request to retrieve. |
Responses
Response samples
- 200
{- "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.
List all webhooks
Lists all webhooks, sorted by creation date (newest first).
Authorizations:
Responses
Response samples
- 200
[- {
- "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",
}
]Create a webhook
Creates a new webhook object. The url provided needs to respond with 200 OK to HEAD requests in order to validate the callback endpoint.
Authorizations:
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "events_types": [
- "invoice.created",
- "credit.created"
],
}Response samples
- 201
{- "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",
}Retrieve a webhook
Retrieves the details of an existing webhook.
Authorizations:
path Parameters
| id required | string The ID of the desired webhook. |
Responses
Response samples
- 200
{- "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",
}Update a webhook
Updates the specified webhook.
Authorizations:
path Parameters
| id required | integer The ID of the webhook to be updated. |
Request Body schema: application/json
| 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. |
Responses
Request samples
- Payload
{- "events_types": [
- "invoice.created",
- "credit.created"
],
}Response samples
- 200
{- "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",
}