Create Scheduled Transfer
This endpoint creates a new scheduled transfer between two financial accounts. Transfers can be configured as one-time or recurring, with flexible frequency settings and optional end dates. A one-time passcode (OTP) is required to authorize the operation securely.
Endpoint
POST /api/scheduledTransfer
Authentication
Bearer token required. Obtain via:
POST https://api.banking.netevia.dev/api/auth/v2
Include in header: Authorization: Bearer {token}
Token lifetime: 10 minutes. Refresh via POST /api/auth/refresh.
When to use
Use this endpoint when a customer wants to schedule a future or recurring transfer between financial accounts — for example, setting up a weekly transfer from a checking account to a savings account, or scheduling a one-time future payment. Both business and personal customers can use scheduled transfers between their own accounts; business customers may additionally schedule internal transfers to other Netevia users.
Request Body
The request body accepts one of two variants:
Variant 1 — Create a new scheduled transfer (createScheduledTransferSecuredRequest)
| Field | Type | Required | Description |
|---|---|---|---|
fromFinancialAccountId | string | Yes | ID of the source financial account |
toFinancialAccountId | string | Yes | ID of the destination financial account |
amount | integer (int32) | No | Transfer amount in cents (minimum: 1, maximum: 4294967295) |
currencyCode | integer | No | Currency code; only 840 (USD) is supported |
oneTimeCode | string | Yes | 6-digit OTP for secure authorization (pattern: ^\d{6}$) |
secureOperationType | string | Yes | OTP delivery method. Enum: ShortMessageCode, TimeBasedCode, LegacyTimeBasedCode |
nextDate | string (date-time) | Yes | Date and time of the next (or first) transfer occurrence (ISO 8601) |
frequency | string | No | Recurrence frequency pattern (e.g., 1w = weekly, 1m = monthly). Pattern: ^(\d+)([ymwd])$ |
isActive | boolean | No | Whether the scheduled transfer is active. Defaults to true |
endDate | string (date-time) | No | Date and time after which no further transfers are executed (ISO 8601) |
transferType | string | No | Type of transfer. Enum: IncommingAchTransfer, OutcommingAchTrasfer, InternalTransfer, TransferBetweenOwnAccounts, AutoPopup, AutoPopupFromOwnAccount, Fee |
memo | string | No | Optional memo or note for the transfer |
name | string | No | Optional friendly name for the scheduled transfer |
minAmount | integer (int32) | No | Minimum balance threshold (used with auto-popup transfer types) |
Variant 2 — Update an existing scheduled transfer (updateScheduledTransferSecuredRequest)
Includes all fields from Variant 1, plus:
| Field | Type | Required | Description |
|---|---|---|---|
id | integer (int32) | Yes | ID of the existing scheduled transfer to update |
{
"fromFinancialAccountId": "acct-source-001",
"toFinancialAccountId": "acct-destination-002",
"amount": 50000,
"currencyCode": 840,
"oneTimeCode": "482910",
"secureOperationType": "ShortMessageCode",
"name": "Weekly Savings Transfer",
"memo": "Regular weekly savings",
"frequency": "1w",
"isActive": true,
"nextDate": "2026-06-15T09:00:00Z",
"endDate": "2026-12-31T23:59:59Z",
"transferType": "TransferBetweenOwnAccounts"
}Response
200 OK
| Field | Type | Description |
|---|---|---|
id | integer (int32) | Unique ID of the created or updated scheduled transfer |
name | string | Friendly name of the scheduled transfer |
fromFinancialAccountId | string | ID of the source financial account |
toFinancialAccountId | string | ID of the destination financial account |
isActive | boolean | Whether the scheduled transfer is currently active |
transferType | string | Type of transfer (see enum values above) |
amount | integer (int64) | Transfer amount in cents |
currencyCode | integer | Currency code (840 = USD) |
frequency | string | Recurrence frequency pattern |
lastDate | string (date-time) | Date and time the transfer last executed |
nextDate | string (date-time) | Date and time of the next scheduled execution |
endDate | string (date-time) | Date and time after which no further transfers run |
memo | string | Memo or note associated with the transfer |
minAmount | integer (int64) | Minimum amount threshold for auto-popup transfers |
isRejected | boolean | Whether the most recent transfer attempt was rejected |
{
"id": 1042,
"name": "Weekly Savings Transfer",
"fromFinancialAccountId": "acct-source-001",
"toFinancialAccountId": "acct-destination-002",
"isActive": true,
"transferType": "TransferBetweenOwnAccounts",
"amount": 50000,
"currencyCode": 840,
"frequency": "1w",
"lastDate": null,
"nextDate": "2026-06-15T09:00:00Z",
"endDate": "2026-12-31T23:59:59Z",
"memo": "Regular weekly savings",
"minAmount": null,
"isRejected": false
}Error Codes
| Code | When it happens |
|---|---|
| 400 | Missing required fields, malformed request body, or invalid field values (e.g., nextDate in the past, invalid frequency pattern) |
| 401 | Token missing, expired, or invalid |
| 403 | Caller does not have permission to transfer from the specified source account |
| 404 | One or both financial account IDs not found |
| 422 | Request is syntactically valid but semantically unprocessable (e.g., insufficient funds in source account) |
| 500 | Internal server error |
Common Mistakes
- Setting
nextDateto a past date or time — the scheduled date must be in the future. - Providing an invalid
frequencypattern — use the format{number}{unit}where unit isy(year),m(month),w(week), ord(day), e.g.,2wfor every 2 weeks. - Omitting
oneTimeCodeorsecureOperationType— both are required for security authorization regardless of transfer type. - Passing
amountas a decimal (e.g.,500.00) instead of an integer in cents (e.g.,50000for $500.00). - Using
oneTimeCodethat has already expired or was previously used — request a fresh OTP before submitting. - Attempting to update a scheduled transfer using Variant 1 (create) without including the
idfield — use Variant 2 when updating an existing record.
Related Endpoints
GET /api/scheduledTransfer— Retrieve a list of all scheduled transfers for the authenticated customerGET /api/scheduledTransfer/{id}— Retrieve details of a specific scheduled transfer by IDDELETE /api/scheduledTransfer/{id}— Cancel and delete a scheduled transferPOST /api/transfer— Execute an immediate (non-scheduled) transferPOST /api/batchTransfer— Submit a batch of transfers in a single request
Example
curl -X POST https://api.banking.netevia.dev/api/scheduledTransfer \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fromFinancialAccountId": "acct-source-001",
"toFinancialAccountId": "acct-destination-002",
"amount": 50000,
"currencyCode": 840,
"oneTimeCode": "482910",
"secureOperationType": "ShortMessageCode",
"name": "Weekly Savings Transfer",
"memo": "Regular weekly savings",
"frequency": "1w",
"isActive": true,
"nextDate": "2026-06-15T09:00:00Z",
"endDate": "2026-12-31T23:59:59Z",
"transferType": "TransferBetweenOwnAccounts"
}'