Skip to content

Submit a SEPA batch transfer from a JSON file.

Synopsis

gln [global-options] transfers batch --file <path> [--dry-run]

Options

Argument or flagTypeRequiredDefaultDescription
--filepathyes-Batch transfer JSON file.
--dry-runflagnofalseValidate 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

StatusExitMeaningContinuation
ok0The batch transfer was submitted or the dry-run preview was emitted.-
action_required10The bank requires a TAN or app approval before submission continues.Resume with gln tan resume --resume-file <path>.
rejected1The provider rejected the request.-
error1Validation, configuration, host, or provider communication failed.-

See also