Quaderno

Quaderno is a tax compliance, invoicing, and sales-tax / VAT automation platform. Its REST API calculates the correct sales tax, VAT, and GST in real time for any jurisdiction, then issues tax-compliant invoices, credit notes, estimates, and receipts. The account-scoped API (https://ACCOUNT_NAME.quadernoapp.com/api) covers contacts, items, invoices, credits, estimates, expenses, recurring documents, payments, unified sales transactions, hosted Checkout sessions, and webhooks, plus a tax engine for rate calculation, jurisdictions, tax codes, and tax ID validation. Requests use HTTP Basic Auth with a private API key and return JSON; every endpoint path ends in .json.

11 APIs 0 Features
Tax ComplianceSales TaxVATInvoicingBillingFinTech

APIs

Quaderno Invoices API

Create, list, retrieve, update, delete, and deliver tax-compliant sales invoices, each with line items, taxes, discounts, currency, and a public permalink. Invoices carry nested...

Quaderno Credits API

Issue and manage credit notes against invoices - create, list, retrieve, update, and delete credits with their own line items, taxes, and totals for refunds and corrections.

Quaderno Estimates API

Create, list, retrieve, update, and delete estimates and quotes issued to customers, with line items, taxes, and state tracking - convertible into invoices once accepted.

Quaderno Expenses API

Record and manage vendor bills and purchases - create, list, retrieve, update, and delete expenses with line items, taxes, and payment methods for input-tax tracking and reporting.

Quaderno Contacts API

Manage customers and vendors - create, list, search, retrieve, update, and delete contacts (companies or people) with billing address, country, email, and tax ID used for tax de...

Quaderno Items API

Maintain the catalog of reusable products and services - create, list, retrieve, update, and delete items with unit cost, code, stock, and a tax code that drives taxability on d...

Quaderno Taxes API

The tax engine - calculate the correct sales tax, VAT, or GST rate in real time (tax_rates/calculate) with a reasoning status of taxable, non_taxable, or not_registered; list th...

Quaderno Payments API

Record and remove payments against invoices, credits, and expenses - add a payment with amount, method, and date to mark a document paid, or delete a payment to reverse it.

Quaderno Transactions API

Record a sale and calculate its tax in a single call - the transactions endpoint determines tax from customer location evidence and item tax codes and creates the corresponding ...

Quaderno Checkout API

Create and retrieve hosted Checkout sessions that collect tax-compliant payments - rendered client-side with Quaderno.js or as a hosted page - and surface checkout.succeeded, ch...

Quaderno Webhooks API

Subscribe URLs to real-time event notifications delivered as JSON over HTTPS - create, list, retrieve, update, and delete webhooks for document and checkout events, with automat...

Collections

Pricing Plans

Quaderno Plans Pricing

5 plans

PLANS

Rate Limits

Quaderno Rate Limits

3 limits

RATE LIMITS

FinOps

Resources

🔗
DomainSecurity
DomainSecurity
🔑
Authentication
Authentication
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Quaderno API
  version: '1.0'
request:
  auth:
    type: basic
    username: '{{apiKey}}'
    password: x
items:
- info:
    name: Authentication
    type: folder
  items:
  - info:
      name: Ping the API.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/ping.json
    docs: Tests availability, validates the API key, and returns remaining allowance without consuming rate limit.
  - info:
      name: Get authorization details.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/authorization.json
    docs: Returns the identity and account-scoped API URL for the authenticated key.
- info:
    name: Contacts
    type: folder
  items:
  - info:
      name: List contacts.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/contacts.json
    docs: Lists contacts (customers and vendors) with optional search and pagination.
  - info:
      name: Create a contact.
      type: http
    http:
      method: POST
      url: https://ACCOUNT_NAME.quadernoapp.com/api/contacts.json
      body:
        type: json
        data: '{"kind":"company","contact_name":"Acme Inc","country":"US","email":"billing@acme.example"}'
    docs: Creates a new contact.
  - info:
      name: Retrieve a contact.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/contacts/:id.json
      params:
      - name: id
        value: ''
        type: path
        description: The contact ID.
    docs: Retrieves a contact by ID.
  - info:
      name: Update a contact.
      type: http
    http:
      method: PUT
      url: https://ACCOUNT_NAME.quadernoapp.com/api/contacts/:id.json
      params:
      - name: id
        value: ''
        type: path
        description: The contact ID.
      body:
        type: json
        data: '{"email":"new@acme.example"}'
    docs: Updates a contact.
  - info:
      name: Delete a contact.
      type: http
    http:
      method: DELETE
      url: https://ACCOUNT_NAME.quadernoapp.com/api/contacts/:id.json
      params:
      - name: id
        value: ''
        type: path
        description: The contact ID.
    docs: Deletes a contact.
- info:
    name: Items
    type: folder
  items:
  - info:
      name: List items.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/items.json
    docs: Lists catalog items.
  - info:
      name: Create an item.
      type: http
    http:
      method: POST
      url: https://ACCOUNT_NAME.quadernoapp.com/api/items.json
      body:
        type: json
        data: '{"name":"Pro Plan","unit_cost":99.0,"tax_code":"eservice"}'
    docs: Creates a catalog item.
- info:
    name: Invoices
    type: folder
  items:
  - info:
      name: List invoices.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/invoices.json
    docs: Lists invoices with optional search, state filter, and pagination.
  - info:
      name: Create an invoice.
      type: http
    http:
      method: POST
      url: https://ACCOUNT_NAME.quadernoapp.com/api/invoices.json
      body:
        type: json
        data: '{"contact_id":"CONTACT_ID","currency":"USD","items_attributes":[{"description":"Pro Plan","quantity":1,"unit_price":99.0,"tax_code":"eservice"}]}'
    docs: Creates an invoice.
  - info:
      name: Retrieve an invoice.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/invoices/:id.json
      params:
      - name: id
        value: ''
        type: path
        description: The invoice ID.
    docs: Retrieves an invoice by ID.
  - info:
      name: Update an invoice.
      type: http
    http:
      method: PUT
      url: https://ACCOUNT_NAME.quadernoapp.com/api/invoices/:id.json
      params:
      - name: id
        value: ''
        type: path
        description: The invoice ID.
      body:
        type: json
        data: '{"po_number":"PO-123"}'
    docs: Updates an invoice.
  - info:
      name: Delete an invoice.
      type: http
    http:
      method: DELETE
      url: https://ACCOUNT_NAME.quadernoapp.com/api/invoices/:id.json
      params:
      - name: id
        value: ''
        type: path
        description: The invoice ID.
    docs: Deletes an invoice.
  - info:
      name: Deliver an invoice by email.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/invoices/:id/deliver.json
      params:
      - name: id
        value: ''
        type: path
        description: The invoice ID.
    docs: Emails the invoice to the contact.
- info:
    name: Payments
    type: folder
  items:
  - info:
      name: Add a payment to an invoice.
      type: http
    http:
      method: POST
      url: https://ACCOUNT_NAME.quadernoapp.com/api/invoices/:id/payments.json
      params:
      - name: id
        value: ''
        type: path
        description: The invoice ID.
      body:
        type: json
        data: '{"amount":99.0,"payment_method":"credit_card","date":"2026-07-03"}'
    docs: Records a payment against an invoice.
  - info:
      name: Remove a payment from an invoice.
      type: http
    http:
      method: DELETE
      url: https://ACCOUNT_NAME.quadernoapp.com/api/invoices/:id/payments/:payment_id.json
      params:
      - name: id
        value: ''
        type: path
        description: The invoice ID.
      - name: payment_id
        value: ''
        type: path
        description: The payment ID.
    docs: Removes a payment from an invoice.
- info:
    name: Credits
    type: folder
  items:
  - info:
      name: List credit notes.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/credits.json
    docs: Lists credit notes.
  - info:
      name: Create a credit note.
      type: http
    http:
      method: POST
      url: https://ACCOUNT_NAME.quadernoapp.com/api/credits.json
      body:
        type: json
        data: '{"contact_id":"CONTACT_ID","invoice_id":"INVOICE_ID","items_attributes":[{"description":"Refund","quantity":1,"unit_price":99.0}]}'
    docs: Creates a credit note against an invoice.
- info:
    name: Estimates
    type: folder
  items:
  - info:
      name: List estimates.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/estimates.json
    docs: Lists estimates / quotes.
  - info:
      name: Create an estimate.
      type: http
    http:
      method: POST
      url: https://ACCOUNT_NAME.quadernoapp.com/api/estimates.json
      body:
        type: json
        data: '{"contact_id":"CONTACT_ID","currency":"USD","items_attributes":[{"description":"Consulting","quantity":10,"unit_price":150.0}]}'
    docs: Creates an estimate.
- info:
    name: Expenses
    type: folder
  items:
  - info:
      name: List expenses.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/expenses.json
    docs: Lists expenses / vendor bills.
  - info:
      name: Create an expense.
      type: http
    http:
      method: POST
      url: https://ACCOUNT_NAME.quadernoapp.com/api/expenses.json
      body:
        type: json
        data: '{"contact_id":"VENDOR_ID","currency":"USD","items_attributes":[{"description":"Hosting","quantity":1,"unit_price":200.0}]}'
    docs: Creates an expense.
- info:
    name: Recurring
    type: folder
  items:
  - info:
      name: List recurring documents.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/recurring.json
    docs: Lists recurring document templates.
  - info:
      name: Create a recurring document.
      type: http
    http:
      method: POST
      url: https://ACCOUNT_NAME.quadernoapp.com/api/recurring.json
      body:
        type: json
        data: '{"contact_id":"CONTACT_ID","currency":"USD","period":1,"frequency":"monthly","start_date":"2026-08-01","items_attributes":[{"description":"Subscription","quantity":1,"unit_price":99.0}]}'
    docs: Creates a recurring document template.
- info:
    name: Transactions
    type: folder
  items:
  - info:
      name: Create a sales transaction.
      type: http
    http:
      method: POST
      url: https://ACCOUNT_NAME.quadernoapp.com/api/transactions.json
      body:
        type: json
        data: '{"customer":{"first_name":"Tony","last_name":"Stark","email":"tony@stark.example","country":"US","region":"NY","postal_code":"10001"},"items":[{"description":"Pro
          Plan","quantity":1,"unit_price":99.0,"tax_code":"eservice"}],"payment_method":"credit_card"}'
    docs: Records a sale and calculates its tax in one call.
- info:
    name: Taxes
    type: folder
  items:
  - info:
      name: Calculate a tax rate.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/tax_rates/calculate.json
      params:
      - name: country
        value: US
        type: query
        description: ISO country code.
      - name: region
        value: NY
        type: query
        description: State/region (US sales tax).
      - name: postal_code
        value: '10001'
        type: query
        description: Postal / ZIP code.
      - name: tax_code
        value: eservice
        type: query
        description: Product tax code.
    docs: Calculates the applicable tax rate with a reasoning status (taxable, non_taxable, not_registered).
  - info:
      name: Validate a tax ID.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/tax_ids/validate.json
      params:
      - name: country
        value: IE
        type: query
        description: ISO country code.
      - name: tax_id
        value: IE6388047V
        type: query
        description: VAT number / tax ID.
    docs: Validates a customer VAT number / tax ID against the relevant registry.
  - info:
      name: List tax jurisdictions.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/tax_jurisdictions.json
    docs: Lists jurisdictions the account is registered in.
  - info:
      name: List tax codes.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/tax_codes.json
    docs: Lists product tax codes.
- info:
    name: Checkout
    type: folder
  items:
  - info:
      name: Create a checkout session.
      type: http
    http:
      method: POST
      url: https://ACCOUNT_NAME.quadernoapp.com/api/checkout/sessions.json
      body:
        type: json
        data: '{"success_url":"https://example.com/success","cancel_url":"https://example.com/cancel","currency":"USD","items":[{"description":"Pro
          Plan","quantity":1,"unit_price":99.0,"tax_code":"eservice"}]}'
    docs: Creates a hosted Checkout session.
  - info:
      name: Retrieve a checkout session.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/checkout/sessions/:id.json
      params:
      - name: id
        value: ''
        type: path
        description: The checkout session ID.
    docs: Retrieves a Checkout session by ID.
- info:
    name: Webhooks
    type: folder
  items:
  - info:
      name: List webhooks.
      type: http
    http:
      method: GET
      url: https://ACCOUNT_NAME.quadernoapp.com/api/webhooks.json
    docs: Lists webhook subscriptions.
  - info:
      name: Create a webhook.
      type: http
    http:
      method: POST
      url: https://ACCOUNT_NAME.quadernoapp.com/api/webhooks.json
      body:
        type: json
        data: '{"url":"https://example.com/webhooks/quaderno","events_types":["invoice.created","checkout.succeeded"]}'
    docs: Subscribes a URL to event notifications.
  - info:
      name: Delete a webhook.
      type: http
    http:
      method: DELETE
      url: https://ACCOUNT_NAME.quadernoapp.com/api/webhooks/:id.json
      params:
      - name: id
        value: ''
        type: path
        description: The webhook ID.
    docs: Deletes a webhook subscription.