lib/requests/payments/senders/bank_payout_instrument.ex

defmodule Requests.Payments.Senders.BankPayoutInstrument do
  @type t :: %__MODULE__{
          type: String.t(),
          reference: String.t()
        }

  @enforce_keys [:type, :reference]
  defstruct [
    :type,
    :reference
  ]

  def build(%{type: type} = params) do
    %{
      type: type,
      reference: params[:reference]
    }
  end

  def build(params) when is_map(params), do: {:error, "instrument must have a type"}

  def build(_), do: nil
end