# Address Types & Inputs

Nexus maintains a record of the **address types** (such as IBAN, Account Identifications or proxies) available in each country in the network, and the specific **input fields** that are required for each address type.

This information is initially provided by the IPSO or PDO in that country, at the point at which they are onboarded to Nexus. The information is then provided to PSPs through the Nexus APIs.

The data model for address types and inputs is described below, followed by examples.

| **CODE (ISO 20022)** | Meaning                                            | Type                     | Notes                                                                                                                                                                |
| -------------------- | -------------------------------------------------- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| BICFI                | Business Identifier Code for Financial Institution | Financial Institution Id | Used in conjunction with an Account Identifier (and in some countries, with the proxy)                                                                               |
| LEI                  | Legal Entity Identifier                            | Financial Institution Id | We are not aware of any IPS that uses LEIs to address payments, but the ISO 20022 messages can support use of LEI.                                                   |
| ClrSysMmbId          | (Non-BIC) Clearing System Member Id                | Financial Institution Id | Used in conjunction with an Account Identifier. Maps to ISO 20022 element *Financial Institution Identification > Clearing System Member Identification > Member Id* |

## Address inputs <a href="#toc163730910" id="toc163730910"></a>

In Nexus, each **address&#x20;*****type*** includes **one or more address&#x20;*****inputs*****.** For example:

* An IBAN has only one address input (the *`IBAN`* field), because the IBAN itself combines information about the country, Financial Institution Id and Account Id.
* An *`ACCT`* will require two inputs: the Account Identification itself, plus a Financial Institution Identification such as a BIC (`BICFI`) or non-BIC `Clearing System Member Id`, such as sort code, routing number etc.
* A proxy normally requires only one input – the proxy identifier (such as a mobile phone number)

{% hint style="warning" %}
In some cases, such as the Philippines, a Financial Institution Identification must also be provided for each proxy (as the same proxy may be registered to multiple financial institutions in the Philippines).
{% endhint %}

The Nexus APIs provide a list of the address inputs in a format that can be used by a PSP’s client application to dynamically generate the addressing form. Each input is defined in terms that are agnostic to programming frameworks (eg they are similar to common HTML attribute definitions), as shown in the table below.

The Nexus APIs also return some “hidden” inputs such as the account/proxy type code. These are fixed (ie not set by the Sender) and inform the Source PSP’s app how the address type should be processed. In some cases, the hidden information must be included in the `acmt.023` message (such as the proxy type code when a proxy is used).

#### TABLE: Address Input structure <a href="#toc163730911" id="toc163730911"></a>

| ELEMENT        | SUB ELEMENT                                                 | FORMAT                                                                                                   | USAGE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| -------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Label          | Code                                                        | Text                                                                                                     | <p>Same as the Address Type code or Financial Institution Identification Type code above. E.g. <em>IBAN, ACCT</em> or a proxy type code like <em>MBNO.</em></p><p>This code can be mapped to the app user’s language.</p>                                                                                                                                                                                                                                                                                                                                                                      |
|                | Title                                                       | Key-value pair, where key is the 2-letter language code (eg “en”) and the value is the explanatory title | <p>Further description that can be used to guide the Sender, to be used in a tooltip or explanatory text below the input form.<br></p><p>A description in English (“en”) should always be provided. PDOs may choose to add additional languages based on the likely language of Senders to that country. (For example, countries may wish to add the languages of their closest trading partners and remittance corridors.)</p><p><br>For example, for a proxy type NIDN (National Identify Number) for Singapore, the description may be “NRIC/FIN” – two national identity number types)</p> |
| Attributes     | Name                                                        | ENUM: accountIdOrProxyId, addressTypeCode, finInstId                                                     | <p>Suggested name of the form element that takes the input from the Sender. (Note: addressTypeCode would be a hidden input that is not visible to the Sender.)</p><p>Note: this is NOT the name of the input type that should be shown to the Sender – for that, see Label.Code</p>                                                                                                                                                                                                                                                                                                            |
|                | Type                                                        | Valid HTML input “type” attribute                                                                        | Describes the type of HTML input element, eg text, tel, number, email                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|                | Pattern                                                     | Regular expression                                                                                       | Used to validate the form. (For email, this should be null, relying on the browser or app’s default email validation instead.)                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|                | Placeholder                                                 | Text                                                                                                     | An example value that can optionally be shown in the input element before the Sender begins to enter information                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|                | Required                                                    | true/false                                                                                               | Whether this input is required or optional. (Currently all inputs are set to required. Optional inputs may be used in cases where a comparison model of account resolution is used, in which the Sender can optionally provide information about the Recipient that would be compared by the Destination PSP against their own verified records.)                                                                                                                                                                                                                                              |
| ISO 20022 Path | (Code of the message type without the dot e.g. “*acmt024”)* | Text                                                                                                     | <p>The XPath to the position in an ISO 20022 message where this information can be used. Multiple message types may be specified, depending on whether proxy resolution is required first, or whether the input can be used directly in the pacs.008 payment instruction.</p><p><strong>NB:</strong> The message name is defined without the period/dot character “.”, because the dot character is used in JavaScript to refer to properties of a JSON object (eg “attributes.name”).</p>                                                                                                     |

