Overview
The Transfers API moves funds between PWS accounts. You can send to a destination by account ID, username tag, or email. Same-asset transfers settle synchronously, while transfers held for compliance review progress asynchronously. Prerequisites:- Payward Services API credentials (see the Authentication guide)
- A funded PWS account with sufficient balance in the send asset
- Base URL:
https://api.services.payward.com
Workflow
A typical integration follows four steps:1
Create a transfer
POST /v1/accounts/{account_id}/transfers2
Poll for status
GET /v1/transfers/{transfer_id}3
List and reconcile
GET /v1/accounts/{account_id}/transfers4
Cancel (if needed)
POST /v1/transfers/{transfer_id}/cancelTransfer lifecycle
Same-asset transfers between PWS accounts typically return
completed immediately. Compliance-held transfers return pending and progress asynchronously.
Destination types
Theto object is polymorphic: set exactly one of the following fields. Setting zero or more than one returns 400 Bad Request.
Creating a transfer
Send aPOST to /v1/accounts/{account_id}/transfers. Include an Idempotency-Key header (UUIDv4) for safe retries; replayed responses include the Idempotent-Replayed: true header.
cURL example
Response (201 Created)
If the response returns
status: completed, the transfer has already settled — no polling required.Polling for status
If the create response returnsstatus: pending, poll GET /v1/transfers/{transfer_id} until the status reaches completed, failed, or cancelled. Alternatively, subscribe to transfer webhooks for real-time updates.
Listing transfers
GET /v1/accounts/{account_id}/transfers returns results in reverse chronological order with opaque page-token pagination. next_page_token is absent on the final page.
Query parameters
Cancelling a transfer
POST /v1/transfers/{transfer_id}/cancel cancels a transfer still in pending status. Transfers that have progressed beyond pending return 409 Conflict. Include an Idempotency-Key header.
Metadata
Attach optional key/value pairs to transfers for reconciliation and reporting. Three keys have reserved behavior:
Additional partner-defined keys are accepted: at most 20 entries, keys matching
^[a-zA-Z0-9_]{1,40}$, values as strings up to 500 characters.