# Spendesk API Documentation > Guides, recipes and API reference for the Spendesk API: spend data, accounting exports, invoices, cards, webhooks, and an MCP server for AI assistants. ## Documentation: Getting started - [Introduction](https://developer.spendesk.com/reference/general.md) - [Getting access](https://developer.spendesk.com/reference/getting-access.md): Which access you need, who sets it up in Spendesk, and which scopes to ask for. - [Quickstart](https://developer.spendesk.com/reference/quickstart.md): Make your first Spendesk API call in five minutes — with Postman, curl or a short script. - [How to Authenticate](https://developer.spendesk.com/reference/how-to-authenticate.md) - [Organisation-level access (multi-entity)](https://developer.spendesk.com/reference/organisation-level-access.md): Use one token for every entity of a Spendesk organisation: list its companies, then scope each call to the entity you want. - [Postman collection](https://developer.spendesk.com/reference/postman.md): Guidance on using our public Postman collection. ## Documentation: Conventions - [Scopes](https://developer.spendesk.com/reference/scopes.md) - [Pagination](https://developer.spendesk.com/reference/pagination.md) - [Error Handling](https://developer.spendesk.com/reference/error-handling.md) - [Rate Limiting](https://developer.spendesk.com/reference/rate-limiting.md) - [Data Types](https://developer.spendesk.com/reference/data-types.md) - [Versioning & Deprecation](https://developer.spendesk.com/reference/versioning-deprecation.md) - [Using webhooks (experimental)](https://developer.spendesk.com/reference/using-webhooks.md) ## Documentation: Use cases - [Building an accounting integration](https://developer.spendesk.com/reference/building-an-accounting-integration.md): Connect Spendesk to an ERP or accounting system: keep its chart of accounts in Spendesk, post every prepared expense and payment into it, and tell Spendesk what was posted. - [Exporting accounting data](https://developer.spendesk.com/reference/exporting-accounting-data.md): Get your purchase and bank journals out of Spendesk, and tell Spendesk what you exported so nothing is exported twice. - [Managing purchase orders](https://developer.spendesk.com/reference/managing-purchase-orders.md): Follow committed spend, create purchase orders from your ERP or procurement tool, track their billing, and close or cancel them. - [Following card spend](https://developer.spendesk.com/reference/following-card-spend.md): Follow your company's cards, the spend requests behind them, and the card payments — settled and declined. - [Connect an AI assistant (MCP)](https://developer.spendesk.com/reference/connect-an-ai-assistant-mcp.md): Ask your AI assistant about your company's spend, invoices and accounting — and act on them — through the Spendesk MCP server. - [What is Spend Data?](https://developer.spendesk.com/reference/how-to-use-spend-data.md) - [Retrieving Spend Data](https://developer.spendesk.com/reference/retrieving-snapshots-of-payables.md) ## Documentation: Recipes - [Running the recipes](https://developer.spendesk.com/reference/running-the-recipes.md): Short, ready-to-use answers to everyday finance questions — with Postman, an AI assistant, or a small script. - [Export a month of spend to a spreadsheet](https://developer.spendesk.com/reference/export-a-month-of-spend-to-a-spreadsheet.md): Every expense of a month in a CSV: supplier or employee, amount, cost center, bookkeeping status and receipt. - [List the invoices due this week](https://developer.spendesk.com/reference/list-the-invoices-due-this-week.md): The approved supplier invoices to pay in the next days, overdue ones first, with the total still due per currency. - [Month-end close checklist](https://developer.spendesk.com/reference/month-end-close-checklist.md): What is still missing before closing a month: receipts, exports to accounting, approvals, failed exports. - [Check the wallet balance](https://developer.spendesk.com/reference/check-the-wallet-balance.md): The wallet balance, what is available or committed, and the latest wallet loads. ## Documentation: Spendesk Public API - [API Reference](https://developer.spendesk.com/reference/introduction.md) - [Get Settlements](https://developer.spendesk.com/reference/v1-get-settlements.md): **Allowed Scopes**: _`settlement:read`_ Returns settlements. For more information about settlements, see [this guide](/public/reference/how-to-use-spend-data). Settlements data are cached for 86400… - [Update settlements state](https://developer.spendesk.com/reference/v1-put-settlements-state.md): **Allowed Scopes**: _`experimental:accounting:update`_ Mark multiple settlements as manually exported after their accounting entries were created outside Spendesk. - [Get Bank Fees](https://developer.spendesk.com/reference/v1-get-bank-fees.md): **Allowed Scopes**: _`bank-fee:read`_ Returns bank fees. For more information about bank fees, see [this guide](/public/reference/how-to-use-spend-data). Bank fees data are cached for 86400 seconds. - [Create a snapshot of payables](https://developer.spendesk.com/reference/v1-create-snapshot-payables.md): **Allowed Scopes**: _`payable:read`_ Request an extract (snapshot) of expenses to be created. A request to create a snapshot of expenses according to the filters provided will be queued, where a… - [Get a snapshot of payables](https://developer.spendesk.com/reference/v1-get-snapshot-payables.md): **Allowed Scopes**: _`payable:read`_ Returns an extract (snapshot) of payables requested via the [POST API](/public/reference/v1-create-snapshot-payables). Requires the returned key as a parameter.… - [Get Payable by ID](https://developer.spendesk.com/reference/v1-get-payable-by-id.md): **Allowed Scopes**: _`payable:read`_ Retrieves a single payable by its ID. Payable data is cached for 1200 seconds. For accounting export use cases, each line item's net amount is available as… - [Get Payable Attachments](https://developer.spendesk.com/reference/v1-get-payable-attachments.md): **Allowed Scopes**: _`payable-attachment:read`_ Returns attachments for a given payable as short lived URLs. Download and save downloaded files in your long term storage. Payable attachment data is… - [Update Payables bookkeeping status](https://developer.spendesk.com/reference/v1-put-payables-bookkeeping-status.md): **Allowed Scopes**: _`experimental:accounting:update`_ Update the accounting status for multiple Payables. - [Get Wallet Loads](https://developer.spendesk.com/reference/v1-get-wallet-loads.md): **Allowed Scopes**: _`wallet-load:read`_ Returns wallet loads of the Spendesk entity (company), either via wiretransfers to Spendesk or via card payments. Wallet loads data are cached for 86400… - [Get Wallet Summary](https://developer.spendesk.com/reference/v1-get-wallet-summary.md): **Allowed Scopes**: _`wallet-summary:read`_ Return the details of the wallet (Spendesk entity), such as company name, remaining amounts, etc. Wallet summary data is cached for 1200 seconds. - [Search Payables](https://developer.spendesk.com/reference/v1-search-payables.md): **Allowed Scopes**: _`experimental:payable-search:read`_ Searches payables using filters with cursor-based pagination. Payables search data is cached for 86400 seconds. - [Create Payable Attachment Upload](https://developer.spendesk.com/reference/v1-create-payable-attachment-upload.md): **Allowed Scopes**: _`experimental:payable-attachment:write`_ Creates a presigned upload target for a receipt attachment on a payable. This first version supports card transaction payables only.… - [Get Purchase Order Document](https://developer.spendesk.com/reference/v1-get-purchase-order-document.md): **Allowed Scopes**: _`experimental:purchase-order:read`_ Returns the document for a given purchase order as a short lived URL. Download and save the file in your long term storage. Purchase order… - [Mark Payable as ready](https://developer.spendesk.com/reference/v1-post-payable-mark-as-ready.md): **Allowed Scopes**: _`experimental:accounting:update`_ Validates a Payable and marks it as ready for accounting export when all required bookkeeping information is present. - [Update Payable accounting fields](https://developer.spendesk.com/reference/v1-patch-payable-accounting-fields.md): **Allowed Scopes**: _`experimental:accounting:update`_ Updates accounting fields for one Payable with optimistic locking. - [Get Suppliers](https://developer.spendesk.com/reference/v1-get-suppliers.md): **Allowed Scopes**: _`supplier:read`_ Returns suppliers existing in the Spendesk entity (company). Supplier data is cached for 86400 seconds; supplier account data (used for `accountPayable`) is… - [Get Supplier By Id](https://developer.spendesk.com/reference/v1-get-supplier-by-id.md): **Allowed Scopes**: _`supplier:read`_ Retrieves a single supplier by its ID. Supplier data is cached for 86400 seconds; supplier account data (used for `accountPayable`) is cached for 1200 seconds.… - [Get Users](https://developer.spendesk.com/reference/v1-get-users.md): **Allowed Scopes**: _`user:read`_ Returns members (users) of the Spendesk entity (company). User data is cached for 1200 seconds. - [Get User By Id](https://developer.spendesk.com/reference/v1-get-user-by-id.md): **Allowed Scopes**: _`user:read`_ Retrieves a member (user) by its ID. User data is cached for 1200 seconds. - [Archive/Unarchive Supplier](https://developer.spendesk.com/reference/v1-patch-supplier-status.md): **Allowed Scopes**: _`experimental:supplier:manage`_ Archives or unarchives supplier by id. - [Archive/Unarchive Suppliers](https://developer.spendesk.com/reference/v1-patch-suppliers-status.md): **Allowed Scopes**: _`experimental:supplier:manage`_ Archives or unarchives suppliers. - [Create Supplier(s)](https://developer.spendesk.com/reference/v1-create-suppliers.md): **Allowed Scopes**: _`experimental:supplier:manage`_ Create one or multiple suppliers. Accepts either a single supplier object or an array of supplier objects. - [Update Suppliers](https://developer.spendesk.com/reference/v1-update-suppliers.md): **Allowed Scopes**: _`experimental:supplier:manage`_ Update multiple suppliers. Accepts an array of supplier update objects (minimum 2 items), each containing an id field. For a single supplier use… - [Update Supplier](https://developer.spendesk.com/reference/v1-update-supplier.md): **Allowed Scopes**: _`experimental:supplier:manage`_ Update a single supplier by ID. - [Create Access Token (Public API credentials)](https://developer.spendesk.com/reference/v1-create-auth-token.md): Create an access token for Public API credentials. Use this endpoint for server-to-server integrations that were issued Public API credentials. Send `Authorization: Basic… - [Get Analytical Fields](https://developer.spendesk.com/reference/v1-get-analytical-fields.md): **Allowed Scopes**: _`analytical-field:read`_ Returns analytical fields existing (or archived) in the Spendesk entity (company). Analytical fields data are cached for 86400 seconds. - [Get Analytical Values](https://developer.spendesk.com/reference/v1-get-analytical-field-values.md): **Allowed Scopes**: _`analytical-field:read`_ Returns values of the specified analytical field. Analytical field values data are cached for 86400 seconds. - [Get Expense Categories](https://developer.spendesk.com/reference/v1-get-expense-categories.md): **Allowed Scopes**: _`expense-category:read`_ Returns expense categories of the Spendesk entity (company). Expense category and cost center data are cached for 86400 seconds. - [Get Cost Centers](https://developer.spendesk.com/reference/v1-get-cost-centers.md): **Allowed Scopes**: _`cost-center:read`_ Returns cost centers of the Spendesk entity (company). Cost centers data are cached for 86400 seconds. - [Create Cost Centers](https://developer.spendesk.com/reference/v1-create-cost-centers.md): **Allowed Scopes**: _`cost-center:manage`_ Create a new cost center. - [Update Cost Centers](https://developer.spendesk.com/reference/v1-update-cost-centers.md): **Allowed Scopes**: _`cost-center:manage`_ Update an existing cost center. - [Delete Cost Centers](https://developer.spendesk.com/reference/v1-delete-cost-centers.md): **Allowed Scopes**: _`cost-center:manage`_ Delete an existing cost center. - [List Analytical Fields](https://developer.spendesk.com/reference/v2-list-analytical-fields.md): **Allowed Scopes**: _`experimental:analytical-field-v2:read`_ Returns analytical fields for the company, excluding the expense categories field. Analytical fields data are cached for 86400 seconds. - [Get Analytical Field](https://developer.spendesk.com/reference/v2-get-analytical-field.md): **Allowed Scopes**: _`experimental:analytical-field-v2:read`_ Returns a single analytical field by ID. Returns 404 if the field does not exist or if the ID belongs to the expense categories field.… - [List Analytical Field Values](https://developer.spendesk.com/reference/v2-list-analytical-field-values.md): **Allowed Scopes**: _`experimental:analytical-field-v2:read`_ Returns values for an analytical field, using forward-only cursor pagination. Returns 404 if the field does not exist or if the ID… - [Get Analytical Field Value](https://developer.spendesk.com/reference/v2-get-analytical-field-value.md): **Allowed Scopes**: _`experimental:analytical-field-v2:read`_ Returns a single analytical field value by ID. Returns 404 if the field does not exist, or if the value does not exist or does not… - [List Expense Category Fields](https://developer.spendesk.com/reference/v2-list-expense-category-fields.md): **Allowed Scopes**: _`experimental:expense-category-v2:read`_ Returns the expense category field for the company. The array is empty if the company has no expense category field configured. Expense… - [Get Expense Category Field](https://developer.spendesk.com/reference/v2-get-expense-category-field.md): **Allowed Scopes**: _`experimental:expense-category-v2:read`_ Returns a single expense category field by ID. Returns 404 if the field does not exist. Expense category field data is cached for 86400… - [List Expense Categories](https://developer.spendesk.com/reference/v2-list-expense-categories.md): **Allowed Scopes**: _`experimental:expense-category-v2:read`_ Returns expense categories for the expense category field, using forward-only cursor pagination. Returns 404 if the field does not… - [Get Expense Category](https://developer.spendesk.com/reference/v2-get-expense-category.md): **Allowed Scopes**: _`experimental:expense-category-v2:read`_ Returns a single expense category by ID for the expense category field. Returns 404 if the field or the category does not exist. Expense… - [Create Analytical Field](https://developer.spendesk.com/reference/v2-create-analytical-field.md): **Allowed Scopes**: _`experimental:analytical-field-v2:write`_ Creates an analytical field for the company. Returns 409 if the company has reached the maximum number of analytical fields. - [Update Analytical Field](https://developer.spendesk.com/reference/v2-update-analytical-field.md): **Allowed Scopes**: _`experimental:analytical-field-v2:write`_ Partially updates an analytical field. Returns 404 if the field does not exist or if the ID belongs to the expense categories field. - [Delete Analytical Field](https://developer.spendesk.com/reference/v2-delete-analytical-field.md): **Allowed Scopes**: _`experimental:analytical-field-v2:write`_ Deletes an analytical field by ID. Returns 404 if the field does not exist or if the ID belongs to the expense categories field. - [Create Analytical Field Value](https://developer.spendesk.com/reference/v2-create-analytical-field-value.md): **Allowed Scopes**: _`experimental:analytical-field-v2:write`_ Creates a value for an analytical field. Returns 404 if the field does not exist. Returns 409 if a value with the same name already… - [Update Analytical Field Value](https://developer.spendesk.com/reference/v2-update-analytical-field-value.md): **Allowed Scopes**: _`experimental:analytical-field-v2:write`_ Partially updates a value of an analytical field. Returns 404 if the field or the value does not exist. Returns 409 if a value with the… - [Delete Analytical Field Value](https://developer.spendesk.com/reference/v2-delete-analytical-field-value.md): **Allowed Scopes**: _`experimental:analytical-field-v2:write`_ Deletes a value of an analytical field by ID. Returns 404 if the field or the value does not exist. - [Create Expense Category Field](https://developer.spendesk.com/reference/v2-create-expense-category-field.md): **Allowed Scopes**: _`experimental:expense-category-v2:write`_ Creates the company's expense category field. A company can only have one expense category field; creating a second one returns a 409. - [Update Expense Category Field](https://developer.spendesk.com/reference/v2-update-expense-category-field.md): **Allowed Scopes**: _`experimental:expense-category-v2:write`_ Updates the company's expense category field. Only the provided properties are changed; omitted properties are left untouched. Returns… - [Delete Expense Category Field](https://developer.spendesk.com/reference/v2-delete-expense-category-field.md): **Allowed Scopes**: _`experimental:expense-category-v2:write`_ Deletes an expense category field by ID. Returns 404 if the field does not exist. - [Create Expense Category](https://developer.spendesk.com/reference/v2-create-expense-category.md): **Allowed Scopes**: _`experimental:expense-category-v2:write`_ Creates a new expense category for the expense category field. Returns 404 if the field does not exist. Returns 409 if a category with… - [Update Expense Category](https://developer.spendesk.com/reference/v2-update-expense-category.md): **Allowed Scopes**: _`experimental:expense-category-v2:write`_ Partially updates an existing expense category for the expense category field. Returns 404 if the field or the category does not exist.… - [Delete Expense Category](https://developer.spendesk.com/reference/v2-delete-expense-category.md): **Allowed Scopes**: _`experimental:expense-category-v2:write`_ Deletes an expense category by ID for the expense category field. Returns 404 if the field or the category does not exist. - [Request Authorization (OAuth app PKCE)](https://developer.spendesk.com/reference/v1-request-authorization.md): Start the PKCE authorization-code flow for an OAuth app. Use this endpoint only for OAuth app credentials that require a Spendesk user to authorize access. Do not use it with Public API credentials;… - [OAuth2 Token Endpoint (OAuth app PKCE)](https://developer.spendesk.com/reference/v1-create-oauth2-token.md): Standard OAuth2 token endpoint for OAuth app credentials. Use `grant_type=authorization_code` to exchange an authorization code for access and refresh tokens after [Request… - [Refresh Token (Deprecated)](https://developer.spendesk.com/reference/v1-refresh-oauth2-token.md): Deprecated compatibility endpoint. Prefer the [OAuth2 token endpoint](/public/reference/v1-create-oauth2-token) with `grant_type=refresh_token`. OAuth token requests should be sent as… - [MCP Protected Resource Metadata](https://developer.spendesk.com/reference/mcp-protected-resource-metadata-mcp.md): Returns OAuth2 protected resource metadata scoped to the MCP resource path, as defined by RFC 9728. - [Authorization Server Metadata](https://developer.spendesk.com/reference/mcp-authorization-server-metadata.md): Returns OAuth2 authorization server metadata as defined by RFC 8414. Used by MCP clients to discover endpoints for authorization, token exchange, and dynamic registration. - [Dynamic Client Registration](https://developer.spendesk.com/reference/v1-register-oauth2-client.md): Registers an MCP OAuth2 client using the RFC 7591 Dynamic Client Registration flow. - [/v1/mcp](https://developer.spendesk.com/reference/post_v1-mcp.md) - [/v1/mcp](https://developer.spendesk.com/reference/get_v1-mcp.md) - [/v1/mcp](https://developer.spendesk.com/reference/delete_v1-mcp.md) - [Get a journal CSV content](https://developer.spendesk.com/reference/get_v1-experimental-journals-key.md): **Allowed Scopes**: _`experimental:accounting-export:read`_ Returns the requested journal CSV content. Journal content data is cached for 86400 seconds. - [Create an accounting export](https://developer.spendesk.com/reference/post_v1-experimental-journals.md) - [Get available journal templates](https://developer.spendesk.com/reference/get_v1-experimental-journals-templates.md): **Allowed Scopes**: _`experimental:accounting-export:read`_ Returns available journal templates. Accounting software and journal template data are cached for 86400 seconds. - [Get entity export status](https://developer.spendesk.com/reference/get_v1-experimental-integrations-export-status.md): Returns entity IDs filtered by export status within the given date range. A maximum date range of 1 year is allowed. Export status data is cached for 86400 seconds. - [Get external references](https://developer.spendesk.com/reference/v1-get-external-references.md): **Allowed Scopes**: _`experimental:external-reference:read`_ Returns the IDs Spendesk entities have in an external system (ERP), as one entry per (entity, external ID) pair. Filter by… - [Upsert external references](https://developer.spendesk.com/reference/v1-upsert-external-references.md): **Allowed Scopes**: _`experimental:external-reference:write`_ Records the ID a Spendesk entity has in an external system (ERP), namespaced by `provider`. Re-sending the same `(entityType,… - [Refresh accounting integration settings](https://developer.spendesk.com/reference/v1-post-experimental-integrations-refresh-settings.md): **Allowed Scopes**: _`experimental:chart-of-accounts:write`_ Triggers a refresh of the company's accounting integration settings, pulling accounts, tax accounts, analytical fields, suppliers,… - [Get accounts](https://developer.spendesk.com/reference/v1-get-accounts.md): **Allowed Scopes**: _`experimental:chart-of-accounts:read`_ Returns accounts from accounting integrations. Account data is cached for 86400 seconds. - [Create account](https://developer.spendesk.com/reference/v1-create-account.md): **Allowed Scopes**: _`experimental:chart-of-accounts:write`_ Creates a new account for the selected account type. - [Bulk update accounts](https://developer.spendesk.com/reference/v1-sync-accounts.md): **Allowed Scopes**: _`experimental:chart-of-accounts:write`_ Bulk syncs (creates or upserts) accounts for the selected account type. For partial updates to existing accounts, use PATCH… - [Get account by id](https://developer.spendesk.com/reference/v1-get-account-by-id.md): **Allowed Scopes**: _`experimental:chart-of-accounts:read`_ Returns a single account by id. Account data is cached for 86400 seconds. - [Archive account](https://developer.spendesk.com/reference/v1-delete-account.md): **Allowed Scopes**: _`experimental:chart-of-accounts:write`_ Archives an existing account. The account lookup used before archiving is cached for 86400 seconds; the archive call itself is not cached. - [Set account purpose](https://developer.spendesk.com/reference/v1-set-account-purpose.md): **Allowed Scopes**: _`experimental:chart-of-accounts:write`_ Sets the purpose for one or more accounts. - [Search creditor account assignments](https://developer.spendesk.com/reference/v1-search-creditor-account-assignments.md): **Allowed Scopes**: _`experimental:chart-of-accounts:read`_ Searches creditor to account assignments. Creditor account assignment data is cached for 86400 seconds. - [Assign creditors to accounts](https://developer.spendesk.com/reference/v1-assign-creditors-to-accounts.md): **Allowed Scopes**: _`experimental:chart-of-accounts:write`_ Assigns creditors to accounts. - [Remove creditors from accounts](https://developer.spendesk.com/reference/v1-remove-creditors-from-accounts.md): **Allowed Scopes**: _`experimental:chart-of-accounts:write`_ Removes creditor assignments from accounts. - [Bulk patch accounts](https://developer.spendesk.com/reference/v1-patch-accounts.md): **Allowed Scopes**: _`experimental:chart-of-accounts:write`_ Partially updates one or more existing accounts by id. Validation is all-or-nothing: if any item has no field to update (400) or any id… - [Get Companies](https://developer.spendesk.com/reference/v2-get-companies.md): **Allowed Scopes**: _`experimental:company:read`_ Returns companies (legal entities) in the organisation. Only accessible with an organisation-level token. For OAuth2 (user-consented) tokens,… - [payables-created](https://developer.spendesk.com/reference/post_payables-created.md) - [settlement-created](https://developer.spendesk.com/reference/post_settlement-created.md) - [Create an intake file upload](https://developer.spendesk.com/reference/v2-create-intake-file-upload.md): **Allowed Scopes**: _`experimental:intake:write`_ Creates a presigned upload target for an intake file. This is step 1 of 3 in creating an intake from a document: 1. Create an upload with this… - [Get an intake file upload status](https://developer.spendesk.com/reference/v2-get-intake-file-upload-status.md): **Allowed Scopes**: _`experimental:intake:write`_ Returns the status of an intake file upload. This is step 2 of 3 in creating an intake from a document, after [Create an intake file… - [Create an intake](https://developer.spendesk.com/reference/v2-post-company-intakes.md): **Allowed Scopes**: _`experimental:intake:write`_ Create a new incoming invoice or credit note for a company's invoice inbox. This is step 3 of 3 in creating an intake from a document. `documentId`… - [List intakes](https://developer.spendesk.com/reference/v2-list-company-intakes.md): **Allowed Scopes**: _`experimental:intake:read`_ Returns the company's intakes — supplier documents (invoices, credit notes, receipts) received by the company and being reviewed and processed —… - [Get an intake](https://developer.spendesk.com/reference/v2-get-company-intake.md): **Allowed Scopes**: _`experimental:intake:read`_ Returns a single intake by id: everything [List intakes](/public/reference/v2-list-company-intakes) returns for it, plus the received files in… - [List invoices](https://developer.spendesk.com/reference/v2-list-invoices.md): **Allowed Scopes**: _`experimental:invoice:read`_ Returns supplier invoices for the company, most-recent first by default, using forward-only cursor pagination. Invoice data is cached for 86400… - [Summarise invoices](https://developer.spendesk.com/reference/v2-get-invoices-summary.md): **Allowed Scopes**: _`experimental:invoice:read`_ Returns aggregate figures (count + amount totals by currency) over all invoices matching the filters. Invoice summary data is cached for 86400… - [Get an invoice](https://developer.spendesk.com/reference/v2-get-invoice.md): **Allowed Scopes**: _`experimental:invoice:read`_ Returns a single supplier invoice by id. Invoice data is cached for 86400 seconds. - [Get a Card Order](https://developer.spendesk.com/reference/v1-get-card-order.md): **Allowed Scopes**: _`experimental:card:read`_ Returns physical card order/shipping info for a card, regardless of its current status. 404 if the card was never physically ordered (e.g. a virtual… - [Get Purchase Orders](https://developer.spendesk.com/reference/v1-get-purchase-orders.md): **Allowed Scopes**: _`experimental:purchase-order:read`_ Returns purchase orders. Purchase order data is cached for 7200 seconds. - [Create a purchase order](https://developer.spendesk.com/reference/v1-create-purchase-order.md): **Allowed Scopes**: _`experimental:purchase-order:write`_ Create a purchase order. - [Get a purchase order by ID](https://developer.spendesk.com/reference/v1-get-purchase-order.md): **Allowed Scopes**: _`experimental:purchase-order:read`_ Returns a purchase order by ID. Purchase order data is cached for 86400 seconds. - [Cancel a purchase order](https://developer.spendesk.com/reference/v1-cancel-purchase-order.md): **Allowed Scopes**: _`experimental:purchase-order:write`_ Cancel an existing purchase order by ID. - [Close a purchase order](https://developer.spendesk.com/reference/v1-close-purchase-order.md): **Allowed Scopes**: _`experimental:purchase-order:write`_ Close an existing purchase order by ID. Closing a purchase order prevents further modifications. - [Get Cards](https://developer.spendesk.com/reference/v1-get-cards.md): **Allowed Scopes**: _`experimental:card:read`_ Returns cards for the authenticated company. - [Get a Card](https://developer.spendesk.com/reference/v1-get-card.md): **Allowed Scopes**: _`experimental:card:read`_ Returns a single card by ID. - [Get Requests](https://developer.spendesk.com/reference/v1-get-requests.md): **Allowed Scopes**: _`experimental:request:read`_ Returns requests for the authenticated company. - [Get a Request](https://developer.spendesk.com/reference/v1-get-request.md): **Allowed Scopes**: _`experimental:request:read`_ Returns a single request by ID. - [Get Transactions (Deprecated)](https://developer.spendesk.com/reference/v1-get-transactions.md): **Allowed Scopes**: _`experimental:transaction:read`_ Deprecated compatibility endpoint. Prefer `GET /v1/transactions/successful` and `GET /v1/transactions/failed`, which have distinct, more accurate… - [Get Successful Transactions](https://developer.spendesk.com/reference/v1-get-successful-transactions.md): **Allowed Scopes**: _`experimental:transaction:read`_ Returns successful (settled) card transactions for the authenticated company, with pagination. For declined transactions, use `GET… - [Get Failed Transactions](https://developer.spendesk.com/reference/v1-get-failed-transactions.md): **Allowed Scopes**: _`experimental:transaction:read`_ Returns declined card transactions for the authenticated company, covering the last 30 days when `startDate` is omitted — pass `startDate` to… - [Get a Card Blocking History](https://developer.spendesk.com/reference/v1-get-card-blocking-history.md): **Allowed Scopes**: _`experimental:card:read`_ Returns the full block/unblock history for a card, regardless of its current status — every reason on the card, active and past, not just the current… - [Create a webhook instance](https://developer.spendesk.com/reference/v1-create-webhook.md): **Allowed Scopes**: _`experimental:webhooks:write`_ Creates one or multiple webhook instances. Each instance will be linked to a company and a specific event. Maximum of 50 instances can be… - [Get all webhook instances ordered by creation date.](https://developer.spendesk.com/reference/v1-get-webhook.md): **Allowed Scopes**: _`experimental:webhooks:read`_ Returns zero or more configured webhook instances for the company in question. Webhook instances are disabled either manually by API requests… - [Get a webhook instance by id.](https://developer.spendesk.com/reference/v1-get-webhook-by-id.md): **Allowed Scopes**: _`experimental:webhooks:read`_ Get a single webhook instance for the company in question. Webhook instances are disabled either manually by API requests or by Spendesk if… - [Update a webhook instance](https://developer.spendesk.com/reference/v1-update-webhook.md): **Allowed Scopes**: _`experimental:webhooks:write`_ Update a webhook instance for the company in question. Use this resource to re-enable a webhook if this has been disabled due to failing the… - [Delete a webhook instance](https://developer.spendesk.com/reference/v1-delete-webhook.md): **Allowed Scopes**: _`experimental:webhooks:write`_ Delete a webhook instance for the company in question. If the webhook instance is no longer needed or the max number of instances has been… ## Pages - [Register your interest (API)](https://developer.spendesk.com/page/register-your-interest-api.md) - [Register your interest (integrations)](https://developer.spendesk.com/page/register-your-interest-integrations.md) ## Changelog - [The documentation is now searchable and readable by AI assistants](https://developer.spendesk.com/changelog/the-documentation-is-now-searchable-and-readable-by-ai-assistants.md) - [A new Postman collection for the whole API](https://developer.spendesk.com/changelog/a-new-postman-collection-for-the-whole-api.md) - [Recipes for finance teams](https://developer.spendesk.com/changelog/recipes-for-finance-teams.md) - [Spendesk MCP server for AI assistants](https://developer.spendesk.com/changelog/spendesk-mcp-server-for-ai-assistants.md) - [Organisation-level access for multi-entity customers (experimental)](https://developer.spendesk.com/changelog/organisation-level-access-for-multi-entity-customers-experimental.md) - [Filtering payable snapshots by creation date](https://developer.spendesk.com/changelog/filtering-payable-snapshots-by-creation-date.md) - [OAuth2: one token endpoint for code exchange and refresh](https://developer.spendesk.com/changelog/oauth2-one-token-endpoint-for-code-exchange-and-refresh.md) - [Cards, requests and transactions (experimental)](https://developer.spendesk.com/changelog/cards-requests-and-transactions-experimental.md) - [Analytical fields and expense categories v2 (experimental)](https://developer.spendesk.com/changelog/analytical-fields-and-expense-categories-v2-experimental.md) - [Invoices and invoice intake (experimental)](https://developer.spendesk.com/changelog/invoices-and-invoice-intake-experimental.md)