### Example address types <a href="#toc163730912" id="toc163730912"></a>

Below is an example description of the **address types** for Indonesia. Please note the following:

* “id” would be automatically generated by the database. (In this example, human-readable IDs are given based on the country code and address type.)
* “code” defines the address type code
* “displayOrder” describes the order in which the proxy scheme recommends listing the address types when they are shown to the Sender (typically with mobile first, as the most common and user-friendly proxy type and the more obscure proxy types at the end of the list)
* For the *ACCT* address types “clearingSystemId” links to the internal Nexus ID of the instant payment system which accepts that address type
* For proxy address types, ”proxyDirectoryId” links to the ID of the proxy scheme that a proxy type belongs to.

```json
{
  "addressTypes": [
    {
      "id": "IDACCT",
      "countries": [
        "ID"
      ],
      "code": "ACCT",
      "clearingSystemId": "IDRBFAST",
      "displayOrder": 3
    },
    {
      "id": "IDEMAL",
      "countries": [
        "ID"
      ],
      "code": "EMAL",
      "proxyDirectoryId": "IDPROXY",
      "displayOrder": 2
    },
    {
      "id": "IDMBNO",
      "countries": [
        "ID"
      ],
      "code": "MBNO",
      "proxyDirectoryId": "IDPROXY",
      "displayOrder": 1
    }
  ]
}
```

### Example address inputs <a href="#toc163730913" id="toc163730913"></a>

Below are three example descriptions of the **address types.** Firstly for a mobile phone proxy registered in Singapore, secondly for a Singaporean Account Identification, and third, for an IBAN registered in the UK.

#### Example mobile proxy <a href="#toc163730914" id="toc163730914"></a>

Note there are two inputs for a mobile proxy:

