Initiate Payee Transfer
The Payee Transfer endpoint enables users to securely send funds from their financial account to a payee's account within the Netevia banking system. The request requires multi-factor verification via a one-time code to ensure the transaction is authorized. Upon successful initiation, the API returns a confirmation with the transaction details including status and payee account information.
Endpoint
POST /api/fundsMovement/v2/PayeeTransfer
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 needs to send funds to a payee account — for example, paying a vendor, an individual, or processing a business-to-business payment. This endpoint is appropriate for both personal transfers and business transactions where the destination account is registered as a payee in the system. Always obtain and supply a fresh one-time verification code before calling this endpoint, as the request will fail if the code is missing or expired.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| fromFinancialAccountId | string | Yes | The ID of the source financial account funds are transferred from. Minimum length: 1. |
| toFinancialAccountId | string | Yes | The ID of the destination (payee) financial account. Minimum length: 1. |
| amount | integer (int32) | No | Transfer amount in the smallest currency unit (e.g., cents for USD). Must be between 1 and 4,294,967,295. |
| currencyCode | integer (int32) | No | ISO 4217 numeric currency code. Supported value: 840 (USD). |
| memo | string | No | Optional transaction memo or description. Maximum 1024 characters. Allowed characters: word characters, periods, and spaces ([\w. ]+). |
| oneTimeCode | string | Yes | Six-digit numeric verification code used to authorize the transfer (e.g., from SMS or TOTP). Pattern: ^\d{6}$. |
| secureOperationType | string | Yes | The verification method used to generate the one-time code. Allowed values: ShortMessageCode, TimeBasedCode, LegacyTimeBasedCode. |
{
"fromFinancialAccountId": "fa_source_abc123",
"toFinancialAccountId": "fa_payee_xyz789",
"amount": 5000,
"currencyCode": 840,
"memo": "Invoice payment Oct 2025",
"oneTimeCode": "847291",
"secureOperationType": "ShortMessageCode"
}Response
200 OK
A successful response confirms that the payee transfer has been initiated. The response body contains the transaction confirmation details.
| Field | Type | Description |
|---|---|---|
| transactionId | string | Unique identifier for the initiated transfer transaction. |
| status | string | Current status of the transfer (e.g., Pending, Completed). |
| fromFinancialAccountId | string | The source financial account ID from which funds were debited. |
| toFinancialAccountId | string | The payee financial account ID to which funds were credited. |
| amount | integer | Transfer amount in the smallest currency unit. |
| currencyCode | integer | ISO 4217 numeric currency code used for the transaction. |
| memo | string | Memo included with the transfer, if provided. |
| createdAt | string (date-time) | Timestamp indicating when the transfer was initiated. |
{
"transactionId": "txn_98f2e4c1a7b345d9",
"status": "Pending",
"fromFinancialAccountId": "fa_source_abc123",
"toFinancialAccountId": "fa_payee_xyz789",
"amount": 5000,
"currencyCode": 840,
"memo": "Invoice payment Oct 2025",
"createdAt": "2025-10-15T14:32:00Z"
}Error Codes
| Code | When it happens |
|---|---|
| 400 | Missing required fields (fromFinancialAccountId, toFinancialAccountId, oneTimeCode, secureOperationType), invalid oneTimeCode format (must be exactly 6 digits), invalid secureOperationType value, memo contains disallowed characters, or amount is out of the allowed range |
| 401 | Token missing, expired, or invalid |
| 403 | Insufficient permissions to initiate transfers from the specified account |
| 404 | Source or destination financial account not found |
| 500 | Internal server error |
Common Mistakes
- Providing an
amountof0— the minimum allowed value is1. Amount must be expressed in the smallest currency unit (cents), so $50.00 should be sent as5000. - Sending a
oneTimeCodethat is expired or already used — obtain a fresh code immediately before each transfer request, as codes are single-use and time-limited. - Using an unsupported
secureOperationTypevalue — onlyShortMessageCode,TimeBasedCode, andLegacyTimeBasedCodeare accepted. - Including special characters in the
memofield — only word characters (a-z,A-Z,0-9,_), periods, and spaces are permitted. - Omitting
currencyCodewhen the destination account may require it — supplying840(USD) explicitly avoids ambiguity.
Related Endpoints
POST /api/fundsMovement/v2/Transfer— Initiate an internal transfer between a user's own financial accountsPOST /api/fundsMovement/v2/ScheduledTransfer— Schedule a future-dated transfer to a payee or own accountPOST /api/fundsMovement/v2/BatchTransfer— Submit multiple transfer requests in a single batch operationPOST /api/auth/v2— Obtain a Bearer token required for authenticationPOST /api/auth/refresh— Refresh an existing Bearer token before expiry
Example
curl -X POST https://api.banking.netevia.dev/api/fundsMovement/v2/PayeeTransfer \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fromFinancialAccountId": "fa_source_abc123",
"toFinancialAccountId": "fa_payee_xyz789",
"amount": 5000,
"currencyCode": 840,
"memo": "Invoice payment Oct 2025",
"oneTimeCode": "847291",
"secureOperationType": "ShortMessageCode"
}' 200Success
