Fulcrumpro Invoice API
The Invoice API from Fulcrumpro — 3 operation(s) for invoice.
The Invoice API from Fulcrumpro — 3 operation(s) for invoice.
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/fulcrumpro:fulcrumpro-invoice-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: Fulcrum Public Invoice API
version: v1
servers:
- url: https://api.fulcrumpro.com
tags:
- name: Invoice
paths:
/api/invoices/{invoiceId}:
get:
tags:
- Invoice
summary: Get a specific invoice
operationId: GetInvoice
parameters:
- name: invoiceId
in: path
required: true
schema:
maxLength: 24
minLength: 24
type: string
responses:
'200':
description: The invoice for the given id
content:
application/json:
schema:
$ref: '#/components/schemas/InvoiceDto'
application/problem+json:
schema:
$ref: '#/components/schemas/InvoiceDto'
'404':
description: Invoice did not exist
x-c4-exposed: true
x-c4-required-permissions:
- Invoicing-Invoicing-View Invoices
patch:
tags:
- Invoice
summary: Partially update an invoice
operationId: PatchInvoice
parameters:
- name: invoiceId
in: path
required: true
schema:
maxLength: 24
minLength: 24
type: string
requestBody:
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/JsonPatchDocument'
responses:
'200':
description: Invoice item
content:
application/json:
schema:
$ref: '#/components/schemas/InvoiceDto'
application/problem+json:
schema:
$ref: '#/components/schemas/InvoiceDto'
'400':
description: The patch document is malformed — an unknown path, an unsupported operation, or a value the target field cannot hold
'404':
description: Invoice did not exist
x-c4-exposed: true
x-c4-mutation: true
x-c4-required-permissions:
- Invoicing-Invoicing-Edit Invoices
put:
tags:
- Invoice
summary: Update an invoice
operationId: UpdateInvoice
parameters:
- name: invoiceId
in: path
required: true
schema:
maxLength: 24
minLength: 24
type: string
requestBody:
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/InvoiceUpdateDto'
application/json:
schema:
$ref: '#/components/schemas/InvoiceUpdateDto'
text/json:
schema:
$ref: '#/components/schemas/InvoiceUpdateDto'
application/*+json:
schema:
$ref: '#/components/schemas/InvoiceUpdateDto'
required: true
responses:
'200':
description: Invoice item
content:
application/json:
schema:
$ref: '#/components/schemas/InvoiceDto'
application/problem+json:
schema:
$ref: '#/components/schemas/InvoiceDto'
'404':
description: Invoice did not exist
/api/invoices/{invoiceId}/pdf:
get:
tags:
- Invoice
summary: Download the PDF for an invoice
description: 'The document is rendered when you call this, from the
invoice''s current state and the tenant''s PDFs & Emails settings, so it is the same document
the product''s Download button produces rather than a stored copy of one sent earlier. The date
format on the rendered document is presentational and is not part of this contract — read
dates from the invoice''s JSON representation rather than parsing them out of the PDF.'
operationId: GetInvoicePdf
parameters:
- name: invoiceId
in: path
required: true
schema:
maxLength: 24
minLength: 24
type: string
responses:
'200':
description: The invoice PDF
content:
application/pdf:
schema:
type: string
format: binary
'404':
description: No invoice with that id, or the invoice is deleted
'500':
description: The renderer did not produce a usable document
x-c4-exposed: true
x-c4-required-permissions:
- Invoicing-Invoicing-View Invoices
/api/invoices/list:
post:
tags:
- Invoice
summary: Find invoices based on search parameters
operationId: ListInvoice
parameters:
- name: Sort.Field
in: query
description: Sort field
schema:
minLength: 1
type: string
- name: Sort.Dir
in: query
description: Sort direction
schema:
$ref: '#/components/schemas/CommonEnumSortDirectionEnum'
- name: Skip
in: query
description: 'Number of records to skip. Defaults to 0. Combine with FulcrumProduct.PublicApi.Dto.Common.PagingDto.Take to page
through a result set larger than one page.'
schema:
minimum: 0
type: integer
format: int32
- name: Take
in: query
description: 'Number of records to return. Validation accepts 0 through 5000, but `0` is not a
page size and what an endpoint does with it varies, so send a value from 1 to 5000.
Two cases differ. A request that supplies paging but leaves this field out takes this
field''s default of <b>50</b>. A request that supplies no paging at all is
endpoint-specific — some define their own fallback — so it does not reliably mean any
particular number of records. Either way the response says nothing about records it
did not return, so send this explicitly whenever the size of the answer matters.
Endpoints returning a paged envelope report `totalCount` and `hasNextPage`
alongside the records; endpoints returning a bare array report neither, so page those
with FulcrumProduct.PublicApi.Dto.Common.PagingDto.Skip until a page comes back shorter than the value requested.'
schema:
maximum: 5000
minimum: 0
type: integer
format: int32
requestBody:
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/InvoiceRequestFindParameters'
application/json:
schema:
$ref: '#/components/schemas/InvoiceRequestFindParameters'
text/json:
schema:
$ref: '#/components/schemas/InvoiceRequestFindParameters'
application/*+json:
schema:
$ref: '#/components/schemas/InvoiceRequestFindParameters'
responses:
'200':
description: List of invoices matching the filters
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/InvoiceDto'
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/InvoiceDto'
x-c4-exposed: true
x-c4-required-permissions:
- Invoicing-Invoicing-View Invoices
/api/invoices/{invoiceId}/status:
post:
tags:
- Invoice
summary: Update an invoice status
operationId: StatusUpdateInvoice
parameters:
- name: invoiceId
in: path
required: true
schema:
maxLength: 24
minLength: 24
type: string
requestBody:
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/InvoiceRequestUpdateStatus'
application/json:
schema:
$ref: '#/components/schemas/InvoiceRequestUpdateStatus'
text/json:
schema:
$ref: '#/components/schemas/InvoiceRequestUpdateStatus'
application/*+json:
schema:
$ref: '#/components/schemas/InvoiceRequestUpdateStatus'
required: true
responses:
'200':
description: Success
'400':
description: Invoice cannot be moved to requested status
'404':
description: Invoice did not exist
x-c4-exposed: true
x-c4-mutation: true
x-c4-required-permissions:
- Invoicing-Invoicing-Edit Invoices
components:
schemas:
CommonReferenceDto:
type: object
properties:
id:
maxLength: 24
minLength: 24
type:
- string
- 'null'
description: Unique Id associated to the referenced object
name:
maxLength: 200
minLength: 1
type:
- string
- 'null'
description: Descriptive name associated to the object
additionalProperties: false
description: Represents a reference to a document in a DB collection
InvoiceRequestFindParameters:
type: object
properties:
numbers:
maxItems: 500
minItems: 1
type:
- array
- 'null'
items:
type: integer
format: int32
description: Filter invoices to only given numbers
externalReference:
$ref: '#/components/schemas/CommonExternalReferenceFindDto'
status:
$ref: '#/components/schemas/InvoiceStatusEnum'
issueDateFrom:
type:
- string
- 'null'
description: 'Filter to invoices whose issue date falls on or after this date. The whole day is included, so
any time component is ignored.'
format: date-time
issueDateTo:
type:
- string
- 'null'
description: 'Filter to invoices whose issue date falls on or before this date. The whole day is included, so
an invoice issued later that same day still matches.'
format: date-time
additionalProperties: false
description: Parameters used for searching/finding invoices.
InvoiceUpdateDto:
type: object
properties:
externalReferences:
type:
- object
- 'null'
additionalProperties:
$ref: '#/components/schemas/CommonExternalReferenceDto'
description: Arbitrary key-value-pair like data that can be used to later on search for this line item.
additionalProperties: false
description: Represents an update on an invoice.
CommonEnumSortDirectionEnum:
enum:
- ascending
- descending
type: string
description: Specify sorting direction.
CommonExternalReferenceFindDto:
required:
- key
type: object
properties:
key:
maxLength: 50
minLength: 1
type: string
description: Specifies the group name (key) that this external reference originates from (e.g. an external application name)
type:
maxLength: 50
minLength: 0
type:
- string
- 'null'
description: Arbitrary sub-key that can be used to qualify the value
externalId:
maxLength: 500
minLength: 0
type:
- string
- 'null'
description: The external identifier
additionalProperties: false
description: Search parameter for identifier record(s) via their external identifiers.
InvoiceDto:
required:
- customerId
- id
- number
- status
- subtotal
- total
type: object
properties:
id:
maxLength: 24
minLength: 24
type: string
description: Unique id associated to this entity.
number:
minimum: 0
type: integer
description: Number
format: int32
status:
$ref: '#/components/schemas/InvoiceStatusEnum'
customerId:
maxLength: 24
minLength: 24
type: string
description: The id of the customer that the invoice is for. Please reference /api/customers endpoint.
currencyInfo:
$ref: '#/components/schemas/CurrencyInfoDto'
issueDate:
type:
- string
- 'null'
description: Invoice issued date indicates when the invoice was sent to the customer.
format: date-time
issuedByUserId:
type:
- string
- 'null'
description: 'The id of the user who first issued the invoice; a later re-issue does not replace it.
Null when the invoice has never been issued. Please reference /api/users endpoint.'
externalReferences:
type:
- object
- 'null'
additionalProperties:
$ref: '#/components/schemas/CommonExternalReferenceDto'
description: External references associated with this entity.
paymentTermsId:
maxLength: 24
minLength: 24
type:
- string
- 'null'
description: Payment terms key identifier. Please reference /api/payment-terms endpoint.
paymentTerms:
$ref: '#/components/schemas/CommonReferenceDto'
companyInfoId:
maxLength: 24
minLength: 24
type:
- string
- 'null'
description: Company Information Id;
salesOrderId:
maxLength: 24
minLength: 24
type:
- string
- 'null'
description: Sales order identifier. Please reference /api/sales-orders endpoint.
customerPONumber:
maxLength: 200
minLength: 1
type:
- string
- 'null'
description: Customer PO number.
dueDate:
type:
- string
- 'null'
description: Invoice due date.
format: date-time
total:
minimum: 0
type: number
description: The final amount due, calculated as the sum of all item costs, taxes, fees, and any discounts applied in primary currency.
format: double
subtotal:
minimum: 0
type: number
description: 'The sum of the line items this invoice bills, in primary currency, before tax, the discount,
the deposit adjustment, the progress-billing adjustment and any refund are applied. On a
deposit invoice this is the sum of its deposit lines.'
format: double
lineItemsTotal:
type: number
description: The summation of the line item amounts due.
format: double
notesToCustomer:
maxLength: 2000
minLength: 1
type:
- string
- 'null'
description: A field for the seller to provide additional details or instructions for the customer relating to the order.
billingAddress:
$ref: '#/components/schemas/CommonAddressDto'
customFields:
type:
- object
- 'null'
additionalProperties: {}
description: Custom fields that have been defined on this entity.
isDeposit:
type: boolean
description: Is deposit invoice
deleted:
type: boolean
description: Indicates whether this invoice has been deleted
additionalProperties: false
description: Represents an invoice
InvoiceRequestUpdateStatus:
required:
- status
type: object
properties:
status:
$ref: '#/components/schemas/InvoiceStatusEnum'
paidDate:
type:
- string
- 'null'
description: The date that the invoice was paid.
format: date-time
additionalProperties: false
description: Update an invoice status.
JsonPatchOperation:
type: object
properties:
op:
type: string
value: {}
path:
type: string
from:
type: string
description: Source path — present for move/copy operations, absent otherwise.
CommonAddressDto:
required:
- address1
- city
- postalCode
type: object
properties:
name:
maxLength: 200
minLength: 1
type:
- string
- 'null'
description: Name of the address (Bob's Shipping, Primary, Reno Warehouse, etc).
address1:
maxLength: 200
minLength: 1
type: string
description: Primary address line.
address2:
maxLength: 200
minLength: 1
type:
- string
- 'null'
description: Second address line.
address3:
maxLength: 200
minLength: 1
type:
- string
- 'null'
description: Third address line.
city:
maxLength: 200
minLength: 1
type: string
description: Address city
stateProvince:
maxLength: 200
minLength: 1
type:
- string
- 'null'
description: Address state/province.
postalCode:
maxLength: 200
minLength: 1
type: string
description: Postal/zip code.
country:
maxLength: 200
minLength: 1
type:
- string
- 'null'
description: Country identifier.
phone:
type:
- string
- 'null'
description: Phone number.
format: tel
email:
type:
- string
- 'null'
description: Email address
format: email
additionalProperties: false
description: Address definition
JsonPatchDocument:
type: array
items:
$ref: '#/components/schemas/JsonPatchOperation'
description: Array of operations to perform
CurrencyInfoDto:
required:
- documentCurrencyCode
- primaryCurrencyCode
type: object
properties:
documentCurrencyCode:
maxLength: 200
minLength: 1
type: string
description: Document Currency Code
primaryCurrencyCode:
maxLength: 200
minLength: 1
type: string
description: Primary Currency Code
additionalProperties: false
description: Currency Info Dto
InvoiceStatusEnum:
enum:
- new
- needsApproval
- approved
- issued
- paid
type: string
description: Invoice status
CommonExternalReferenceDto:
required:
- externalId
type: object
properties:
type:
maxLength: 50
minLength: 0
type:
- string
- 'null'
description: Specifies the type of this identifier.
externalId:
maxLength: 500
minLength: 0
type: string
description: The external identifier
displayId:
maxLength: 500
minLength: 0
type:
- string
- 'null'
description: 'The id/number that a human sees. For a quote, this might be ''Q1000''. If this is null, the display
will fall back to the ExternalId'
status:
type:
- string
- 'null'
description: A status for the external reference
url:
type:
- string
- 'null'
description: An external url for the reference
modifiedUtc:
type:
- string
- 'null'
description: Date the external reference was modified
format: date-time
lastSyncedUtc:
type:
- string
- 'null'
description: 'Date the external system last successfully synced this reference. Set by integrations
on successful sync only; null means never synced or that the sync timestamp isn''t
maintained by the integration.'
format: date-time
additionalProperties: false
description: The external reference for entities that implement FulcrumProduct.Domain.Common.IHasExternalReferences
securitySchemes:
bearer:
type: http
description: Your API bearer token generated in System Data > Advanced > Public API Setup
scheme: bearer
bearerFormat: JWT
x-tagGroups:
- name: Accounting Code
tags:
- Accounting Code
- name: Alert
tags:
- Alert
- name: Attachment
tags:
- Attachment
- Attachment Certification
- name: Auth
tags:
- Auth
- name: CAPAs
tags:
- CAPAs
- name: Change Order
tags:
- Change Order
- name: Chart Of Accounts
tags:
- Chart Of Accounts
- name: Company Info
tags:
- Company Info
- name: Custom Field
tags:
- Custom Field
- name: Customer
tags:
- Customer
- Customer Address
- Customer Contact
- name: Customer Tier
tags:
- Customer Tier
- name: Department
tags:
- Department
- name: Department Shift
tags:
- Department Shift
- name: Equipment
tags:
- Equipment
- name: Equipment Downtime
tags:
- Equipment Downtime
- name: Gauge Code
tags:
- Gauge Code
- name: Grade Code
tags:
- Grade Code
- name: InProcessTrackingFieldType
tags:
- InProcessTrackingFieldType
- name: Inventory
tags:
- Inventory
- name: Inventory Event
tags:
- Inventory Event
- Inventory Event Details
- name: Inventory Lot
tags:
- Inventory Lot
- name: Inventory Transactions
tags:
- Inventory Transactions
- name: Invoice
tags:
- Invoice
- Invoice Deposit Adjustment Line Item
- Invoice Deposit Line Item
- Invoice Discount Line Item
- Invoice Fee Line Item
- Invoice Line Item
- Invoice Note
- Invoice Part Line Item
- Invoice Refund Line Item
- Invoice Shipping Charge Line Item
- Invoice Tax Line Item
- name: Item
tags:
- Item
- Item Custom Fields
- Item Customer
- Item Material Vendor
- Item PriceBreaks
- Item Routing
- Item Vendor
- name: Item Category
tags:
- Item Category
- name: Item Class
tags:
- Item Class
- name: Item Tag
tags:
- Item Tag
- name: Job
tags:
- Job
- Job Custom Fields
- Job Full Routing
- Job Part Line Item Full Routing
- Job Item To Make
- Job Item To Make Operation
- Job Message
- Job Operation
- name: Job Tracking Timers
tags:
- Job Tracking Timers
- name: Location
tags:
- Location
- name: Material
tags:
- Material
- Material Vendor
- name: Material Code
tags:
- Material Code
- name: NCRs
tags:
- NCRs
- name: Nesting
tags:
- Nesting
- name: Note
tags:
- Note
- name: Operation
tags:
- Operation
- name: Payment Term
tags:
- Payment Term
- name: Purchase Order
tags:
- Purchase Order
- Purchase Order Custom Fields
- Purchase Order Discount Line Item
- Purchase Order Fee Line Item
- Purchase Order Line Item
- Purchase Order Outside Processing Line Item
- Purchase Order Part Line Item
- Purchase Order Tax Line Item
- Purchase Order Vendor Credit Line Item
- name: Quote
tags:
- Quote
- Quote Custom Fields
- Quote Discount Line Item
- Quote Fee Line Item
- Quote Part Line Item
- Quote Part Line Item Custom Fields
- Quote Part Line Item Full Routing
- Quote Tax Line Item
- name: Receiving
tags:
- Receiving Receipt
- Receiving Receipt Line Item
- name: Refund Reason Code
tags:
- Refund Reason Code
- name: Reporting
tags:
- Reporting
- name: Sales Order
tags:
- Sales Order
- Sales Order Blanket Line Item
- Sales Order Custom Fields
- Sales Order Discount Line Item
- Sales Order Fee Line Item
- Sales Order Line Item
- Sales Order Part Line Item
- Sales Order Part Line Item Custom Fields
- Sales Order Part Line Item Full Routing
- Sales Order Refund Line Item
- Sales Order Shipping Charge Line Item
- Sales Order Tax Line Item
- name: ScrapReport
tags:
- ScrapReport
- name: Settings
tags:
- Settings
- name: Shape Code
tags:
- Shape Code
- name: Shipment Line Items (V3)
tags:
- Shipment Line Items (V3)
- name: Shipment
tags:
- Shipment Custom Fields
- name: Shipments
tags:
- Shipments
- name: Shipping Method
tags:
- Shipping Method
- name: Tag
tags:
- Tag
- name: Task
tags:
- Task
- name: Tax Rate
tags:
- Tax Rate
- name: Time Clock Timers
tags:
- Time Clock Timers
- name: Timer
tags:
- Timer
- name: Tool
tags:
- Tool
- name: Tool Calibration
tags:
- Tool Calibration
- name: User
tags:
- User
- User Status
- name: Vendor
tags:
- Vendor
- Vendor Address
- Vendor Contact
- name: Work Order
tags:
- Work Order
- name: WorkCenter
tags:
- WorkCenter
x-provenance:
method: harvested
publisher: Fulcrumpro
source: https://api.fulcrumpro.com/swagger/v1/swagger.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)