openapi: 3.2.0 info: title: Cacheflow Payments API version: 0.0.3 servers: - url: https://api.getcacheflow.com description: 'Production. Calls are tenant-routed: send Host: .api.getcacheflow.com (per github.com/getcacheflow/api-examples SETUP.md). Host no longer resolves as of 2026-08-13.' - url: https://api.sandbox.getcacheflow.com description: Sandbox. Tenant-routed as .api.sandbox.getcacheflow.com. Host no longer resolves as of 2026-08-13. tags: - name: Payments paths: /api/latest/data/transactions/{id}: get: tags: - Payments summary: Retrieve a payment operationId: getTransaction parameters: - name: id in: path required: true schema: type: string format: uuid responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Transfer' /api/latest/data/transactions/reference/{type}/{referenceId}: get: tags: - Payments summary: Get payment by reference operationId: getTransactionByReference parameters: - name: type in: path required: true schema: type: string enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user - name: referenceId in: path required: true schema: type: string format: uuid responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Transaction' /api/latest/data/transactions/{id}/transfers: get: tags: - Payments summary: List transfers for a payment operationId: getTransactionChildren parameters: - name: id in: path required: true schema: type: string format: uuid responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Transaction' /api/latest/data/transactions: get: tags: - Payments summary: List payments operationId: listTransactions parameters: - name: search in: query schema: type: string - name: sort in: query schema: type: string - name: page in: query schema: type: integer format: int32 default: 0 - name: size in: query schema: type: integer format: int32 default: 300 responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/TransferSummaryRest' /api/latest/data/billing-schedules/{id}: patch: tags: - Payments summary: 'Update a billing schedule ' operationId: updateBillingSchedule parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/BillingScheduleRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BillingSchedule' components: schemas: ExternalSource: required: - sourceId - sourceType type: object properties: sourceType: type: string enum: - manual - close - plaid - stripe - hubspot - salesforce - avalara - quickbooks - profitwell - netsuite - google - warmly - zapier - cacheflow_checkout sourceId: type: string sourceLink: type: string TransferSummaryRest: type: object properties: id: type: string format: uuid currency: type: string amount: type: integer format: int64 status: type: string enum: - pending - in_progress - failed - posted - cancelled - declined - reversed - receiver_pending - receiver_posted processor: type: string enum: - plaid - stripe - manual type: type: string enum: - DEBIT - CREDIT paymentMethod: $ref: '#/components/schemas/PaymentMethod' category: type: string enum: - FEE - PAYMENT - PAYOUT - REFUND - ADJUSTMENT referenceId: type: string format: uuid deprecated: true createdAt: type: string format: date-time referenceType: type: string deprecated: true enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user processedAt: type: string format: date-time fromAccount: $ref: '#/components/schemas/Account' altReferenceId: type: string format: uuid toAccount: $ref: '#/components/schemas/Account' statementDate: type: string format: date companyName: type: string invoiceNumber: type: string amountFormatted: type: string BillingScheduleRequest: required: - externalInvoiced type: object properties: externalInvoiced: type: boolean Address: type: object properties: id: type: string format: uuid createdAt: type: string format: date-time readOnly: true createdBy: type: string updatedAt: type: string format: date-time readOnly: true updatedBy: type: string readOnly: true name: type: string type: type: string streetAddress: type: string subAddress: type: string otherAddress: type: string city: type: string region: type: string regionIso: type: string postalCode: type: string country: type: string countryIso: type: string verifiedAt: type: string format: date-time ObjectReference: type: object properties: referenceType: type: string enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user id: type: string format: uuid uri: type: string name: type: string type: type: string writeOnly: true enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user SyncEvent: type: object properties: createdAt: type: string format: date-time referenceType: type: string enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user referenceId: type: string format: uuid direction: type: string enum: - to_cacheflow - from_cacheflow eventType: type: string enum: - auth - created - updated - deleted action: type: string enum: - create - update - delete - upsert - noop externalSource: $ref: '#/components/schemas/ExternalSource' status: type: string enum: - success - error error: type: string source: type: string deprecated: true enum: - manual - close - plaid - stripe - hubspot - salesforce - avalara - quickbooks - profitwell - netsuite - google - warmly - zapier - cacheflow_checkout externalId: type: string deprecated: true externalIdLink: type: string deprecated: true Transfer: required: - amount - currency type: object properties: id: type: string format: uuid createdAt: type: string format: date-time readOnly: true createdBy: type: string updatedAt: type: string format: date-time readOnly: true updatedBy: type: string readOnly: true processedAt: type: string format: date-time externalId: type: string currency: type: string amount: type: integer format: int64 paidAmount: type: integer format: int64 fromAccount: $ref: '#/components/schemas/Account' referenceTransferId: type: string format: uuid fromAccountId: type: string format: uuid writeOnly: true toAccount: $ref: '#/components/schemas/Account' toAccountId: type: string format: uuid writeOnly: true reason: type: string parentReferenceId: type: string format: uuid parentReferenceType: type: string enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user status: type: string enum: - pending - in_progress - failed - posted - cancelled - declined - reversed - receiver_pending - receiver_posted type: type: string enum: - DEBIT - CREDIT processor: type: string enum: - plaid - stripe - manual paymentType: type: string deprecated: true enum: - ach - cc - check - custom - direct_debit - wire - external - manual category: type: string enum: - FEE - PAYMENT - PAYOUT - REFUND - ADJUSTMENT reasonCode: type: string enum: - invalid_account - insufficient_funds - flagged_account - region_not_supported - invalid_address - requires_buyer_approval - transaction_failure paymentMethod: $ref: '#/components/schemas/PaymentMethod' achType: type: string enum: - arc - cbr - ccd - cie - cor - ctx - iat - mte - pbr - pop - pos - ppd - rck - tel - web failures: type: integer format: int32 retryAt: type: string format: date-time referenceNumber: type: string referenceType: type: string enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user paidAmountFormatted: type: string amountFormatted: type: string deleted: type: boolean BillingSchedule: required: - amountDue - amountWithoutTax - billingItems - contract - createdAt - currency - dueDate - externalInvoiced - id - issueDate - scheduleDate - updatedAt - usageEntryActive type: object properties: id: type: string format: uuid createdAt: type: string format: date-time createdBy: type: string updatedAt: type: string format: date-time updatedBy: type: string sources: type: array items: $ref: '#/components/schemas/ExternalSource' scheduleDate: type: string format: date currency: type: string amountDue: type: integer format: int64 amountWithoutTax: type: integer format: int64 taxAmount: type: integer format: int64 dueDate: type: string format: date issueDate: type: string format: date invoiceDate: type: string format: date invoiceStatus: type: string enum: - draft - open - paid - past_due - voided statementSentAt: type: string format: date-time billingItems: type: array items: $ref: '#/components/schemas/BillingItem' invoiceId: type: string format: uuid transferStatus: type: string enum: - pending - in_progress - failed - posted - cancelled - declined - reversed - receiver_pending - receiver_posted transfer: $ref: '#/components/schemas/Transfer' contract: $ref: '#/components/schemas/ObjectReference' usageEntryStartTime: type: string format: date-time usageEntryEndTime: type: string format: date-time usageEntryActive: type: boolean externalInvoiced: type: boolean lastSyncEvent: $ref: '#/components/schemas/SyncEvent' source: type: string deprecated: true enum: - manual - close - plaid - stripe - hubspot - salesforce - avalara - quickbooks - profitwell - netsuite - google - warmly - zapier - cacheflow_checkout externalId: type: string deprecated: true amountDueFormatted: type: string amountWithoutTaxFormatted: type: string taxAmountFormatted: type: string externalLink: type: string deprecated: true sourceDisplayId: type: string deprecated: true BillingItem: required: - amountDue - amountDueFormatted - amountWithoutTax - amountWithoutTaxFormatted - createdAt - currency - id - itemId - product - serviceEndDate - serviceStartDate - updatedAt type: object properties: id: type: string format: uuid createdAt: type: string format: date-time createdBy: type: string updatedAt: type: string format: date-time updatedBy: type: string serviceStartDate: type: string format: date serviceEndDate: type: string format: date currency: type: string amountDue: type: integer format: int64 amountDueFormatted: type: string amountWithoutTax: type: integer format: int64 amountWithoutTaxFormatted: type: string taxAmount: type: integer format: int64 taxAmountFormatted: type: string product: $ref: '#/components/schemas/ObjectReference' itemId: type: string format: uuid name: type: string description: type: string descriptionText: type: string bundle: $ref: '#/components/schemas/ObjectReference' bundleName: type: string bundleDescription: type: string bundleDescriptionText: type: string bundleQuantity: type: number quantity: type: number proration: type: integer format: int32 latestProductUsage: $ref: '#/components/schemas/ProductUsage' displayQuantityOnInvoicePdf: type: boolean ProductUsage: required: - currency type: object properties: id: type: string format: uuid createdAt: type: string format: date-time readOnly: true createdBy: type: string updatedAt: type: string format: date-time readOnly: true updatedBy: type: string readOnly: true billingItemId: type: string format: uuid quantity: type: number amount: type: integer format: int64 currency: type: string amountFormatted: type: string PaymentMethod: type: object properties: id: type: string format: uuid createdAt: type: string format: date-time readOnly: true createdBy: type: string updatedAt: type: string format: date-time readOnly: true updatedBy: type: string readOnly: true name: type: string internalName: type: string description: type: string enabled: type: boolean configured: type: boolean managed: type: boolean billingPeriods: type: array items: type: string enum: - month - quarter - halfyear - year account: $ref: '#/components/schemas/Account' accountId: type: string format: uuid paymentType: type: string enum: - ach - cc - check - custom - direct_debit - wire - external - manual customText: type: string configuration: type: object additionalProperties: type: object processor: type: string enum: - plaid - stripe - manual activePaymentMethod: type: boolean referenceType: type: string enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user deleted: type: boolean Account: type: object properties: id: type: string format: uuid createdAt: type: string format: date-time readOnly: true createdBy: type: string updatedAt: type: string format: date-time readOnly: true updatedBy: type: string readOnly: true address: $ref: '#/components/schemas/Address' institutionName: type: string name: type: string type: type: string enum: - depository - credit - manual - external subtype: type: string mask: type: string legalName: type: string currency: type: string ownerType: type: string routingNumber: type: string accountNumber: type: string wireNumber: type: string expMonth: type: integer format: int32 expYear: type: integer format: int32 cvv: type: integer format: int32 bic: type: string iban: type: string sortCode: type: string institutionNumber: type: string transitNumber: type: string verificationLink: type: string mandateId: type: string Transaction: type: object properties: id: type: string format: uuid createdAt: type: string format: date-time processedAt: type: string format: date-time currency: type: string amount: type: integer format: int64 status: type: string enum: - pending - in_progress - failed - posted - cancelled - declined - reversed - receiver_pending - receiver_posted type: type: string enum: - DEBIT - CREDIT processor: type: string enum: - plaid - stripe - manual fromAccount: $ref: '#/components/schemas/Account' toAccount: $ref: '#/components/schemas/Account' paymentMethod: $ref: '#/components/schemas/PaymentMethod' reason: type: string referenceId: type: string format: uuid deprecated: true altReferenceId: type: string format: uuid deprecated: true referenceType: type: string deprecated: true enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user statementDate: type: string format: date toName: type: string fromName: type: string parentId: type: string format: uuid category: type: string enum: - FEE - PAYMENT - PAYOUT - REFUND - ADJUSTMENT referenceNumber: type: string externalId: type: string amountFormatted: type: string