gln transfers batch
Submit a SEPA batch transfer from a JSON file.
Synopsis
gln [global-options] transfers batch --file <path> [--dry-run]
Options
| Argument or flag | Type | Required | Default | Description |
|---|---|---|---|---|
--file | path | yes | - | Batch transfer JSON file. |
--dry-run | flag | no | false | Validate and preview the request without contacting the bank. |
Request file
The file must contain a top-level JSON object:
{
"source_iban": "DE02120300000000202051",
"source_bic": "BYLADEM1001",
"source_name": "Alice Example",
"requested_execution_date": "2026-05-08",
"single_booking": false,
"items": [
{
"recipient_iban": "DE44500105175407324931",
"recipient_bic": "INGDDEFFXXX",
"recipient_name": "Receiver",
"amount": "1.00",
"currency": "EUR",
"purpose": "Invoice 2026-05",
"end_to_end_reference": "INV-2026-05"
}
]
}
requested_execution_date, single_booking, and end_to_end_reference are
optional. The command accepts flat items only; groups is rejected with a
validation issue.
Dry Run
--dry-run validates the backend choice and request shape, then returns a
schema-v2 success envelope with a preview. The preview contains status,
source_iban, source_bic, source_name, requested_execution_date,
booking_mode, item_count, control_sum, currency_consistent, and
currency. The currency value is the shared currency string when all items
use the same currency, and JSON null when item currencies differ. It does not
open a backend.
Status and exit codes
| Status | Exit | Meaning | Continuation |
|---|---|---|---|
ok | 0 | The batch transfer was submitted or the dry-run preview was emitted. | - |
action_required | 10 | The bank requires a TAN or app approval before submission continues. | Resume with gln tan resume --resume-file <path>. |
rejected | 1 | The provider rejected the request. | - |
error | 1 | Validation, configuration, host, or provider communication failed. | - |