Create scheduled transfer

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)

FieldTypeRequiredDescription
fromFinancialAccountIdstringYesID of the source financial account
toFinancialAccountIdstringYesID of the destination financial account
amountinteger (int32)NoTransfer amount in cents (minimum: 1, maximum: 4294967295)
currencyCodeintegerNoCurrency code; only 840 (USD) is supported
oneTimeCodestringYes6-digit OTP for secure authorization (pattern: ^\d{6}$)
secureOperationTypestringYesOTP delivery method. Enum: ShortMessageCode, TimeBasedCode, LegacyTimeBasedCode
nextDatestring (date-time)YesDate and time of the next (or first) transfer occurrence (ISO 8601)
frequencystringNoRecurrence frequency pattern (e.g., 1w = weekly, 1m = monthly). Pattern: ^(\d+)([ymwd])$
isActivebooleanNoWhether the scheduled transfer is active. Defaults to true
endDatestring (date-time)NoDate and time after which no further transfers are executed (ISO 8601)
transferTypestringNoType of transfer. Enum: IncommingAchTransfer, OutcommingAchTrasfer, InternalTransfer, TransferBetweenOwnAccounts, AutoPopup, AutoPopupFromOwnAccount, Fee
memostringNoOptional memo or note for the transfer
namestringNoOptional friendly name for the scheduled transfer
minAmountinteger (int32)NoMinimum balance threshold (used with auto-popup transfer types)

Variant 2 — Update an existing scheduled transfer (updateScheduledTransferSecuredRequest)

Includes all fields from Variant 1, plus:

FieldTypeRequiredDescription
idinteger (int32)YesID 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

FieldTypeDescription
idinteger (int32)Unique ID of the created or updated scheduled transfer
namestringFriendly name of the scheduled transfer
fromFinancialAccountIdstringID of the source financial account
toFinancialAccountIdstringID of the destination financial account
isActivebooleanWhether the scheduled transfer is currently active
transferTypestringType of transfer (see enum values above)
amountinteger (int64)Transfer amount in cents
currencyCodeintegerCurrency code (840 = USD)
frequencystringRecurrence frequency pattern
lastDatestring (date-time)Date and time the transfer last executed
nextDatestring (date-time)Date and time of the next scheduled execution
endDatestring (date-time)Date and time after which no further transfers run
memostringMemo or note associated with the transfer
minAmountinteger (int64)Minimum amount threshold for auto-popup transfers
isRejectedbooleanWhether 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

CodeWhen it happens
400Missing required fields, malformed request body, or invalid field values (e.g., nextDate in the past, invalid frequency pattern)
401Token missing, expired, or invalid
403Caller does not have permission to transfer from the specified source account
404One or both financial account IDs not found
422Request is syntactically valid but semantically unprocessable (e.g., insufficient funds in source account)
500Internal server error

Common Mistakes

  • Setting nextDate to a past date or time — the scheduled date must be in the future.
  • Providing an invalid frequency pattern — use the format {number}{unit} where unit is y (year), m (month), w (week), or d (day), e.g., 2w for every 2 weeks.
  • Omitting oneTimeCode or secureOperationType — both are required for security authorization regardless of transfer type.
  • Passing amount as a decimal (e.g., 500.00) instead of an integer in cents (e.g., 50000 for $500.00).
  • Using oneTimeCode that 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 id field — use Variant 2 when updating an existing record.

Related Endpoints

  • GET /api/scheduledTransfer — Retrieve a list of all scheduled transfers for the authenticated customer
  • GET /api/scheduledTransfer/{id} — Retrieve details of a specific scheduled transfer by ID
  • DELETE /api/scheduledTransfer/{id} — Cancel and delete a scheduled transfer
  • POST /api/transfer — Execute an immediate (non-scheduled) transfer
  • POST /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"
  }'
Body Params

Base class for all funds transfer (movement) request.

string
required
length ≥ 1
^\d{6}$
string
enum
required
Allowed:
string | null
string | null
string | null
^(\d+)([ymwd])$
boolean
date-time
required
date-time | null
string
enum
Allowed:
int32 | null
string
required
length ≥ 1
string
required
length ≥ 1
int32
1 to 4294967295
int32
enum
Allowed:
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
string
enum
Defaults to application/json

Generated from available request content types

Allowed:
Response

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
text/plain
application/json
text/json