Originate a Global ACH payment

Send a payment using Global ACH to settle on local rails

Overview

Let's assume you want to send money to a customer located in another country. You want to settle this payment cheaply, and you do not have a bank account domiciled in the country you are sending to. You can send a Global ACH payment by creating a cross_border type Payment Order from a bank account domiciled in the US to a supported foreign currency via the local clearing system for the target region/currency. Note that Global ACH does not support full-life cycle tracking of Returns and is credit only, unlike US ACH. In this guide, we will walk you through:

  • How to choose the right clearing rail subtype and understand the fields required
  • How to send a Global ACH payment

Choosing the right cross_border subtype

Before sending a Global ACH, you must determine the country corridor for the payment you are planning on sending money to and it's corresponding local settlement system. This will depend on the desired settlement time of the currency and what our partner bank is capable of.

Note that depending on the region of the payment, you will need to include the appropriate purpose code along with the appropriate Counterparty address and External Account information to settle the payment. Here is a list of the regions currently supported and the information required to transact in them:

Local Settlement System

Currency

Receiving Region

Subtype

Receiving Account Type

Receiving Routing Type

Purpose Code

AU BECS

AUD

Australia

au_becs

Local Account Number (other)

AU BSB (au_bsb)

(Goldmans Sachs will require an additional Swift (swift) routing type)

N/A

CCEN

MXN

Mexico

mx_ccen

CLABE Number (clabe)

N/A

N/A

CHATS

HKD

Hong
Kong

chats

HK Number hk_number in the format aaaaaa-xxx)

(Citi will also accept Local Account Number (other) without dashes)

Hong Kong Interbank Clearing Code (hk_interbank_clearing_code)

(SVB will require an additional Swift (swift) routing type)

Varies by financial institution

Danish Interbank Clearing System

DKK

Denmark

dk_nets

Local Account Number (other)

(SVB will require IBAN (iban))

Danish Interbank Clearing Code (dk_interbank_clearing_code)

(SVB will alternatively require a SWIFT (swift))

Varies by financial institution

EFT

CAD

Canada

eft

Local Account Number (other)

CPA Routing (ca_cpa)

(Goldmans Sachs will require an additional Swift (swift) routing type)

CPA Codes

ELIXIR

PLN

Poland

pl_elixir

IBAN (iban)

  • N/A_ for Citi. SVB will require Swift (swift)

N/A

GB BACS

GBP

United Kingdom

bacs

Local Account Number (other)

GB Sort Code (gb_sort_code)

(Goldmans Sachs will require an additional Swift (swift) routing type)

N/A

GIRO

SGD

Singapore

sg_giro

Local Account Number (other)

SWIFT (swift)

Varies by financial institution

Hungarian Interbank Clearing System

HUF

Hungary

hu_ics

Local Account Number (other)

Hungarian Interbank Clearing Code (hu_interbank_clearing_code)

N/A

JP Zengin

JPY

Japan

zengin

Local Account Number (other)

Zengin Code (jp_zengin_code)

(Goldmans Sachs will require an additional Swift (swift) routing type)

ISO Purpose Codes (Except for ISGDDS)

MASAV

ILS

Israel

masav

IBAN (iban)

SWIFT (swift)

NEFT

INR

India

neft

Local Account Number (other)

IFSC Code (in_ifsc)

FETERS Payment Receipt Codes

NICS

NOK

Norway

nics

IBAN (iban)

SWIFT (swift)

N/A

NZ BECS

NZD

New Zealand

nz_becs

Local Account Number (other)

New Zealand National Clearing Code (nz_national_clearing_code)

(Goldmans Sachs will require an additional Swift (swift) routing type)

N/A

SENT

RON

Romania

ro_sent

IBAN (iban)

SWIFT (swift)

N/A

SEPA

EUR

SEPA Zone (Europe)

sepa

IBAN (iban)

SWIFT (swift)

N/A

SIC

CHF

Switzerland

sic

IBAN (iban)

SWIFT (swift)

SKBNI

IDR

Indonesia

sknbi

Local Account Number (other)

Indonesian SKNBI Code (id_sknbi_code)

N/A

Swedish Bankgirot

SEK

Sweden

se_bankgirot

IBAN(iban)

Swedish Bankgiro Code (se_bankgiro_clearing_code)

(Goldmans Sachs will require an additional Swift (swift) routing type)

(SVB will require just a Swift (swift) routing type)

N/A

🚧

Minimum Amounts

Contact your bank to understand the minimum amounts supported to transact within each subtype.

Payments that require IDs

Some countries require taxpayer ID numbers as part of the payment instruction sent to the bank.

Country

Currency

Required IDs

Brazil

BRL

For individuals - Brazilian CPF (br_cpf)
For businesses - Brazilian CNPJ (br_cnpj)

You can create Legal Entities to store these international taxpayer IDs. Here is the API guide.

Choosing the right FX indicator

Note that foreign_exchange_indicator is necessary to specify in which currency you would like to denominate the transacted amount in. Learn more about it here. Depending on your bank you may transact in one or both indicator types.

BankFixed-to-VariableVariable-to-Fixed
SVBNoYes
JPMCYesYes
Goldman SachsYesYes

Example: Sending CAD via an EFT Cross Border Payment

This example will demonstrate how to send CAD to your counterparty via a Global ACH payment. For this example, let's assume that your originating account is setup to send payments with the cross_border payment type.

In this example, we're using the eft subtype to delineate that the EFT settlement rail will be used to settle this payment. This is required for Global ACH payments that need to be settled in Canada. Note that because this payment is settling in Canada we must provide a CPA Code in the purpose field. This is the API call.

