Transfers Guide
Overview
The SYSTEM transfer domain spans two related surfaces in this repo: provider-side creation through slash-payment and internal/admin transfer-order tracking through the transfer endpoints. That split matters because transfer creation and transfer status inspection do not currently live under the same published path family.
What This Domain Covers
- creating a transfer against a Slash connection
- storing the returned business or provider identifiers
- querying transfer orders by business ID
- polling completion state
- inspecting workspace transfer history
Common Prerequisites
Authorization: Bearer <accessToken>X-PORTAL-ACCESS-CODE: <system-portal-code>- workspace and connection context
- knowledge of whether the product uses provider IDs, internal transfer
bizIdvalues, or both
Shared Headers
bash
X-PORTAL-ACCESS-CODE: <system-portal-code>
Authorization: Bearer <accessToken>
Content-Type: application/jsonPublished Endpoint Families
Transfer creation
POST /web/v1/slash/connections/{connectionBizId}/transfers
Internal transfer-order tracking
GET /web/v1/admin/transfer/query/orders/{bizId}GET /web/v1/admin/transfer/query/orders/{bizId}/completedGET /web/v1/admin/transfer/query/orders/workspace/{workspaceId}
Transfer Status Lifecycle
Use the transfer constants as the canonical status vocabulary:
PENDINGPROCESSINGCOMPLETEDFAILED
The create endpoint may expose provider-native lowercase states such as pending, while the admin transfer-order endpoints expose internal status codes and names.
Typical Developer Sequence
- create the transfer against the provider connection
- store the returned identifier immediately
- if the transfer is mirrored into the internal transfer ledger, query the transfer-order
bizId - poll the lightweight completion endpoint until the transfer is terminal
- fall back to the workspace transfer list for reconciliation or troubleshooting
Decision Points
- whether the caller needs immediate provider confirmation only or internal ledger reconciliation as well
- whether a transfer is tracked by external transaction ID, internal
bizId, or both - whether polling should use the lightweight completion endpoint or the full transfer-order fetch
- whether failures should route into retry UX or operator reconciliation
Error Handling
- a
4000on create usually means the provider payload is invalid - a
4040on admin lookup means thebizIdis wrong or the order has not yet been materialized into the internal transfer ledger - treat
FAILEDand provider-specific failure reasons as user-visible terminal states - the workspace list endpoint is useful for backfill and audit even when direct
bizIdlookup is unavailable