* The first is the text input field where the Sender will provide the mobile number of the Recipient. (This input starts with the “{“ prior to the first “attributes:”).
* The second is a hidden field which includes the `MBNO` address type (and proxy type) code. This `addressTypeCode` information will be required by the PSP to prepare the `acmt.023` proxy resolution request.

```json
{
  "id": "SGMBNO",
  "inputs": [
    {
      "attributes": {
        "name": "accountOrProxyId",
        "type": "tel",
        "pattern": "^\\+(?:[0-9] ?){6,14}[0-9]$",
        "placeholder": "+6581234567",
        "required": true
      },
      "iso20022Path": {
        "acmt023": "/Document/IdVrfctnReq/Vrfctn/PtyAndAcctId/Acct/Prxy/Id",
        "pacs008": null
      },
      "label": {
        "code": "MBNO",
        "title": {
          "en": "Mobile phone number, including the country code",
          "de": "Mobiltelefonnummer, einschließlich der Landesvorwahl"
        }
      }
    },
    {
      "attributes": {
        "name": "addressTypeCode",
        "type": "hidden",
        "value": "MBNO",
        "required": true
      },
      "iso20022Path": {
        "acmt023": "/Document/IdVrfctnReq/Vrfctn/PtyAndAcctId/Acct/Prxy/Tp/Cd",
        "pacs008": null
      }
    }
  ]
}
```

#### Example account Identification <a href="#toc163730915" id="toc163730915"></a>

Note that there are three inputs for an Account Identification:

* The first input is the text input field where the Sender can input the Account Identification (`accountOrProxyId`)
* The second input is the text input where the Sender can input the Financial Institution Id (`finInstId`)
* The third is a hidden field which includes the code of the address type (“addressTypeCode”), which in this case is `ACCC`.

```json
{
  "id": "SGACCT",
  "inputs": [
    {
      "attributes": {
        "name": "accountOrProxyId",
        "type": "number",
        "pattern": "^\\+\\d{9,10}$",
        "placeholder": "1234567890",
        "required": true
      },
      "iso20022Path": {
        "acmt023": "/Document/IdVrfctnReq/Vrfctn/PtyAndAcctId/Acct/Id/Othr/Id",
        "pacs008": "/Document/FIToFICstmrCdtTrf/CdtTrfTxInf/CrtrAcct/Id/Othr/Id"
      },
      "label": {
        "code": "ACCT",
        "title": {
          "en": "Account number, 9-10 digits",
          "de": "Kontonummer, 9-10 Ziffern"
        }
      }
    },
    {
      "attributes": {
        "name": "finInstId",
        "type": "text",
        "pattern": "^[A-Z]{6}[0-9A-Z]{2}([0-9A-Z]{3})?",
        "placeholder": "AAAASGAA OR AAAASGAA123",
        "required": true
      },
      "iso20022Path": {
        "acmt023": "/Document/IdVrfctnReq/Vrfctn/PtyAndAcctId/Agt/FinInstnId/BICFI",
        "pacs008": "/Document/FIToFICstmrCdtTrf/CdtTrfTxInf/CdtrAgt/FinInstnId/BICFI"
      },
      "label": {
        "code": "BICFI",
        "title": {
          "en": "BIC of the Creditor's Bank or Payment Service Provider",
          "de": "BIC der Kreditorbank des Payment Service Providers"
        }
      }
    },
    {
      "attributes": {
        "name": "addressTypeCode",
        "type": "hidden",
        "value": "ACCT",
        "required": true
      },
      "iso20022Path": {
        "acmt023": null,
        "pacs008": null
      }
    }
  ]
}
```

#### Example IBAN <a href="#toc163730916" id="toc163730916"></a>

For IBAN, only one text input is required, plus the hidden field addressTypeCode set to “IBAN”. The following example is for an IBAN to the United Kingdom.

```json
{
  "id": "GBIBAN",
  "inputs": [
    {
      "attributes": {
        "name": "accountOrProxyId",
        "type": "number",
        "pattern": "^GB[0-9]{2}[A-Z]{4}[0-9]{14}$",
        "placeholder": "GB29 NWBK 6016 1331 9268 19",
        "required": true
      },
      "iso20022Path": {
        "acmt023": "/Document/IdVrfctnReq/Vrfctn/PtyAndAcctId/Acct/Id/IBAN",
        "pacs008": "/Document/FIToFICstmrCdtTrf/CdtTrfTxInf/CrtrAcct/Id/IBAN"
      },
      "label": {
        "code": "IBAN",
        "title": [
          {
            "en": "International Bank Account Number",
            "de": "Internationale Bankkontonummer"
          }
        ]
      }
    },
    {
      "attributes": {
        "name": "addressTypeCode",
        "type": "hidden",
        "value": "IBAN",
        "required": true
      },
      "iso20022Path": {
        "acmt023": null,
        "pacs008": null
      }
    }
  ]
}
```

### List of PSPs <a href="#toc163730917" id="toc163730917"></a>

Nexus provides an API operation that returns a list of PSPs in a specific country along with their corresponding BICs:

`GET /countries/{countryCode}/psps`

This can be used to generate a drop-down `<select>` menu item that allows the user to select the name of the PSP rather than entering the BIC manually.

This is useful for countries (such as the Philippines) that require the financial institution to be identified when using a proxy, or for countries (such as Singapore) where the convention is for the Recipient to share the full name of their PSP rather than the BIC.

For usability, PSP app developers should enable the type-ahead feature that allows the user to start typing the PSP name to filter the list.

### Masking of names <a href="#toc163730918" id="toc163730918"></a>

* The Recipient’s full name **must** be shared in full (unmasked) with the Source PSP to support sanctions screening. This information should be provided in the *`IdVrfctnReq/Rpt/UpdtdPtyAndAcctId/Pty/Nm`* element of the `acmt.024` message.
* The Destination PSP **may** also share a ‘display name’, which could be the full name (unmasked) or the full name partially masked. This should be provided in the *`IdVrfctnReq/Rpt/UpdtdPtyAndAcctId/Acct/Nm`* element of the `acmt.024` message.
* The Destination PSP is responsible for masking the name according to their own privacy and data protection preferences, policies or local regulations. Nexus will not mask or alter the information provided in the *`IdVrfctnReq/Rpt/UpdtdPtyAndAcctId/Acct/Nm`* element of the `acmt.024` message.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nexusglobalpayments.org/addressing-and-proxy-resolution/address-types-and-inputs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
