Cross-border SWIFT wire transfers in 100+ currencies.
FX quote lifecycle
When sending in a foreign currency, you must first obtain and book an FX quote:
# 1. Request a quote
{:ok, quote} = Column.InternationalWires.request_fx_quote(%{
buy_currency: "EUR",
sell_currency: "USD",
buy_amount: 10_000
})
# 2. Book the quote (locks the rate)
{:ok, booked} = Column.InternationalWires.book_fx_quote(quote["id"])
# 3. Create the transfer referencing the booked quote
{:ok, wire} = Column.InternationalWires.create(%{
bank_account_id: "bacc_123",
counterparty_id: "cpty_456",
fx_quote_id: booked["id"],
beneficiary_name: "Acme GmbH",
beneficiary_iban: "DE89370400440532013000",
beneficiary_address: %{...}
})Tracking
Use track/2 to get SWIFT gpi status updates on outgoing transfers.
Summary
Functions
Book (lock) a foreign exchange quote.
Cancel an outgoing international wire.
Cancel a foreign exchange quote.
Create an international wire transfer.
Submit an amendment to an international wire.
Get an international wire transfer by ID.
Get a foreign exchange quote by ID.
Get the current FX rate sheet.
List all international wire transfers.
Request a foreign exchange quote.
Return an incoming international wire.
Track an international wire transfer via SWIFT gpi.
Types
@type id() :: String.t()
@type opts() :: keyword()
@type params() :: map()
@type result() :: {:ok, map()} | {:error, Column.Error.t()}
Functions
Book (lock) a foreign exchange quote.
Cancel an outgoing international wire.
Cancel a foreign exchange quote.
Create an international wire transfer.
Submit an amendment to an international wire.
Get an international wire transfer by ID.
Get a foreign exchange quote by ID.
Get the current FX rate sheet.
List all international wire transfers.
Request a foreign exchange quote.
Return an incoming international wire.
Track an international wire transfer via SWIFT gpi.