> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://amer.developers.trustly.com/llms.txt.
> For full documentation content, see https://amer.developers.trustly.com/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://amer.developers.trustly.com/_mcp/server.

# Transfer funds internationally

Trustly APIs offer a secure and efficient way to process online payments. Use the information provided here to learn how to integrate Trustly APIs into your Money Transfer applications that support international transfers.

You initiate and process payments using the Trustly APIs, including adding the necessary data fields to ensure compliance with International Automated Clearing House Transaction (IAT) regulations. International Automated Clearing House Transaction (IAT) regulations are designed to enhance the security and transparency of cross-border payments. These regulations require you to include additional data fields with each transaction. This helps identify and mitigate the risk of money laundering, terrorist financing, and other financial crimes. Including the required IAT data for international money transfer payments ensures compliance with these regulations and helps maintain the integrity of the global financial system.

The following methodologies are available for international money transfers:

* **Instant payment:** Payments are initiated directly from the Trustly user interface (UI).
* **Deferred payments :** Your application stores a Trustly token, allowing a user to initiate payments without re-entering the Trustly UI.

If your application is configured for international money transfers, you must provide the data listed here in the relevant functions and objects. Failing to include this data can result in a disruption of service.

## Prerequisites

* You have completed a [Trustly Pay](/integrate/accept-payments/trustly-pay) integration using either a deferred or instant model.
* Familiarity with Trustly APIs and basic [client-side SDK](/integrate/get-started/quickstart) integration concepts is recommended.
* Distinct Merchant IDs (MIDs). You must use a unique `merchantId` for international transfers and a separate `merchantId` for domestic transfers. If you do not have two distinct MIDs, contact your Trustly representative to request an additional identifier before you begin your integration.

## International money transfer fields

If your application is configured for international money transfers, payment transactions must include all the required fields listed in the following sections. Including the optional fields can result in better approval results.

The term "required" in the tables below refers to international money transfer applications. If your application is **not** configured for international money transfers, these fields are not required. If your application **is** configured for international money transfers and you cannot provide any of these fields, you can omit them. However, including as many of these fields as possible decreases the likelihood that the transaction is flagged by the various screening processes involved with international money transfers.

### Originating customer details

| Property      | Type   | Required | Description                                      |
| :------------ | :----- | :------- | :----------------------------------------------- |
| `name`        | String | True     | Customer full legal name                         |
| `address`     | Object | True     | See **Address** object below                     |
| `dateOfBirth` | String | False    | Customer date of birth                           |
| `taxId`       | String | False    | Customer tax ID (e.g., SSN for US or SIN for CA) |

#### Customer address object

| Property   | Type   | Required | Description                                                               |
| :--------- | :----- | :------- | :------------------------------------------------------------------------ |
| `address1` | String | True     | Address line 1. For example,, street or PO Box.                           |
| `address2` | String | False    | Address line 2. For example, apartment, suite, or unit number.            |
| `city`     | String | True     | City, district, town, or village                                          |
| `state`    | String | True     | State, province, or region                                                |
| `zip`      | String | True     | Postal code                                                               |
| `country`  | String | True     | [ISO 3166 Country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) |

### Beneficiary

Provide the "beneficiary" or the ultimate recipient of the transfer. The model for the `beneficiary` object inherits from the `customer` object.

| Property      | Type   | Required | Description                                                 |
| :------------ | :----- | :------- | :---------------------------------------------------------- |
| `name`        | String | True     | Customer full name.                                         |
| `address`     | Object | True     | See **Beneficiary address** object.                         |
| `dateOfBirth` | String | False    | Customer date of birth.                                     |
| `taxId`       | String | False    | Customer tax ID. For example, SSN for US or SIN for Canada. |

#### Beneficiary address object

| Property   | Type   | Required | Description                                                                |
| :--------- | :----- | :------- | :------------------------------------------------------------------------- |
| `address1` | String | False    | Address line 1. For example, street or PO Box.                             |
| `address2` | String | False    | Address line 2. For example, apartment, suite, or unit number.             |
| `city`     | String | False    | City, district, town, or village.                                          |
| `state`    | String | False    | State, province, or region.                                                |
| `zip`      | String | False    | Postal or zip code.                                                        |
| `country`  | String | True     | [ISO 3166 Country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). |

#### Beneficiary financial account

Provide the financial account belonging to the beneficiary of the transfer. The model for the `beneficiaryAccount` contains a required `paymentProvider` object.

For any applicable Financial Account, include one (and only one) of the following three properties. Including more than one of these fields in a single request results in an error. You may omit these fields if none are available:

* `iban`: International Bank Account Number (IBAN)
* `paymentProvider.routingNumber`: Financial Institution Routing Number
* `paymentProvider.swift`: Financial Institution SWIFT code

| Property          | Type   | Required | Description                              |
| :---------------- | :----- | :------- | :--------------------------------------- |
| `paymentProvider` | Object | False    | See **Payment Provider** object          |
| `iban`            | String | False    | International Bank Account Number (IBAN) |
| `accountNumber`   | String | False    | Financial Institution Account Number     |

#### Payment provider

The Payment Provider refers to the Financial Account associated with a customer or beneficiary.

| Property        | Type   | Required | Description                                                                                       |
| :-------------- | :----- | :------- | :------------------------------------------------------------------------------------------------ |
| `name`          | String | False    | Financial Institution name                                                                        |
| `country`       | String | False    | Financial Institution country code ([ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)) |
| `swift`         | String | False    | International SWIFT code                                                                          |
| `routingNumber` | String | False    | Financial Institution Routing Number                                                              |

## Create an authorization

