Puzzle Transactions API
The Transactions API from Puzzle — 3 operation(s) for transactions.
The Transactions API from Puzzle — 3 operation(s) for transactions.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.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.curl "https://apis.io/api/v1/apis/puzzle-transactions-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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.
openapi: 3.2.0
info:
title: Puzzle Transactions API
version: '1.0'
description: 'Operations tagged Transactions across 2 of this provider''s published API definitions: puzzle-openapi-original.json, puzzle-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://staging.southparkdata.com/rest/v0
- url: https://staging.southparkdata.com
description: Documented Puzzle API server (Puzzle's underlying data platform is named South Park Data). Confirmed from the public API reference.
tags:
- name: Transactions
paths:
/company/{id}/transactions:
get:
operationId: getTransactions
summary: Get Transactions
description: 'Get transactions by filter
Required scope: read:company'
tags:
- Transactions
parameters:
- name: id
in: path
required: true
description: The company ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
- name: startDate
in: query
required: true
schema:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
- name: endDate
in: query
required: true
schema:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
- name: accountIds
in: query
required: false
schema:
anyOf:
- type: string
minLength: 1
description: Partner-facing external identifier
- type: array
items:
type: string
minLength: 1
description: Partner-facing external identifier
- name: vendorIds
in: query
required: false
schema:
anyOf:
- type: string
minLength: 1
description: Partner-facing external identifier
- type: array
items:
type: string
minLength: 1
description: Partner-facing external identifier
- name: coaKeys
in: query
required: false
schema:
anyOf:
- type: string
- type: array
items:
type: string
- name: status
in: query
required: false
schema:
type: string
enum:
- Finalized
- NotFinalized
- NotCategorized
- name: sortBy
in: query
required: false
schema:
type: string
enum:
- ABS_AMOUNT_ASC
- ABS_AMOUNT_DESC
- AMOUNT_ASC
- AMOUNT_DESC
- DATE_ASC
- DATE_DESC
- DESCRIPTION_ASC
- DESCRIPTION_DESC
- NAME_ASC
- UNCATEGORIZED_AMOUNT_DESC
- VENDOR_ASC
- VENDOR_DESC
- name: after
in: query
required: false
schema:
type: string
- name: count
in: query
required: false
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
type: object
properties:
id:
type: string
minLength: 1
description: Partner-facing external identifier
amount:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
descriptor:
type: string
timestamp:
type: string
minLength: 1
description: ISO 8601 timestamp
memo:
type:
- string
- 'null'
nativeId:
type:
- string
- 'null'
category:
type:
- string
- 'null'
coaKey:
type:
- string
- 'null'
accountId:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
status:
type:
- string
- 'null'
enum:
- Finalized
- NotFinalized
- NotCategorized
vendorId:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
customerId:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
documents:
type:
- array
- 'null'
items:
type: object
properties:
id:
type: string
documentType:
type: string
enum:
- Receipt
- Bill
- Invoice
contentType:
type: string
downloadInfo:
type: object
properties:
signedUrl:
type: string
urlExpiresAt:
type: string
minLength: 1
description: ISO 8601 timestamp
required:
- signedUrl
- urlExpiresAt
required:
- id
- documentType
- contentType
- downloadInfo
classifications:
type:
- array
- 'null'
items:
type: object
properties:
class:
type: string
description:
type:
- string
- 'null'
segments:
type: array
items:
type: object
properties:
id:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
segment:
type: string
description:
type:
- string
- 'null'
required:
- id
- segment
- description
required:
- class
- description
- segments
required:
- id
- amount
- descriptor
- timestamp
- memo
- nativeId
- category
- coaKey
- accountId
- status
- vendorId
- customerId
- documents
- classifications
pageInfo:
type: object
properties:
endCursor:
type:
- string
- 'null'
hasNextPage:
type: boolean
total:
type:
- integer
- 'null'
required:
- endCursor
- hasNextPage
- total
required:
- items
- pageInfo
post:
operationId: createTransactions
summary: Create Transactions
description: 'Create multiple transactions for a single financial account.
You can create up to 500 transactions per request
Transactions can only be added to accounts with the following types: Depository, Credit, Investment, Loan, or PaymentProcessing
Transactions are created asynchronously, so the response only includes a mapping of the Puzzle ID to the native ID and the status of the transaction, which will either be pending or duplicate.
pending = The data for that transaction has been saved and is currently being processed. Please allow a couple of minutes for this transaction to show up in the system.
duplicate = There is already a transaction with that same nativeId in the system, so this transaction data was ignored.
The sign on the amount field depends on the account type.
Additional details can be found here.
The category field may or may not directly correspond to an account in the Chart of Accounts. It is used to help Puzzle automatically categorize this transaction. It does not guarantee a specific COA assignment.
Required scope: write:transaction'
tags:
- Transactions
parameters:
- name: id
in: path
required: true
description: The company ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
accountId:
type: string
minLength: 1
description: Partner-facing external identifier
transactions:
type: array
items:
type: object
properties:
nativeId:
type: string
timestamp:
type: string
minLength: 1
description: ISO 8601 timestamp
amount:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
description:
type: string
category:
type: string
coaKey:
type: string
memo:
type: string
customerId:
type: string
minLength: 1
description: Partner-facing external identifier
vendorId:
type: string
minLength: 1
description: Partner-facing external identifier
merchantName:
type: string
counterpartyName:
type: string
balance:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
splits:
type: array
items:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
descriptor:
type: string
ledgerCoaKey:
type: string
minLength: 1
description: Chart-of-accounts key
accrualDate:
type: string
minLength: 1
description: Calendar date, YYYY-MM-DD
capitalizable:
type: boolean
customerId:
type: string
minLength: 1
description: Partner-facing external identifier
isBillPayment:
type: boolean
isInvoicePayment:
type: boolean
updateOfSplitId:
type: string
minLength: 1
description: Partner-facing external identifier
vendorPermaName:
type: string
required:
- amount
- descriptor
- ledgerCoaKey
classifications:
type: array
items:
type: object
properties:
class:
type: string
minLength: 1
segment:
type: string
minLength: 1
required:
- class
- segment
document:
type: object
properties:
documentType:
type: string
enum:
- Receipt
- Bill
- Invoice
fileName:
type: string
minLength: 1
contentType:
type: string
minLength: 1
base64File:
type: string
minLength: 1
nativeDocumentId:
type: string
minLength: 1
required:
- documentType
- fileName
- contentType
- base64File
- nativeDocumentId
required:
- nativeId
- timestamp
- amount
- description
omitAccountSideOfEntry:
type: boolean
required:
- accountId
- transactions
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
transactions:
type: array
items:
type: object
properties:
id:
type: string
minLength: 1
description: Partner-facing external identifier
nativeId:
type: string
status:
type: string
enum:
- pending
- duplicate
required:
- id
- nativeId
- status
required:
- transactions
servers:
- url: https://staging.southparkdata.com/rest/v0
/company/{id}/transactions/{transactionId}:
get:
operationId: getTransaction
summary: Get Transaction
description: 'Get a single transaction by ID
Required scope: read:company'
tags:
- Transactions
parameters:
- name: id
in: path
required: true
description: The company ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
- name: transactionId
in: path
required: true
description: The transaction ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
id:
type: string
minLength: 1
description: Partner-facing external identifier
amount:
type: object
properties:
amount:
type: string
minLength: 1
description: Arbitrary-precision decimal, serialized as a string
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code
required:
- amount
- currency
description: A monetary amount with its currency
descriptor:
type: string
timestamp:
type: string
minLength: 1
description: ISO 8601 timestamp
memo:
type:
- string
- 'null'
nativeId:
type:
- string
- 'null'
category:
type:
- string
- 'null'
coaKey:
type:
- string
- 'null'
accountId:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
status:
type:
- string
- 'null'
enum:
- Finalized
- NotFinalized
- NotCategorized
vendorId:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
customerId:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
documents:
type:
- array
- 'null'
items:
type: object
properties:
id:
type: string
documentType:
type: string
enum:
- Receipt
- Bill
- Invoice
contentType:
type: string
downloadInfo:
type: object
properties:
signedUrl:
type: string
urlExpiresAt:
type: string
minLength: 1
description: ISO 8601 timestamp
required:
- signedUrl
- urlExpiresAt
required:
- id
- documentType
- contentType
- downloadInfo
classifications:
type:
- array
- 'null'
items:
type: object
properties:
class:
type: string
description:
type:
- string
- 'null'
segments:
type: array
items:
type: object
properties:
id:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
segment:
type: string
description:
type:
- string
- 'null'
required:
- id
- segment
- description
required:
- class
- description
- segments
required:
- id
- amount
- descriptor
- timestamp
- memo
- nativeId
- category
- coaKey
- accountId
- status
- vendorId
- customerId
- documents
- classifications
patch:
operationId: updateTransaction
summary: Update Transaction
description: 'Updates an existing Transaction
Required scope: write:transaction'
tags:
- Transactions
parameters:
- name: id
in: path
required: true
description: The company ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
- name: transactionId
in: path
required: true
description: The transaction ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
category:
type: string
coaKey:
type: string
minLength: 1
description: Chart-of-accounts key
customerId:
type: string
minLength: 1
description: Partner-facing external identifier
finalize:
type: boolean
vendorId:
type: string
minLength: 1
description: Partner-facing external identifier
document:
type: object
properties:
documentType:
type: string
enum:
- Receipt
- Bill
- Invoice
fileName:
type: string
minLength: 1
contentType:
type: string
minLength: 1
base64File:
type: string
minLength: 1
nativeDocumentId:
type: string
minLength: 1
required:
- documentType
- fileName
- contentType
- base64File
- nativeDocumentId
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
id:
type: string
minLength: 1
description: Partner-facing external identifier
required:
- id
servers:
- url: https://staging.southparkdata.com/rest/v0
/company/{id}/transactions/{transactionId}/document:
post:
operationId: createTransactionDocument
summary: Create Document
description: 'Create a document for a given transaction.
Required scope: write:transaction'
tags:
- Transactions
parameters:
- name: id
in: path
required: true
description: The company ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
- name: transactionId
in: path
required: true
description: The transaction ID
schema:
type: string
minLength: 1
description: Partner-facing external identifier
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
documentType:
type: string
enum:
- Receipt
- Bill
- Invoice
fileName:
type: string
minLength: 1
contentType:
type: string
minLength: 1
base64File:
type: string
minLength: 1
nativeDocumentId:
type: string
minLength: 1
required:
- documentType
- fileName
- contentType
- base64File
- nativeDocumentId
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
transactionId:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
manualJournalEntryId:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
journalEntryId:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
billId:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
invoiceId:
type:
- string
- 'null'
minLength: 1
description: Partner-facing external identifier
document:
type: object
properties:
id:
type: string
documentType:
type: string
enum:
- Receipt
- Bill
- Invoice
contentType:
type: string
downloadInfo:
type: object
properties:
signedUrl:
type: string
urlExpiresAt:
type: string
minLength: 1
description: ISO 8601 timestamp
required:
- signedUrl
- urlExpiresAt
required:
- id
- documentType
- contentType
- downloadInfo
required:
- transactionId
- manualJournalEntryId
- journalEntryId
- billId
- invoiceId
- document
servers:
- url: https://staging.southparkdata.com/rest/v0
/rest/v0/company/{id}/transaction
# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/puzzle/refs/heads/main/openapi/puzzle-transactions-api-openapi.yml