In this example we are sending C$20 from a USD account so will delineate variable_to_fixed as the foreign_exchange_indicator.

curl --request POST \
  -u ORGANIZATION_ID:API_KEY \
  --url https://app.moderntreasury.com/api/payment_orders \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "cross_border",
    "subtype": "eft",
    "currency": "cad",
    "amount": 2000,
    "direction": "credit",
    "originating_account_id": "edefd193-c0bf-4d68-b123-d17eb21f500c",
    "receiving_account": {
      "party_name": "John Smith",
      "party_type": "individual",
      "party_address": {
        "line1": "200 Main Ave",
        "line2": "Suite 210",
        "locality": "Toronto",
        "region": "Ontario",
        "postal_code": "400054",
        "country": "CA"
      },
      "routing_details": [{
        "routing_number": "001000562",
        "routing_number_type": "ca_cpa"
      }],
      "account_details": [{
        "account_number": "0001007",
        "account_number_type": "other"
      }]
    },
    "foreign_exchange_indicator": "variable_to_fixed",
    "purpose": "350", 
  }'
{
    "id": "2bb6a37b-9b8c-4e1f-8c6d-d3a89bb2f6d0",
    "object": "payment_order",
    "type": "cross_border",
    "amount": 2000,
    "direction": "credit",
    "originating_account_id": "edefd193-c0bf-4d68-b123-d17eb21f500c",
    "receiving_account": {
        "id": "836c2e60-4c84-4f37-9f46-c11dd13ed8cc",
        "object": "external_account",
        "live_mode": false,
        "account_type": "other",
        "party_name": "John Smith",
        "party_type": "individual",
        "party_address": {
            "id": "c3e1fd34-fbe1-4378-afd7-f8bd24e8f062",
            "object": "address",
            "live_mode": false,
            "line1": "200 Main Ave",
            "line2": "Suite 210",
            "locality": "Toronto",
            "region": "Ontario",
            "postal_code": "400054",
            "country": "CA",
            "created_at": "2023-03-04T00:20:30Z",
            "updated_at": "2023-03-04T00:20:30Z"
        },
        "account_details": [
            {
                "id": "09eb778b-cdac-4128-9b29-30e5cd942fe4",
                "object": "account_detail",
                "live_mode": false,
                "account_number_safe": "1007",
                "account_number_type": "other",
                "discarded_at": null,
                "created_at": "2023-03-04T00:20:30Z",
                "updated_at": "2023-03-04T00:20:30Z"
            }
        ],
        "routing_details": [
            {
                "id": "3071677c-f665-4f9f-9574-e473365529ae",
                "object": "routing_detail",
                "live_mode": false,
                "payment_type": null,
                "routing_number": "001000562",
                "routing_number_type": "ca_cpa",
                "bank_name": "CANADIAN IMPERIAL BANK OF COMMERCE",
                "bank_address": {
                    "id": "e786f831-f849-4ddc-a282-85f0cb9a8fb1",
                    "object": "address",
                    "live_mode": false,
                    "line1": "1015 KING ST. W.",
                    "line2": null,
                    "locality": "HAMILTON",
                    "region": "ON",
                    "postal_code": "L8S 1L3",
                    "country": "CA",
                    "created_at": "2023-03-04T00:20:23Z",
                    "updated_at": "2023-03-04T00:20:23Z"
                },
                "discarded_at": null,
                "created_at": "2023-03-04T00:20:30Z",
                "updated_at": "2023-03-04T00:20:30Z"
            }
        ],
        "name": null,
        "metadata": {},
        "verification_status": "unverified",
        "contact_details": [],
        "discarded_at": null,
        "created_at": "2023-03-04T00:20:30Z",
        "updated_at": "2023-03-04T00:20:30Z"
    },
    "receiving_account_id": "836c2e60-4c84-4f37-9f46-c11dd13ed8cc",
    "receiving_account_type": "external_account",
    "currency": "CAD",
    "effective_date": "2023-03-04",
    "priority": "normal",
    "description": null,
    "statement_descriptor": null,
    "remittance_information": null,
    "metadata": {},
    "status": "needs_approval",
    "counterparty_id": null,
    "charge_bearer": null,
    "foreign_exchange_indicator": "variable_to_fixed",
    "foreign_exchange_contract": null,
    "transaction_monitoring_enabled": false,
    "originating_party_name": null,
    "ultimate_originating_party_name": null,
    "ultimate_originating_party_identifier": null,
    "ultimate_receiving_party_name": null,
    "ultimate_receiving_party_identifier": null,
    "created_at": "2023-03-04T00:20:30Z",
    "updated_at": "2023-03-04T00:20:30Z",
}

If you have additional account numbers or routing numbers for the counterparty, you may create multiple Account Details or Routing Details in the external account.

Appendix

ISO Purpose Codes

Purpose of Payment CodesDescription
EPFAMTFamily maintenance
ISSCVEPurchase/sale of services
ISSTDYPayment of study/tuition costs
ISSALAPayment of salary
ISCOMMTransaction is payment of commission
ISACCTTransaction moves funds between 2 accounts of same account holder
ISINVSTransaction if for the payment of mutual funds, investment products and shares
ISISNMPayment of installment
EPLIEXLiving expenses
ISAIRBPayment for air transport related business
ISBEXPBusiness expenses
ISBLDMPayment associated with building maintenance
ISDIVDTransaction is payment of dividends
ISMDCSPayment for medical services
ISRENTPayment of rent
ISPENSPension payment