lib/iso_20022/camt/053/bank_tx_code.ex

defmodule ISO20022.Camt053.BankTxCode do
  @moduledoc """
  ISO 20022 Bank Transaction Code from `<BkTxCd>`.

  Uses the three-level External Code List hierarchy:
  - `domain` — e.g. `"PMNT"` (Payments)
  - `family` — e.g. `"RCDT"` (Received Credit Transfer), `"ICDT"` (Issued Credit Transfer)
  - `sub_family` — e.g. `"XBCT"` (Cross-Border Credit Transfer)

  A proprietary code may be present instead of or alongside the ISO code.
  """

  @type t :: %__MODULE__{
          domain: String.t() | nil,
          family: String.t() | nil,
          sub_family: String.t() | nil,
          proprietary_code: String.t() | nil,
          proprietary_issuer: String.t() | nil
        }

  defstruct [:domain, :family, :sub_family, :proprietary_code, :proprietary_issuer]
end