Corgi BankDocumentation
OpenAPI

International ACH (IAT)

An IAT entry is an ACH entry to or from a party outside the United States. It carries the parties, their banks and the currencies as addenda, and every name on it is screened.

Two routes to the same entry

POST /transfers/iat takes the international fields at the top level of the body. POST /transfers/ach with sec_code IAT takes the same fields inside an iat object. Either way the bank stores one ACH transfer of the IAT class and runs it through the same origination: originator limits, hold, screening, fraud rules, file, settlement and returns.

The International Transfer is a view over that transfer. Its id and transfer_id are the ACH transfer's id, and the same entry can be read at GET /transfers/ach/{id} with the fields nested under iat. A domestic transfer's id answers not_found at GET /transfers/iat/{id}.

Before the first entry

  • The customer's ACH Originator must list IAT in sec_codes, or the answer is payments.unsupported_sec_code. See Entry types.
  • The bank must hold the customer's name and address, or the request must give them in originator. Without a name, street, city and country the answer is validation_failed on iat.originator.
  • counterparty.routing_number is the U.S. Gateway Operator's. counterparty.account_number is the receiver's foreign account number or IBAN, up to 35 characters.

The international fields

FieldMeaning
transaction_type_codeRequired. The reason for payment: ANN, BUS, DEP, LOA, MIS, MOR, PEN, REM, RLS, SAL, TAX, TEL or WEB. The code also accepts ARC, BOC, POP and RCK.
destination_countryRequired. ISO 3166-1 alpha-2.
destination_currencyRequired. ISO 4217.
originating_currencyISO 4217. USD when left out.
foreign_exchange_indicatorFF fixed-to-fixed, the default; FV fixed-to-variable; VF variable-to-fixed.
foreign_exchange_referenceThe rate. Required with FV and VF.
foreign_amountThe amount in the destination currency, in minor units. The entry's amount when left out.
foreign_traceThe foreign trace number, carried on the first addenda record.
receiverRequired. An IATParty: name, street, city and country are required; region, postal_code and id, the receiver's identification number, are optional.
receiving_dfiRequired. The foreign bank, an IATDFI: name, id, branch_country and id_qualifier, which is 01 for a national clearing system number, 02 for a BIC or 03 for an IBAN.
originatorAn IATParty. When its name is blank the bank fills it from the customer's record.
originating_dfiAlways the bank: its name, qualifier 01, its routing number and US. A value in the request is replaced.
correspondentsUp to five correspondent banks, each an IATDFI.
remittanceUp to two lines of text. Remittance lines and correspondents together may not exceed five.
ofac_indicator, secondary_ofac_indicatorSet by the Gateway Operator on an entry the bank receives: 0 no match, 1 a potential match. POST /transfers/iat ignores them.

Country and currency codes are put in upper case before they are judged. amount is what is held and posted on the account, in the account's currency. The API converts nothing: foreign_amount and the exchange fields travel on the addenda as given.

What is refused

  • same_day answers payments.limit_exceeded. Same Day ACH excludes IAT entries.
  • A destination_country of CU, IR, KP or SY, or a receiving or correspondent bank whose branch_country is one of them, answers payments.unsupported_country. This is judged before anything is held.
  • An iat object on a PPD or CCD entry, or an IAT entry without one, answers validation_failed.

Screening and review

The bank screens the counterparty's name, the originator, the receiver, the receiving bank, the originating bank and each correspondent. If any result is not clear the transfer is stored as held_for_review and no file takes it. It is decided at POST /transfers/ach/{id}/review, as a domestic transfer is.

Cancelling

POST /transfers/iat/{id}/cancel withdraws a transfer that is pending or held_for_review. It becomes cancelled, the hold is released, and it no longer counts against the originator's limits. Once it has joined a file the answer is payments.not_cancellable. A second cancellation answers payments.already_cancelled.

Receiving an IAT entry

A received IAT entry becomes an ACH Receipt with its addenda in iat. Besides the parties every entry is screened on, the bank screens the foreign originator, its bank and the correspondents. A Gateway Operator indicator of 1, or a screening match, holds a credit on the bank's transit account and returns a debit with R16. A held credit is decided at POST /ach-receipts/{id}/review with approve, block or return. In a sandbox, POST /simulate/transfers/ach/receive with sec_code IAT and an ofac_indicator delivers one.

to move to open esc to close