Intuit · Arazzo Workflow

Intuit Create and Void Invoice

Version 1.0.0

Create an invoice and void it, carrying the SyncToken forward.

1 workflow 1 source API 1 provider
View Spec View on GitHub AccountingCustom FieldsFinancialFinancial ServicesInvoicingPaymentsPayrollProject ManagementSales TaxSmall BusinessTaxTax PreparationTaxesTime TrackingArazzoWorkflows

Provider

intuit

Workflows

create-and-void-invoice
Create an invoice then void it using its returned SyncToken.
Creates an Invoice and voids it, passing the captured Id and SyncToken plus the operation=void parameter the void endpoint requires.
2 steps inputs: accessToken, customerId, lineAmount outputs: invoiceId, voidedId
1
createInvoice
createInvoice
Create the invoice that will be voided.
2
voidInvoice
voidInvoice
Void the invoice using its Id, SyncToken, and the operation parameter.

Source API Descriptions

Arazzo Workflow Specification

intuit-create-and-void-invoice-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Intuit Create and Void Invoice
  summary: Create an invoice and void it, carrying the SyncToken forward.
  description: >-
    Demonstrates a safe correction path. The workflow creates an Invoice,
    captures the Id and SyncToken returned by QuickBooks, and then voids the
    invoice by replaying that Id and SyncToken in the void request body together
    with the required operation=void query parameter. The invoice remains in the
    ledger with a voided status. Every step spells out its request inline so the
    flow can be read and executed without opening the underlying OpenAPI
    description.
  version: 1.0.0
sourceDescriptions:
- name: quickbooksAccounting
  url: ../openapi/quickbooks-accounting.yml
  type: openapi
workflows:
- workflowId: create-and-void-invoice
  summary: Create an invoice then void it using its returned SyncToken.
  description: >-
    Creates an Invoice and voids it, passing the captured Id and SyncToken plus
    the operation=void parameter the void endpoint requires.
  inputs:
    type: object
    required:
    - accessToken
    - customerId
    - lineAmount
    properties:
      accessToken:
        type: string
        description: OAuth 2.0 bearer access token for the QuickBooks company.
      customerId:
        type: string
        description: Id of the customer to invoice.
      lineAmount:
        type: number
        description: Amount of the single invoice line item.
  steps:
  - stepId: createInvoice
    description: Create the invoice that will be voided.
    operationId: createInvoice
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    requestBody:
      contentType: application/json
      payload:
        CustomerRef:
          value: $inputs.customerId
        Line:
        - Amount: $inputs.lineAmount
          DetailType: SalesItemLineDetail
          Description: Services rendered
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      invoiceId: $response.body#/Invoice/Id
      syncToken: $response.body#/Invoice/SyncToken
  - stepId: voidInvoice
    description: Void the invoice using its Id, SyncToken, and the operation parameter.
    operationId: voidInvoice
    parameters:
    - name: invoiceId
      in: path
      value: $steps.createInvoice.outputs.invoiceId
    - name: operation
      in: query
      value: void
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    requestBody:
      contentType: application/json
      payload:
        Id: $steps.createInvoice.outputs.invoiceId
        SyncToken: $steps.createInvoice.outputs.syncToken
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      voidedId: $response.body#/Invoice/Id
      privateNote: $response.body#/Invoice/PrivateNote
  outputs:
    invoiceId: $steps.createInvoice.outputs.invoiceId
    voidedId: $steps.voidInvoice.outputs.voidedId