1. Bulk Payouts
Framnex for Developers
  • Introduction
    • Overview
    • Quick Start
    • Authentication
    • Environments
  • Guides
    • Create an outgoing transfer
    • Handle webhooks
    • Transfer documents
  • Bulk Payouts
    • Upload bulk payout
      POST
    • List bulk payouts
      GET
    • Get bulk payout
      GET
    • List bulk payout items
      GET
    • Submit bulk payout
      POST
    • Cancel bulk payout
      POST
  • Cards
    • List card products
      GET
    • List cardholders
      GET
    • Issue card
      POST
    • List cards
      GET
    • Get card
      GET
    • Activate card
      POST
    • Freeze card
      POST
    • Unfreeze card
      POST
    • Close card
      POST
    • Set card limits
      PUT
    • Create encryption envelope
      POST
    • Reveal card details
      POST
    • Set PIN
      PUT
  • Card Transactions
    • List card transactions
    • Get card transaction
  • Accounts
    • Get account
    • List accounts
  • Auth
    • Get access token
  • Exchange Rates
    • Get exchange rate
  • Transfer Documents
    • Download document
    • List documents
    • Upload documents
  • Transfers
    • Create transfer
    • List transfers
    • Get transfer
  • Webhooks
    • Register webhook URL
    • Get webhook URL
    • List webhook deliveries
    • Get webhook delivery
    • Retry webhook delivery
  • Schemas
    • BankClientAPI
      • Account
      • AccountCredentials
      • AccountState
      • AccountType
      • AchCredentials
      • Address
      • BankDetails
      • BusinessEntity
      • ClientIntegrationAuthRequest
      • ClientIntegrationAuthResponse
      • ClientIntegrationErrorResponse
      • CreateExchangeTransferRequest
      • CreateOutgoingTransferRequest
      • CreateTransferRequest
      • CreateTransferType
      • CreatedResponse
      • Credentials
      • CredentialsState
      • CryptoCredentials
      • CustomerTransferStateDto
      • CryptoTransferDetails
      • ExchangeRate
      • DocumentDto
      • ExchangeTransferCancelledWebhookPayload
      • ExchangeTransfer
      • ExchangeTransferExecutedWebhookPayload
      • FasterUkCredentials
      • FedWireCredentials
      • IError
      • GasPaymentWebhookPayload
      • IReason
      • IncomingTransfer
      • LegalEntityType
      • ISuccess
      • IndividualEntity
      • IncomingTransferReceivedWebhookPayload
      • InternalCredentials
      • InternalServerError
      • OperationTypeDto
      • LegalEntity
      • LocalAEDCredentials
      • LocalXafCredentials
      • NeftCredentials
      • OutgoingTransfer
      • OutgoingTransferCancelledWebhookPayload
      • PageInfoDto
      • Participant
      • PaymentMethod
      • OutgoingTransferExecutedWebhookPayload
      • PagedFilterDto
      • TransferGas
      • TransferPagedDataDto
      • PixCredentials
      • TransferState
      • TransferType
      • ProblemDetails
      • TransferTypeDto
      • PaymentSystem
      • SepaCredentials
      • RegisterWebhookRequest
      • SortOrderDto
      • Result
      • SwiftCredentials
      • TedPayCredentials
      • Transfer
      • TransferDetails
      • TransferDetailsType
      • UaeFtsCredentials
      • UaeIppCredentials
      • ValidationProblemDetails
      • WebhookDelivery
      • WebhookDeliveryPagedDataDto
      • WebhookPayload
      • WebhookState
      • WebhookSubscription
      • WebhookType
      • YeePayKesLocalCredentials
      • YeePayMxnLocalCredentials
      • YeePayNgnLocalCredentials
    • BulkPayout
    • CardProduct
    • BulkPayoutState
    • Cardholder
    • BulkPayoutItemState
    • IssueCardRequest
    • BulkPayoutPagedDataDto
    • Card
    • BulkPayoutItemPagedDataDto
    • CardType
    • CardState
    • CardPagedDataDto
    • CloseCardRequest
    • SetCardLimitsRequest
    • CardEncryptionEnvelope
    • CardEncryptedDetailsRequest
    • CardEncryptedDetails
    • BulkPayoutFileFormat
    • SetCardPinRequest
    • BulkPayoutItemCounts
    • CardTransaction
    • CardTransactionState
    • BulkPayoutItem
    • CardTransactionPagedDataDto
    • CardNetwork
    • CardIssuanceFee
    • CardShipping
    • CardSpendingLimit
    • CardLimitInterval
    • CardCloseReason
    • CardSecretType
    • CardEncryptedValue
    • CardMerchant
    • CardWebhookType
    • CardWebhookPayload
    • CardIssuedWebhookPayload
    • CardIssuanceFailedWebhookPayload
    • CardStateChangedWebhookPayload
    • CardTransactionAuthorizedWebhookPayload
    • CardTransactionCompletedWebhookPayload
    • CardTransactionReversedWebhookPayload
    • BulkPayoutItemError
    • BulkPayoutFile
    • BulkPayoutFileItem
    • BulkPayoutWebhookType
    • BulkPayoutWebhookPayload
    • BulkPayoutValidatedWebhookPayload
    • BulkPayoutValidationFailedWebhookPayload
    • BulkPayoutCompletedWebhookPayload
