/transfersCreates a manual transfer from a source account to a destination account. The transfer is processed asynchronously - poll GET /transfers/{id} to track status. The token must have a MANUAL_TRANSFER permission entry whose source matches source_account_id and target matches destination_account_id. If max_amount is set on the matching entry, the requested amount must not exceed it.
AuthorizationClick to expand
ApiKeyAuth Format: ApiKey <key>. Keys are scoped to an organization and carry explicit permissions.
Each key holds a list of permission entries. An entry specifies a scope and a resources
constraint. A request returns 403 if the key lacks the required scope, or if the requested
resource is outside the key's allowed list.
| Scope | Resources | Grants access to |
|---|---|---|
LIST_ACCOUNTS | none | List all accounts in the organization |
READ_ACCOUNTS | account IDs or * | Full account details and balance for a specific account |
LIST_RULES | none | List all rules in the organization |
READ_RULES | rule IDs or * | Full rule details (steps, conditions, actions) for a specific rule |
TRIGGER_RULES | rule IDs or * | Triggering rule executions |
READ_RULE_EXECUTIONS | rule IDs or * | Rule execution history - rule_id filter required |
READ_TRANSFERS | account IDs or * | Transfer history - account_id filter required |
MANUAL_TRANSFER | list of { source, target, max_amount? } sets | Creating manual transfers |
READ_CARDS | account IDs or * | Cards and card transactions - account_id filter required |
In: header
Header Parameters
Idempotency-Key?stringA client-generated unique key to ensure idempotent processing. Requests with the same key within 24 hours return the original response without re-executing the operation. Recommended format: UUID v4.
X-Request-ID?stringA client-provided request identifier echoed back in the response `X-Request-ID` header and `request_id` body field. If omitted, the server generates one.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
| Field | Type | Description |
|---|---|---|
source_account_id* | string | ID of the account to transfer from. |
destination_account_id* | string | ID of the account to transfer to. |
amount_in_cents* | integer | Amount to transfer in cents. Minimum $1.00 (100 cents). |
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://api.getsequence.io/api/v1/transfers" \ -H "Content-Type: application/json" \ -d '{ "source_account_id": "acc_01HDEF0123", "destination_account_id": "acc_01HGHI7890", "amount_in_cents": 50000 }'{
"request_id": "req_01HJKL9999",
"data": {
"id": "txr_01HJKL5555",
"amount_in_cents": 50000,
"direction": "money_out",
"origin": "user",
"status": "processing",
"source": {
"id": "acc_01HDEF0123",
"name": "Emergency Fund",
"type": "pod"
},
"destination": {
"id": "acc_01HGHI7890",
"name": "Amex Gold ••1234",
"type": "external_account"
},
"rule_id": null,
"rule_execution_id": null,
"error_code": null,
"created_at": "2024-04-25T10:00:00Z",
"completed_at": null
}
}{
"error": {
"code": "string",
"message": "string"
}
}{
"error": {
"code": "unauthorized",
"message": "Missing or invalid API key."
}
}{
"error": {
"code": "forbidden",
"message": "This API key does not have the required permission."
}
}Create an external account POSTv2
Manually links an external bank or liability account using routing and account numbers. For Plaid-based connections, use the Plaid authentication flow instead.
List transfers GET
Returns transfers for the organization, ordered by `created_at` descending. Credit card and debit card transactions are excluded. `account_id` is required and must be present in the token's `READ_TRANSFERS` resources.