Switstack · Arazzo Workflow
Take a Switcloud payment and reconcile it
Version 1.0.0
The backend half of a Switcloud card-present transaction: authenticate as a basic/machine user, create a Payment against a POI and POIConfig, wait for the on-device leg, then read the completed transaction and its log data set. Every operationId is verified verbatim against openapi/switstack-switcloud-openapi.yml.
View Spec
View on GitHub
CompanyFintech InsurtechPaymentsEMVemv-level-2Card PresentPoint-of-SaleSoftPOSTap to PayPayment TerminalsIn-Store Paymentspci-mpoccertification-testingRetail Paymentsestate-managementArazzoWorkflows
Provider
Workflows
take-a-payment
Create a Payment, poll to COMPLETED, then retrieve the transaction and its diagnostics.
Requires a BASIC or MACHINE user — an Organization Admin cannot create payments. The card interaction itself is not callable over HTTP: it runs on the device through the Switcloud Client SDK using the payment_id this workflow produces, and step `await-completion` stands in for that wait.
1
authenticate
client_credentials grant for a machine user. The docs also allow the password grant; either yields a bearer token valid for 3600 seconds.
2
create-payment
poi_id and poi_config_id are both required. NOT IDEMPOTENT — no Idempotency-Key parameter exists on this API, so a lost response must be reconciled with list_payments rather than retried.
3
await-completion
Poll until state is COMPLETED. There is no webhook, callback or event surface on this API, so polling is the only option — back off, because no rate limits are published. The device application should also notify your backend directly, which is the faster path.
4
read-transaction
Check BOTH state and outcome_status. A declined transaction arrives as HTTP 200 with outcome_status DECLINED; TRY_ANOTHER_INTERFACE and TRY_AGAIN are re-present instructions, not errors. trd, authorization and completion are EMV TLV blobs for the acquirer/gateway.
5
read-log-data-set
The transaction-level diagnostic surface: meta_data, telemetry, config, trd, all_tags, apdus, trace and signals. This is where an EMV failure is actually explained. Swittest's parse_tlv / parse_tag will name the tags.
reconcile-payments-for-a-terminal
Page through a terminal's payments filtered by outcome, for reconciliation.
1
authenticate
2
list-payments
Page-number paging: the response envelope is {items, total, page, size, pages}. There is no cursor and no Link header — compute the next request from `pages`.
Source API Descriptions
openapi
Arazzo Workflow Specification
Work with this as data
Every workflow here is available over the APIs.io API and to AI agents over MCP.