GuidesBaaS API ReferenceBank Client API Reference
GuidesBaaS API ReferenceBank Client API Reference
  1. Bulk Payouts

Upload bulk payout

POST
/integration/bulk-payouts
Early access - contact your account manager to enable bulk payouts for your organization.
Uploads a file with up to 1,000 payments and creates a bulk payout from one of your organization's accounts. Every payment in the file is sent from accountId, in the account currency, over the same paymentMethod. The internal and self payment methods are not supported.
Send the file in the file part of a multipart/form-data request, up to 5 MB:
CSV (.csv, text/csv) - UTF-8, comma-separated, a header row and one payment per row. Supported for the sepa, fasterUK, swift, ach and fedWire payment methods. The columns are listed below.
JSON (.json, application/json) - an object with an items array, see BulkPayoutFile. Each item has the same fields as an outgoing transfer, so JSON files support every payment method.
The file is validated asynchronously. The response contains the bulk payout identifier, and the bulk payout starts in the validating state. It moves to validated if every row is valid, or to validationFailed otherwise, and the result is reported with the bulkPayoutValidated or bulkPayoutValidationFailed webhook. You can also poll GET /integration/bulk-payouts/{id}. Validation errors are listed per row in GET /integration/bulk-payouts/{id}/items. A bulk payout with invalid rows cannot be submitted: fix the file and upload it again.
Uploading and validating a file does not move any money. Payments start only after POST /integration/bulk-payouts/{id}/submit.
externalId is your identifier of the bulk payout and protects against uploading the same file twice: while a bulk payout with the same externalId exists and is not validationFailed, cancelled or expired, a new upload returns 409 Conflict.
CSV columns. Column names are case-insensitive and can go in any order. Amounts use a dot as the decimal separator.
ColumnRequiredDescription
amountYesPayment amount in the account currency
beneficiaryTypeYesindividual or business
firstName, lastNameFor individualBeneficiary name; middleName is optional
legalNameFor businessLegal company name
ibansepa; swift without accountNumberBeneficiary IBAN
accountNumberfasterUK, ach, fedWire; swift without ibanBeneficiary account number
accountTypeachchecking or savings
bic, sortCode, routingNumberDepends on the payment methodBank details, for example bic for swift, sortCode for fasterUK and routingNumber for ach and fedWire
bankName, bankCountry, bankAddressDepends on the payment methodBeneficiary bank
country, city, streetLine1, streetLine2, state, zipDepends on the payment methodBeneficiary address; country is an ISO 3166-1 alpha-2 code
referenceNoPayment reference
purposeNoFree-text purpose of the payment
externalIdNoYour identifier of the payment, unique within the file
Which bank details and address fields are required depends on the payment method and currency, the same as for a single outgoing transfer.
Errors: 400 Bad Request if the file is missing, larger than 5 MB, has more than 1,000 rows, cannot be parsed, or the payment method is not supported; 409 Conflict for a duplicate externalId; 422 Unprocessable Content if a bulk payout cannot be created for any other reason, for example when the account is not available.

Request

Authorization
JWT Bearer
Add the parameter
Authorization
to Headers
Example:
Authorization: ********************
or
Body Params multipart/form-data

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location 'https://my.test-1.account.finlego.com/api/merchant/integration/bulk-payouts' \
--header 'Authorization: Bearer <token>' \
--form 'file=@""' \
--form 'accountId=""' \
--form 'paymentMethod=""' \
--form 'externalId=""'

Responses

🟢200OK
application/json
OK
Bodyapplication/json

Example
{
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
🟠400Bad Request
🟠401Unauthorized
🟠403Forbidden
🟠409
🟠422Parameter Error
🔴500Server Error
Modified at 2026-09-29 11:11:01
Previous
Transfer documents
Next
List bulk payouts
Built with