Skip to content

Submit one SEPA credit transfer through the active FinTS or EBICS profile.

Synopsis

gln [global-options] transfers sepa
    {--file <path> |
     --source-iban <value> --source-bic <value> --source-name <value>
     --recipient-iban <value> --recipient-bic <value> --recipient-name <value>
     --amount <value> [--currency <value>] --purpose <value>
     [--e2e-ref <value>] [--execution-date <YYYY-MM-DD>]}
    [--dry-run]

Options

Argument or flagTypeRequiredDefaultDescriptionBackends
--filepathno-JSON payload describing the transfer. Mutually exclusive with inline transfer fields.FinTS, EBICS
--source-ibanstringinline-Source account IBAN.FinTS, EBICS
--source-bicstringinline-Source account BIC.FinTS, EBICS
--source-namestringinline-Source account holder name.FinTS, EBICS
--recipient-ibanstringinline-Recipient IBAN.FinTS, EBICS
--recipient-bicstringinline-Recipient BIC.FinTS, EBICS
--recipient-namestringinline-Recipient name.FinTS, EBICS
--amountstringinline-Transfer amount as a decimal string, for example 12.34.FinTS, EBICS
--currencystringnoEURISO 4217 currency code for inline mode. Cannot be combined with --file.FinTS, EBICS
--purposestringinline-Payment purpose or remittance information.FinTS, EBICS
--e2e-refstringno-Optional end-to-end reference. Empty or omitted maps to NOTPROVIDED in pain.001.FinTS, EBICS
--execution-datestringno-Optional scheduled execution date value (YYYY-MM-DD).FinTS, EBICS
--dry-runflagnofalseValidate the request shape and backend kind, then echo the request without opening a backend.FinTS, EBICS

The command accepts exactly one input mode. Use either --file <path> or the inline field set; combining --file with any inline transfer field, including an explicit --currency, is rejected before the file is read.

File payloads are JSON objects using the same field names as the inline options: source_iban, source_bic, source_name, recipient_iban, recipient_bic, recipient_name, amount, currency, purpose, optional end_to_end_reference, and optional requested_execution_date.

Description

transfers sepa resolves the active profile, validates that the backend is FinTS or EBICS, validates the request shape, and submits through the C API. The CLI emits command JSON by reading the typed C result accessors selected by the backend envelope kind. FinTS submissions can return TAN or VoP-confirmation action-required envelopes. EBICS submissions are one-shot; EBICS provider-status rows are available on the typed C transfer-submission handle, not as ordinary CLI result keys.

With --dry-run, the command performs local shape validation and backend-kind validation, emits the normalized request preview, and does not open the backend or contact the provider. This is not full bank-format validation; provider and protocol validation still happen only on submission.

Requirements

  • A resolvable FinTS or EBICS profile.
  • FinTS calls that require TAN approval must be resumed with tan resume.
  • Revolut and Wise profiles are rejected for this command.

Status and exit codes

StatusExitMeaningContinuation
ok0Dry-run preview or submitted result emitted.-
action_required10FinTS TAN input or VoP confirmation is required.tan resume
rejected1The bank rejected the transfer.-
error1Validation, configuration, transport, or host failure.-

Result keys for dry-run: status, source_iban, source_bic, source_name, recipient_iban, recipient_bic, recipient_name, amount, currency, purpose, end_to_end_reference, effective_end_to_end_reference, requested_execution_date. end_to_end_reference and requested_execution_date are always present in dry-run output and may be empty strings.

Result keys for non-dry-run submission are emitted from the typed C result accessors. FinTS success payloads use status, statuses, and optional vop. EBICS success payloads use status and order_id. Typed C accessors such as gln_get_transfer_submission_id and gln_get_transfer_submission_provider_status_at expose additional typed-handle fields to C callers; they are not separate CLI JSON result keys.

Examples

gln --profile demo transfers sepa --file transfer.json --dry-run
gln --profile demo --pin-stdin transfers sepa `
  --source-iban DE02120300000000202051 `
  --source-bic BYLADEM1001 `
  --source-name "Sender GmbH" `
  --recipient-iban DE44500105175407324931 `
  --recipient-bic INGDDEFFXXX `
  --recipient-name "Receiver GmbH" `
  --amount 10.00 `
  --purpose "Invoice 2026-001"

See also