Spendesk · Schema

payable

A payable is a short-term liability owed by a company to its creditors (suppliers or employees). Several types of payables are supported by Spendesk, e.g. Invoices, Credit Notes, Expense Claims, Physical card purchases, Single Use card purchases, Subscription card purchases, etc.

Spend ManagementCorporate CardsExpense ManagementInvoicesProcurementFintechAccountingPayments

Properties

Name Type Description
id string The ID of the Payable
type string Indicates the type of the payable. Type | Description | ---------|----------| `expenseClaim` | An expense claim submitted and approved | `invoicePurchase` | An invoice to pay submitted and approved |
version number The current version of this payable. This is incremented every time the payable is modified.
userId string The ID of the Spendesk user who created this payable.
bookkeepingStatus object
companyId string The ID of the company (this could be a wallet or an entity).
appUrl string Link to this payable in the Spendesk web app.
costCenterId stringnull The ID of the cost center, if available.
costCenterName stringnull The name of the cost center, if available.
teamId stringnull The ID of the team.
teamName stringnull The name of the team.
analyticalProperties array
payableDate string For expenses - this is the date of the expense. For reversals - this is the date of the reversal. In the `YYYY-MM-DD` format.
accountingDate stringnull This feature is not activated by default. If activated, `accounting date` field allows accountants to override the original expense date. In the `YYYY-MM-DD` format.
invoiceDueDate stringnull The date the invoice is due. In the `YYYY-MM-DD` format.
amount object
currency object
functionalAmount object
functionalCurrency object
functionalExchangeRate number If the payment was made in a foreign currency, this will be the exchange rate that was applied when the payment was made.
outstandingAmount object Portion of the payable amount not yet covered by allocations, in the payable currency minor units (e.g. cents for EUR and USD, but yen for JPY). Zero means fully allocated. Absent if allocation tracki
outstandingFunctionalAmount object Same as `outstandingAmount` but expressed in the company's functional currency minor units.
invoiceNumber stringnull Invoice number, if available.
purchaseOrderNumber stringnull Purchase order number linked to this invoice payable, if available.
creditNoteNumber stringnull Credit Note number, if available.
referenceInvoiceNumber stringnull Invoice number of an invoice that resulted in a credit note, if available.
description stringnull Description of the payable.
exportedAt stringnull The date this payable was first exported via an accounting export. In the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date format.
createdAt string The timestamp of the creation of this payable. String containing a UTC datetime expressed in ISO 8601 format like `2023-05-12T14:06:40Z` (source `https://en.wikipedia.org/wiki/ISO_8601`).
commitmentCounterparty objectnull The counterparty associated with the spending commitment, or null when unavailable. For expense claims, use its name as the merchant name only when type is supplier. counterparty is the employee being
counterparty object A payable is due to either a supplier or an employee.
lineItems array Line items of the payable.
allocations array An array of allocations for the payable. An expense payable can have a settlement or a reversal payable allocated to it. A reversal payable can have a settlement or an expense payable allocated to it.
amortisation objectnull Amortisation details for the payable, if applicable.
View JSON Schema on GitHub

JSON Schema

