Merge · Arazzo Workflow

Merge Accounting Bill a Customer

Version 1.0.0

Create a customer contact, raise an invoice against that contact, and confirm the invoice.

1 workflow 2 source APIs 1 provider
View Spec View on GitHub IntegrationPlatformUnified-APIAgent HandlerLLM GatewayArazzoWorkflows

Provider

merge

Workflows

create-contact-and-invoice
Create a customer contact and raise an invoice against it.
Creates a customer contact, raises an invoice referencing that contact, and confirms the invoice.
3 steps inputs: accountToken, authorization, contactName, dueDate, emailAddress, invoiceType, issueDate, memo, number, totalAmount outputs: contactId, invoiceId
1
createContact
{$sourceDescriptions.subpackageContactsApi.url}#/paths/~1accounting~1v1~1contacts/post
Create the contact and flag it as a customer.
2
createInvoice
{$sourceDescriptions.subpackageInvoicesApi.url}#/paths/~1accounting~1v1~1invoices/post
Raise an invoice against the newly created contact.
3
confirmInvoice
{$sourceDescriptions.subpackageInvoicesApi.url}#/paths/~1accounting~1v1~1invoices~1{id}/get
Read the created invoice back to confirm it was persisted against the contact.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Merge Accounting Bill a Customer
  summary: Create a customer contact, raise an invoice against that contact, and confirm the invoice.
  description: >-
    A core accounting write pattern for billing a customer. The workflow
    creates a contact flagged as a customer, raises an invoice of type
    ACCOUNTS_RECEIVABLE against that contact, and then reads the invoice back to
    confirm it was persisted. 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
  x-realizes-capability-ids:
  - BC-200
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-200
      capability_name: Financial Management
      spec: merge-subpackage-invoices-api-openapi.yml
      confidence: 0.85
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: subpackageContactsApi
  url: ../openapi/merge-subpackage-contacts-api-openapi.yml
  type: openapi
- name: subpackageInvoicesApi
  url: ../openapi/merge-subpackage-invoices-api-openapi.yml
  type: openapi
workflows:
- workflowId: create-contact-and-invoice
  summary: Create a customer contact and raise an invoice against it.
  description: >-
    Creates a customer contact, raises an invoice referencing that contact, and
    confirms the invoice.
  inputs:
    type: object
    required:
    - authorization
    - accountToken
    - contactName
    - invoiceType
    - totalAmount
    properties:
      authorization:
        type: string
        description: Production access token with the required "Bearer " prefix.
      accountToken:
        type: string
        description: The account token identifying the linked accounting end user.
      contactName:
        type: string
        description: The name of the contact (customer) to create.
      emailAddress:
        type: string
        description: The contact's email address.
      invoiceType:
        type: string
        description: The invoice type, e.g. ACCOUNTS_RECEIVABLE or ACCOUNTS_PAYABLE.
      number:
        type: string
        description: The invoice number.
      issueDate:
        type: string
        description: The invoice issue date (ISO 8601).
      dueDate:
        type: string
        description: The invoice due date (ISO 8601).
      totalAmount:
        type: number
        description: The total amount of the invoice.
      memo:
        type: string
        description: An optional memo for the invoice.
  steps:
  - stepId: createContact
    description: >-
      Create the contact and flag it as a customer.
    operationPath: '{$sourceDescriptions.subpackageContactsApi.url}#/paths/~1accounting~1v1~1contacts/post'
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: X-Account-Token
      in: header
      value: $inputs.accountToken
    requestBody:
      contentType: application/json
      payload:
        model:
          name: $inputs.contactName
          email_address: $inputs.emailAddress
          is_customer: true
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      contactId: $response.body#/model/id
  - stepId: createInvoice
    description: >-
      Raise an invoice against the newly created contact.
    operationPath: '{$sourceDescriptions.subpackageInvoicesApi.url}#/paths/~1accounting~1v1~1invoices/post'
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: X-Account-Token
      in: header
      value: $inputs.accountToken
    requestBody:
      contentType: application/json
      payload:
        model:
          type: $inputs.invoiceType
          contact: $steps.createContact.outputs.contactId
          number: $inputs.number
          issue_date: $inputs.issueDate
          due_date: $inputs.dueDate
          total_amount: $inputs.totalAmount
          memo: $inputs.memo
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      invoiceId: $response.body#/model/id
  - stepId: confirmInvoice
    description: >-
      Read the created invoice back to confirm it was persisted against the
      contact.
    operationPath: '{$sourceDescriptions.subpackageInvoicesApi.url}#/paths/~1accounting~1v1~1invoices~1{id}/get'
    parameters:
    - name: id
      in: path
      value: $steps.createInvoice.outputs.invoiceId
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: X-Account-Token
      in: header
      value: $inputs.accountToken
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      invoiceId: $response.body#/id
      totalAmount: $response.body#/total_amount
      contact: $response.body#/contact
  outputs:
    contactId: $steps.createContact.outputs.contactId
    invoiceId: $steps.confirmInvoice.outputs.invoiceId

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • 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.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/merge-accounting-create-contact-and-invoice-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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.