Discover supported capabilities
Read the customer’s current options withGET /v3/customers/{customerId}/capabilities/supported:
directions, method, and accountType. Continue only when availability is available or beta and eligibility.eligible is true. If institutions are returned, select only an ID from that response.
Store the selected data[].id as CAPABILITY_ID. Never copy a capability ID from another customer or environment.
Pooled vs named account types
Bank capabilities come in two variants, encoded as theaccountType field and the capability ID suffix (for example ach_pooled, wire_named):
pooled: shared Swipelux bank account. Each pay-in uses a unique reference to route funds. Pick this for one-time transfers.named: dedicated bank details for the customer (virtual IBAN, dedicated ACH account). Reusable and shareable with any payer. Required for issued bank accounts.
pooled. Use named only when the customer needs reusable bank details. Check the supported response for which variants are available.
Request the capability
Request the selected option withPOST /v3/customers/{customerId}/capabilities/{capabilityId}:
institutions array only when you need to select from IDs returned by the supported-capability response.
Store data.status as CAPABILITY_STATUS, data.accountProvisioning as ACCOUNT_PROVISIONING_STATUS, data.openTaskIds as OPEN_TASK_IDS, and each data.applications[].id in APPLICATION_IDS.
Complete current tasks
List tasks withGET /v3/customers/{customerId}/tasks, select IDs from OPEN_TASK_IDS, then read each current task with GET /v3/customers/{customerId}/tasks/{taskId}:
data.revision and data.requirements. Refetch the task immediately before submitting if either may have changed.
Every open task includes a dueAt timestamp. When Swipelux authors a task without an explicit due date, dueAt defaults to exactly 31 days after the task’s createdAt. Treat dueAt as informational: you cannot set it through the API, and it does not trigger an automatic lifecycle transition. Only the separate deadline field, when present, causes an automatic transition.
Hosted actions
In the task-detail response, each entry inverificationSessions and tosSessions includes an action object. Task-list responses do not include these action links. Store each session id, then read action.kind before dispatching the customer; do not infer link availability from session status.
action.kind: "available"includesaction.urlandaction.expiresAt(currently alwaysnull). Storeaction.url, send the customer to it, then read the task again. The session-levelurlandexpiresAtfields contain the same values.action.kind: "unavailable"means no link should be presented. The session-levelurlandexpiresAtfields are absent. A session’sstatusalone does not determine which action kind you receive.
Upload documents
When a requirement requests a document, upload it withPOST /v3/customers/{customerId}/documents:
data.id as DOCUMENT_ID before submitting the answer that references it.
API answers
Submit one complete answer set for the current revision withPOST /v3/customers/{customerId}/tasks/{taskId}/submissions:
Beneficial-owner prerequisite for businesses
Requesting a business capability that needs beneficial-owner evidence succeeds even when the customer has no qualifying owner yet. The capability is created asrestricted with statusReason.code: tasks_due, and the business intake task requests the missing ownership facts, including the ownership structure.
The same task carries a resource_reference requirement whose request includes qualification: "beneficial_owner":
person party of the same customer with ownership.declared: true or a supplied ownership percentage of at least 25.
The requirement is derived from the current related-party roster, so you usually do not answer it directly:
- Creating or updating a qualifying related party meets the requirement in the same reevaluation and opens that owner’s own profile and document work. See Add business related parties.
- You can also reference a qualifying party explicitly with a
resource_referenceanswer that carries itsrelatedPartyId. - The requirement stays listed in the current task after it is met. When no other obligation remains open, the task becomes
satisfied. - Archiving the last qualifying party, or removing the facts that qualified it, reopens the requirement, even after the task was
satisfied.
Continue when the capability is ready
Read the capability again withGET /v3/customers/{customerId}/capabilities/{capabilityId}:
status reports whether the entitlement is approved. For a capability that issues an account, accountProvisioning separately reports whether that account is not_started, in_progress, issued, or failed; a capability that does not issue an account returns not_applicable.
Continue only when the current capability status permits the account, quote, or transfer you intend to create. When the flow needs an issued account, also wait for accountProvisioning to become issued.
Next, choose the matching journey in Common flows.