Initiate Many Transfers Between Financial Accounts - Payee
This endpoint enables users to submit multiple internal financial account transfers to various payees in a single API call. Each transfer in the batch is processed individually and returns its own success or failure result. This method is particularly useful for automating large-scale fund disbursements, such as paying multiple vendors or distributing payments to clients simultaneously.
Endpoint
POST /api/fundsMovement/PayeeTransferMany
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 business needs to disburse funds to multiple payees at once rather than issuing individual transfer requests. This is ideal for payroll-adjacent disbursements, vendor batch payments, or any workflow that requires high-volume fund movement in a single operation. Each transfer in the batch is tracked independently, allowing granular visibility into which transfers succeeded or failed.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| transferRequests | array | No | Array of individual transfer request objects, each describing a single payee transfer |
| transferRequests[].fromFinancialAccountId | string | Yes | ID of the source financial account to debit |
| transferRequests[].toFinancialAccountId | string | Yes | ID of the destination financial account to credit |
| transferRequests[].amount | integer (int32) | No | Transfer amount in the smallest currency unit (e.g., cents). Must be between 1 and 4,294,967,295 |
| transferRequests[].currencyCode | integer | No | ISO 4217 numeric currency code. Supported value: 840 (USD) |
| transferRequests[].memo | string | No | Optional memo or note for the transfer. Max 1024 characters. Alphanumeric characters, dots, and spaces allowed |
| oneTimeCode | string | Yes | 6-digit one-time verification code (exactly 6 digits, pattern: ^\d{6}$) |
| secureOperationType | string | Yes | Method used to generate the one-time code. Allowed values: ShortMessageCode, TimeBasedCode, LegacyTimeBasedCode |
{
"transferRequests": [
{
"fromFinancialAccountId": "fa-source-001-abc123",
"toFinancialAccountId": "fa-vendor-001-xyz789",
"amount": 50000,
"currencyCode": 840,
"memo": "Vendor payment Q2"
},
{
"fromFinancialAccountId": "fa-source-001-abc123",
"toFinancialAccountId": "fa-vendor-002-def456",
"amount": 75000,
"currencyCode": 840,
"memo": "Contractor payout June"
}
],
"oneTimeCode": "482917",
"secureOperationType": "ShortMessageCode"
}Response
200 OK
Returns an array of objects, one per submitted transfer request, each indicating the result of that individual transfer.
| Field | Type | Description |
|---|---|---|
| id | string | Unique identifier of the created transfer, if successful |
| response | string | Human-readable status message for this transfer |
| errorCode | integer | Error code if the transfer failed; absent or null on success. See platform error code reference for values |
[
{
"id": "txn-00a1b2c3-d4e5-6789-fghi-jklmnopqrstu",
"response": "Transfer initiated successfully.",
"errorCode": null
},
{
"id": "txn-11b2c3d4-e5f6-7890-ghij-klmnopqrstuv",
"response": "Transfer initiated successfully.",
"errorCode": null
}
]Error Codes
| Code | When it happens |
|---|---|
| 400 | Missing required fields, invalid oneTimeCode format, or validation error on one or more transfer request fields |
| 401 | Token missing, expired, or invalid |
| 403 | Insufficient permissions to initiate transfers from the specified source account |
| 404 | One or more financial account IDs not found |
| 500 | Internal server error |
Common Mistakes
- Submitting an
oneTimeCodethat is not exactly 6 digits — the pattern^\d{6}$is strictly enforced and will cause a 400 error. - Using the wrong
secureOperationTypefor the code you received — ensure the value matches the method that generated the OTP (e.g., useShortMessageCodefor SMS-delivered codes). - Setting
amountto0or omitting it and assuming a default — amounts must be between 1 and 4,294,967,295 (in the smallest currency unit, i.e., cents for USD). - Reusing the same
oneTimeCodeacross multiple requests — one-time codes are single-use and expire quickly. - Including an unsupported
currencyCode— only840(USD) is currently accepted.
Related Endpoints
POST /api/fundsMovement/PayeeTransfer— Initiate a single transfer to a payee financial accountPOST /api/fundsMovement/TransferMany— Initiate multiple transfers between internal financial accounts (non-payee)POST /api/fundsMovement/Transfer— Initiate a single transfer between internal financial accountsPOST /api/auth/v2— Obtain a Bearer authentication token
Example
curl -X POST https://api.banking.netevia.dev/api/fundsMovement/PayeeTransferMany \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transferRequests": [
{
"fromFinancialAccountId": "fa-source-001-abc123",
"toFinancialAccountId": "fa-vendor-001-xyz789",
"amount": 50000,
"currencyCode": 840,
"memo": "Vendor payment Q2"
},
{
"fromFinancialAccountId": "fa-source-001-abc123",
"toFinancialAccountId": "fa-vendor-002-def456",
"amount": 75000,
"currencyCode": 840,
"memo": "Contractor payout June"
}
],
"oneTimeCode": "482917",
"secureOperationType": "ShortMessageCode"
}'