The primary difference in creating an authorization transaction for international money transfers is including additional compliance data. IAT regulations require specific information to be included with each transaction, such as the originator's name, address, and country, to ensure transparency and security in cross-border transactions. These additional data fields are necessary to meet compliance standards and help prevent money laundering, terrorist financing, and other financial crimes.

### Customer data

In the context of the Money Transfer transaction, the `customer` object represents the originator of the transfer and includes the customer's name and address. The `beneficiary` object in the payload [initiating the payment](#initiate-payment) represents the receiver of the transfer. For more information about these and other parameters, see the [Initiate an Authorization](/api-reference/api/transactions/post-establish)API.

If your application does not allow users to persist their account for additional transfers, see [Instant payments](#instant-payments).

The following is an example of the establish data object for deferred transfers.

```json
{
  "merchantId": "YOUR_MERCHANT_ID",
  "accessId": "YOUR_ACCESS_ID",
  "merchantReference": "",
  "paymentType": "Deferred",
  "customer": {
    "name": "Joe User",
    "taxId": "017-27-3353",
    "dateOfBirth": "09/11/1986",
    "address": {
      "address1": "2000 Broadway St",
      "city": "Redwood City",
      "state": "CA",
      "zip": "94063",
      "country": "US"
    }
  }
}
```

## Initiate a payment

When making an international money transfer transaction you must include a `beneficiary` object containing the recipient's `name` and `address` as well as a `beneficiaryAccount` object containing the receiving bank's information. For more information about these and other parameters, see the [Capture a Transaction](/api-reference/api/transactions/post-transactions-transaction-id-capture) API.

The following is an example of a capture request.

```curl
curl --request POST \
     --url https://sandbox.trustly.one/api/v1/transactions/transactionId/capture \
     --header 'Content-Type: application/x-www-form-urlencoded' \
     --header 'accept: application/json' \
     --data merchantReference=607E61428FCAED32 \
     --data amount=200.00 \
     --data 'beneficiaryAccount.accountNumber=762011623852957' \
     --data 'beneficiaryAccount.paymentProvider.name=UBS Switzerland' \
     --data 'beneficiaryAccount.paymentProvider.country=CH' \
     --data 'beneficiaryAccount.paymentProvider.swift=UBSWCHZH80A' \
     --data 'beneficiary.address.address1=Untere Bahnhofstrasse 90' \
     --data 'beneficiary.address.city=Castiel' \
     --data 'beneficiary.address.state=Graubünden' \
     --data 'beneficiary.address.zip=7027' \
     --data 'beneficiary.address.country=CH'
```

```json
{
  "amount": "250.00",
  "beneficiary": {
    "address": {
      "address1": "Untere Bahnhofstrasse 90",
      "city": "Castiel",
      "state": "Graubünden",
      "zip": 7027,
      "country": "CH"
    },
    "name": "Johan Olen",
    "taxId": "756.9217.0769.85",
    "dateOfBirth": "08/08/1998"
  },
  "beneficiaryAccount": {
    "paymentProvider": {
      "name": "Swiss National Bank",
      "swift": "SNBZCHZZXXX",
      "country": "CH"
    },
    "accountNumber": 762011623852957
  }
}
```

### Remittance data

The Capture API also supports additional data points. Use these when available to ensure the highest levels of payment approvals and quicker processing times. These data points are structured under a `remittance` object which is a property of the `metadata` object.

| Property         | Type   | Required | Description                                                                                                                                                   |
| :--------------- | :----- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| withdrawalMethod | String | False    | Method of withdrawal for the ultimate beneficiary. Can be `BankDeposit`, `Cash`, `DebitCard`, `DigitalWallet` or `HomeDelivery`.                              |
| countryCorridor  | String | False    | The location to which the money is being sent, represented by a two-letter [ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) alpha-2 country code. |
| accountLastFour  | Number | False    | Last four digits of the associated bank account if `withdrawalMethod` is `BankDeposit` or `DebitCard`.                                                        |

## Instant payments

If your application uses Instant payments by setting `paymentType: Instant`, Trustly processes the payment after the user successfully completes the authorization. The Establish object that initiates the authorization must include the transfer receiver details in the `beneficiary` and `beneficiaryAccount` properties of the Establish object.

The following is an example of the Establish Data object for instant transfers.

```json
{
  "merchantId": "110005514",
  "accessId": "A48B73F694C4C8EE6306",
  "merchantReference": "ABCDE12345",
  "paymentType": "Instant",
  "amount": "250.00",
  "description": "Readable transfer description",
  "returnUrl": "http://yourdomain.com/return",
  "cancelUrl": "http://yourdomain.com/cancel",
  "notificationUrl": "http://yourdomain.com/notification?",
  "requestSignature": "a/n62XqfgQA31xmFnCxNEOjd7g=",
  "currency": "USD",
  "customer": {
    "address": {
      "address1": "2000 Broadway St",
      "city": "Redwood City",
      "state": "CA",
      "zip": "94063",
      "country": "US"
    },
    "name": "John Smith",
    "email": "john.smith@jsas.com",
    "phone": "+19019958789",
    "dateOfBirth": "09/09/1990"
  },
  "beneficiary": {
    "address": {
      "address1": "Untere Bahnhofstrasse 90",
      "city": "Castiel",
      "state": "Graubünden",
      "zip": 7027,
      "country": "CH"
    },
    "name": "Johan Olen",
    "taxId": "756.9217.0769.85",
    "dateOfBirth": "08/08/1998"
  },
  "beneficiaryAccount": {
    "accountNumber": 762011623852957,
    "paymentProvider": {
      "name": "Swiss National Bank",
      "swift": "SNBZCHZZXXX",
      "country": "CH"
    }
  }
}
```