spendesk-payable-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/spendesk/main/json-schema/spendesk-payable-schema.json",
  "title": "payable",
  "description": "A payable is a short-term liability owed by a company to its creditors (suppliers or employees). Several types of payables are supported by Spendesk, e.g. Invoices, Credit Notes, Expense Claims, Physical card purchases, Single Use card purchases, Subscription card purchases, etc.",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/spendesk-public-api-openapi.yml#/components/schemas/payable",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "The ID of the Payable",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
    },
    "type": {
      "type": "string",
      "enum": [
        "expenseClaim",
        "invoicePurchase",
        "creditNote",
        "singlePurchaseCard",
        "multiUseCard",
        "subscriptionCard",
        "physicalCard",
        "mileageAllowance",
        "perDiemAllowance",
        "reverseBill"
      ],
      "description": "Indicates the type of the payable. \n\nType | Description |\n---------|----------|\n `expenseClaim` | An expense claim submitted and approved | \n `invoicePurchase` | An invoice to pay submitted and approved | \n `creditNote` | A credit note submitted and approved |\n  `singlePurchaseCard` | A purchase made with a single-use virtual card |\n  `multiUseCard` | A purchase made with a multi-use virtual card | \n  `subscriptionCard` | A purchase made with a subscription virtual card |\n  `physicalCard` | A purchase made with a physical card |\n  `mileageAllowance` | A mileage expense submitted and approved |\n  `perDiemAllowance` | A per diem expense submitted and approved |\n  `reverseBill` | A refund or a late return (aka cash return) |\""
    },
    "version": {
      "type": "number",
      "description": "The current version of this payable. This is incremented every time the payable is modified."
    },
    "userId": {
      "type": "string",
      "description": "The ID of the Spendesk user who created this payable."
    },
    "bookkeepingStatus": {
      "$ref": "#/$defs/bookkeepingStatus"
    },
    "companyId": {
      "type": "string",
      "description": "The ID of the company (this could be a wallet or an entity)."
    },
    "appUrl": {
      "type": "string",
      "description": "Link to this payable in the Spendesk web app."
    },
    "costCenterId": {
      "type": [
        "string",
        "null"
      ],
      "description": "The ID of the cost center, if available."
    },
    "costCenterName": {
      "type": [
        "string",
        "null"
      ],
      "description": "The name of the cost center, if available."
    },
    "teamId": {
      "type": [
        "string",
        "null"
      ],
      "description": "The ID of the team."
    },
    "teamName": {
      "type": [
        "string",
        "null"
      ],
      "description": "The name of the team."
    },
    "analyticalProperties": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/analyticalProperties"
      }
    },
    "payableDate": {
      "type": "string",
      "format": "date",
      "description": "For expenses - this is the date of the expense.\nFor reversals - this is the date of the reversal.\nIn the `YYYY-MM-DD` format."
    },
    "accountingDate": {
      "type": [
        "string",
        "null"
      ],
      "format": "date",
      "description": "This feature is not activated by default.\nIf activated, `accounting date` field allows accountants to override the original expense date.\nIn the `YYYY-MM-DD` format."
    },
    "invoiceDueDate": {
      "type": [
        "string",
        "null"
      ],
      "format": "date",
      "description": "The date the invoice is due. In the `YYYY-MM-DD` format."
    },
    "amount": {
      "$ref": "#/$defs/priceAmount"
    },
    "currency": {
      "$ref": "#/$defs/currency"
    },
    "functionalAmount": {
      "$ref": "#/$defs/priceAmount"
    },
    "functionalCurrency": {
      "$ref": "#/$defs/currency"
    },
    "functionalExchangeRate": {
      "type": "number",
      "description": "If the payment was made in a foreign currency, this will be the exchange rate that was applied when the payment was made."
    },
    "outstandingAmount": {
      "allOf": [
        {
          "$ref": "#/$defs/priceAmount"
        }
      ],
      "description": "Portion of the payable amount not yet covered by allocations, in the payable currency minor units (e.g. cents for EUR and USD, but yen for JPY). Zero means fully allocated. Absent if allocation tracking is unavailable for this payable."
    },
    "outstandingFunctionalAmount": {
      "allOf": [
        {
          "$ref": "#/$defs/priceAmount"
        }
      ],
      "description": "Same as `outstandingAmount` but expressed in the company's functional currency minor units."
    },
    "invoiceNumber": {
      "type": [
        "string",
        "null"
      ],
      "description": "Invoice number, if available."
    },
    "purchaseOrderNumber": {
      "type": [
        "string",
        "null"
      ],
      "description": "Purchase order number linked to this invoice payable, if available."
    },
    "creditNoteNumber": {
      "type": [
        "string",
        "null"
      ],
      "description": "Credit Note number, if available."
    },
    "referenceInvoiceNumber": {
      "type": [
        "string",
        "null"
      ],
      "description": "Invoice number of an invoice that resulted in a credit note, if available."
    },
    "description": {
      "type": [
        "string",
        "null"
      ],
      "description": "Description of the payable."
    },
    "exportedAt": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "The date this payable was first exported via an accounting export. In the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date format."
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "The timestamp of the creation of this payable. String containing a UTC datetime expressed in ISO 8601 format like `2023-05-12T14:06:40Z` (source `https://en.wikipedia.org/wiki/ISO_8601`)."
    },
    "commitmentCounterparty": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": false,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "supplier",
            "employee"
          ]
        },
        "name": {
          "type": "string"
        }
      },
      "required": [
        "type",
        "name"
      ],
      "description": "The counterparty associated with the spending commitment, or null when unavailable. For expense claims, use its name as the merchant name only when type is supplier. counterparty is the employee being reimbursed; their accountPayable must not be used as a merchant creditor account."
    },
    "counterparty": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of this counterparty."
        },
        "type": {
          "type": "string",
          "enum": [
            "supplier",
            "employee"
          ],
          "description": "The type of this counterparty."
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of this counterparty."
        },
        "accountPayable": {
          "type": [
            "object",
            "null"
          ],
          "additionalProperties": false,
          "properties": {
            "id": {
              "type": "string",
              "description": "Internal Spendesk ID of the account payable."
            },
            "generalAccountCode": {
              "type": "string",
              "description": "Accounting code of the account payable."
            },
            "auxiliaryAccountCode": {
              "type": [
                "string",
                "null"
              ],
              "description": "Auxiliary code of the account payable, if available."
            }
          },
          "required": [
            "id",
            "generalAccountCode",
            "auxiliaryAccountCode"
          ]
        }
      },
      "required": [
        "id",
        "type",
        "name",
        "accountPayable"
      ],
      "description": "A payable is due to either a supplier or an employee."
    },
    "lineItems": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/payableLineItem"
      },
      "description": "Line items of the payable."
    },
    "allocations": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "settlement"
                ]
              },
              "allocatedAmount": {
                "allOf": [
                  {
                    "$ref": "#/$defs/priceAmount"
                  }
                ],
                "description": "Payable amount allocated to this settlement. Expressed in smallest units of the currency (e.g. cents for EUR and USD, but yen for JPY)."
              },
              "settlementId": {
                "type": "string",
                "description": "The ID of the allocated settlement."
              }
            },
            "required": [
              "type",
              "allocatedAmount",
              "settlementId"
            ]
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "expense"
                ]
              },
              "allocatedAmount": {
                "allOf": [
                  {
                    "$ref": "#/$defs/priceAmount"
                  }
                ],
                "description": "Payable amount allocated to expenses. Expressed in smallest units of the currency (e.g. cents for EUR and USD, but yen for JPY)."
              },
              "payableId": {
                "type": "string",
                "format": "uuid",
                "description": "The ID of the Payable",
                "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
              }
            },
            "required": [
              "type",
              "allocatedAmount",
              "payableId"
            ]
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "reversal"
                ]
              },
              "allocatedAmount": {
                "allOf": [
                  {
                    "$ref": "#/$defs/priceAmount"
                  }
                ],
                "description": "Payable amount allocated to reversals. Expressed in smallest units of the currency (e.g. cents for EUR and USD, but yen for JPY)."
              },
              "payableId": {
                "type": "string",
                "format": "uuid",
                "description": "The ID of the Payable",
                "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
              }
            },
            "required": [
              "type",
              "allocatedAmount",
              "payableId"
            ]
          }
        ]
      },
      "description": "An array of allocations for the payable. An expense payable can have a settlement or a reversal payable allocated to it. A reversal payable can have a settlement or an expense payable allocated to it."
    },
    "amortisation": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": false,
      "properties": {
        "date": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "from": {
              "type": "string",
              "format": "date-time",
              "description": "Start date of the amortisation period. In the ISO 8601 date-time format."
            },
            "to": {
              "type": "string",
              "format": "date-time",
              "description": "End date of the amortisation period. In the ISO 8601 date-time format."
            }
          },
          "required": [
            "from",
            "to"
          ]
        }
      },
      "required": [
        "date"
      ],
      "description": "Amortisation details for the payable, if applicable."
    }
  },
  "required": [
    "id",
    "version",
    "type",
    "userId",
    "bookkeepingStatus",
    "companyId",
    "teamId",
    "teamName",
    "payableDate",
    "accountingDate",
    "invoiceDueDate",
    "amount",
    "currency",
    "functionalAmount",
    "functionalCurrency",
    "functionalExchangeRate",
    "invoiceNumber",
    "purchaseOrderNumber",
    "creditNoteNumber",
    "referenceInvoiceNumber",
    "description",
    "exportedAt",
    "createdAt",
    "counterparty",
    "lineItems",
    "analyticalProperties",
    "allocations"
  ],
  "$defs": {
    "analyticalProperties": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "fieldId": {
          "type": "string",
          "description": "ID of the analytical field."
        },
        "fieldName": {
          "type": "string",
          "description": "Name of the analytical field."
        },
        "valueId": {
          "type": [
            "string",
            "null"
          ],
          "description": "ID of the analytical value."
        },
        "valueName": {
          "type": [
            "string",
            "null"
          ],
          "description": "Name of the analytical value."
        }
      },
      "required": [
        "fieldId",
        "fieldName",
        "valueId",
        "valueName"
      ],
      "description": "Analytical fields and values of the payable.",
      "title": "analyticalProperties"
    },
    "bookkeepingStatus": {
      "type": "string",
      "enum": [
        "created",
        "prepared",
        "exported",
        "exportedManually",
        "unprepared",
        "failedExport"
      ],
      "description": "Status of the payable in the Spendesk flow. \n\n| Status | Description |\n| ---|--- |\n| `created` | Payable (approved expense) has been created. There is no accounting or supplier information on the payable in this state. |\n| `prepared` | Payable has been prepared (enriched with accounting and supplier information) by an accountant. |\n| `exported` | Payable has been exported to accounting |\n| `failedExport` | Payable has failed to export to accounting via a native Spendesk integrations |\n| `exportedManually` | Payable has been marked as exported manually by the accountant |\n| `unprepared` | Payable has been sent back to Bookkeep>Prepare |\n\"",
      "title": "bookkeepingStatus"
    },
    "currency": {
      "type": "string",
      "pattern": "^[A-Z]{3}$",
      "description": "If the payment was made in a foreign currency, this amount will be the one in the payment currency. Three-letter [ISO currency codes](https://www.iso.org/iso-4217-currency-codes.html).",
      "title": "currency"
    },
    "payableLineItem": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "expenseAccount": {
          "type": [
            "object",
            "null"
          ],
          "additionalProperties": false,
          "properties": {
            "id": {
              "type": "string",
              "description": "Expense account Spendesk internal ID."
            },
            "code": {
              "type": "string",
              "description": "Expense account accounting code."
            },
            "description": {
              "type": "string",
              "description": "Expense account description."
            }
          },
          "required": [
            "id",
            "code",
            "description"
          ],
          "description": "Expense account this line item is allocated to."
        },
        "vatAccount": {
          "type": [
            "object",
            "null"
          ],
          "description": "VAT account this line item is allocated to.",
          "properties": {
            "id": {
              "type": "string",
              "description": "VAT account Spendesk internal ID."
            },
            "code": {
              "type": "string",
              "description": "VAT account accounting code."
            },
            "rate": {
              "type": "number",
              "description": "VAT account rate in percent (e.g. 19.2%)."
            },
            "description": {
              "type": [
                "string",
                "null"
              ],
              "description": "VAT account description."
            }
          },
          "required": [
            "id",
            "code",
            "rate",
            "description"
          ]
        },
        "reverseChargeAccount": {
          "additionalProperties": false,
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "id": {
              "type": "string",
              "description": "Reverse charge account Spendesk internal ID."
            },
            "creditCode": {
              "type": "string",
              "description": "Account code used to credit the reverse charge to."
            },
            "debitCode": {
              "type": "string",
              "description": "Account code used to debit the reverse charge to."
            },
            "description": {
              "type": [
                "string",
                "null"
              ],
              "description": "Reverse charge account description."
            }
          },
          "required": [
            "id",
            "creditCode",
            "debitCode",
            "description"
          ],
          "description": "Reverse charge accounts can be used in place of VAT accounts. They always have a rate of 0%."
        },
        "financial": {
          "type": [
            "object",
            "null"
          ],
          "additionalProperties": false,
          "properties": {
            "vatAmount": {
              "allOf": [
                {
                  "$ref": "#/$defs/priceAmount"
                }
              ],
              "description": "Amount of VAT calculated automatically or entered manually by the accountant. Expressed in smallest units of the currency (e.g. cents for EUR and USD, but yen for JPY)."
            },
            "vatAdjustmentAmount": {
              "allOf": [
                {
                  "$ref": "#/$defs/priceAmount"
                }
              ],
              "description": "Only exists when vatAmount was manually adjusted by the accountant. Is calculated as vatAmount - (netAmount * vatAccount.rate) and can be negative or positive. Expressed in smallest units of the currency (e.g. cents for EUR and USD, but yen for JPY)."
            },
            "netAmount": {
              "allOf": [
                {
                  "$ref": "#/$defs/priceAmount"
                }
              ],
              "description": "Net amount or the line iteam (grossAmount - vatAmount) Expressed in smallest units of the currency (e.g. cents for EUR and USD, but yen for JPY)."
            },
            "grossAmount": {
              "allOf": [
                {
                  "$ref": "#/$defs/priceAmount"
                }
              ],
              "description": "Gross amount of the line item (netAmount + vatAmount) Expressed in smallest units of the currency (e.g. cents for EUR and USD, but yen for JPY)."
            }
          },
          "required": [
            "vatAmount",
            "vatAdjustmentAmount",
            "netAmount",
            "grossAmount"
          ],
          "description": "Financial amounts of the line item"
        },
        "costCenterId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The ID of the cost center, if available."
        },
        "costCenterName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the cost center, if available."
        },
        "analyticalProperties": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/analyticalProperties"
          },
          "description": "Array of analytical properties for this line item."
        }
      },
      "required": [
        "vatAccount",
        "reverseChargeAccount",
        "financial",
        "expenseAccount",
        "analyticalProperties"
      ],
      "title": "payableLineItem"
    },
    "priceAmount": {
      "type": "number",
      "description": "If the payment was made in a foreign currency, this amount will be the one in the payment currency.\nCan contain a negative value in case of refunds.\nExpressed in smallest units of the currency (e.g. cents for EUR and USD, but yen for JPY).",
      "title": "priceAmount"
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/spendesk-payable"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.