arazzo: 1.0.1
info:
title: Stripe Invoice and Collect
summary: Draft an invoice, add an item, finalize it, then charge it immediately.
description: >-
The full closed-loop invoicing pattern that bills and collects in one flow.
The workflow creates a draft Invoice, attaches an invoice item, finalizes the
invoice, then pays it using the customer's default payment method. Every step
spells out its form-encoded 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.30
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.30
capability_name: Accounts Receivable Management
spec: stripe-finalize-api-openapi.yml
confidence: 0.7
model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: finalizeApi
url: ../openapi/stripe-finalize-api-openapi.yml
type: openapi
- name: invoiceApi
url: ../openapi/stripe-invoice-api-openapi.yml
type: openapi
- name: postApi
url: ../openapi/stripe-post-api-openapi.yml
type: openapi
workflows:
- workflowId: invoice-and-collect
summary: Create, populate, finalize, and pay an invoice end to end.
description: >-
Creates a draft Invoice for a customer, adds a one-off invoice item,
finalizes the invoice, then immediately pays it to collect funds.
inputs:
type: object
required:
- customer
- amount
- currency
properties:
customer:
type: string
description: ID of the customer to invoice and charge.
amount:
type: integer
description: Line item amount in the smallest currency unit.
currency:
type: string
description: Three-letter ISO currency code.
description:
type: string
description: Optional description for the invoice item.
steps:
- stepId: createDraftInvoice
description: Create a draft Invoice for the customer.
operationId: postInvoices
requestBody:
contentType: application/x-www-form-urlencoded
payload:
customer: $inputs.customer
auto_advance: false
successCriteria:
- condition: $statusCode == 200
outputs:
invoiceId: $response.body#/id
- stepId: addInvoiceItem
description: Attach a one-off invoice item to the draft invoice.
operationId: postInvoice Items
requestBody:
contentType: application/x-www-form-urlencoded
payload:
customer: $inputs.customer
invoice: $steps.createDraftInvoice.outputs.invoiceId
amount: $inputs.amount
currency: $inputs.currency
description: $inputs.description
successCriteria:
- condition: $statusCode == 200
outputs:
invoiceItemId: $response.body#/id
- stepId: finalizeInvoice
description: Finalize the invoice so it can be paid.
operationId: postInvoicesInvoiceFinalize
parameters:
- name: invoice
in: path
value: $steps.createDraftInvoice.outputs.invoiceId
successCriteria:
- condition: $statusCode == 200
outputs:
status: $response.body#/status
- stepId: payInvoice
description: Pay the finalized invoice to collect funds from the customer.
operationId: postInvoicesInvoicePay
parameters:
- name: invoice
in: path
value: $steps.createDraftInvoice.outputs.invoiceId
successCriteria:
- condition: $statusCode == 200
outputs:
status: $response.body#/status
paid: $response.body#/paid
outputs:
invoiceId: $steps.createDraftInvoice.outputs.invoiceId
status: $steps.payInvoice.outputs.status
paid: $steps.payInvoice.outputs.paid
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.