# Acme Citibank US Payments (/guides/citi-us-payments)



This describes validations / allowed data formats for Acme payments going
through Citibank US. These will be validated by Acme and further validated by
the bank. These rules may be stricter than what the bank requires.

### Common Definitions [#common-definitions]

* SWIFT Character Set:
  * The 26 uppercase Latin letters `A`-`Z`
  * The 26 lowercase Latin letters `a`-`z`
  * The 10 digits `0`-`9`
  * Forward slash `/`
  * Hyphen `-`
  * Question mark `?`
  * Colon `:`
  * Left and right parentheses `(` `)`
  * Full stop `.`
  * Comma `,`
  * Single quote `'`
  * Plus sign `+`
  * Space <code> </code>

* Citi restrictions:
  * For SWIFT character set: do not start a field with any of the following characters: `/`, `-`, `:`

## US\_ACH [#us_ach]

| field                           | pattern / charset        | max length   | mandatory/optional |
| ------------------------------- | ------------------------ | ------------ | ------------------ |
| subtype (at batch level)        | `CCD` or `PPD`           |              | M                  |
| customerReference               | SWIFT (uppercase only)   | 15           | M                  |
| paymentDetails                  | SWIFT                    | 80           | O                  |
| instructionForSenderBank        | SWIFT                    | 35           | O                  |
| receiver.name                   | SWIFT                    | 22           | M                  |
| receiver.bankAccountNumber      | Numeric                  | 17           | M                  |
| receiver.bankName               | SWIFT                    | 35           | M                  |
| receiver.accountType            | `CHECKING` or `SAVINGS`  |              | M                  |
| receiver.localRoutingIdentifier | Numeric (routing number) | 9            | M                  |
| receiver.address                | SWIFT                    | 35 chars x 3 | O                  |

Note: `CCD` subtype is for sending to corporate accounts, it can only send to `CHECKING` account type. `PPD` subtype is for sending to personal accounts, it can use either `CHECKING` or `SAVINGS`.

Example:

```json
{
  "type": "US_ACH",
  "subtype": "CCD",
  "currency": "USD",
  "payments": [
    {
      "amount": 100,
      "customerReference": "REF 01",
      "receiver": {
        "name": "Recipient Name",
        "bankName": "Test Bank",
        "localRoutingIdentifier": "123456789",
        "bankAccountNumber": "987654321",
        "accountType": "CHECKING"
      }
    },
    {
      "amount": 200,
      "customerReference": "REF 02",
      "receiver": {
        "name": "Recipient Two",
        "bankName": "Test Bank",
        "localRoutingIdentifier": "123456789",
        "bankAccountNumber": "967854321",
        "accountType": "CHECKING"
      }
    }
  ]
}
```

## US\_WIRE\_DOM [#us_wire_dom]

US Domestic Wire

* Use `US_WIRE_DOM` for book transfer and USD payments, use `US_WIRE_INTL` for other currencies

| field                           | pattern / charset                                                                                                                                                                                      | max length   | mandatory/optional |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------ | ------------------ |
| customerReference               | SWIFT (uppercase only)                                                                                                                                                                                 | 16           | M                  |
| paymentDetails                  | SWIFT                                                                                                                                                                                                  | 140          | O                  |
| bankChargeBearer                | `SENDER` or `RECEIVER` or `SHARED`<br /> Default to `SHARED` if not provided.                                                                                                                          |              | O                  |
| instructionForSenderBank        | SWIFT                                                                                                                                                                                                  | 35           | O                  |
| receiver.name                   | SWIFT                                                                                                                                                                                                  | 140          | M                  |
| receiver.bank                   | Alphanumeric                                                                                                                                                                                           | 11           | M                  |
| receiver.localRoutingIdentifier | Either `bank` or `localRoutingIdentifier` must be provided (not both) <br /><br /> 4 digits: USCH (CHIPS ABA / participant number)<br /> or 6 digits: USCHU (CHIPS UID)<br /> or 9 digits: USABA (ABA) | 9            | M                  |
| receiver.intermediaryBank       | Alphanumeric                                                                                                                                                                                           | 11           | O                  |
| receiver.bankName               | SWIFT                                                                                                                                                                                                  | 35           | M                  |
| receiver.bankAccountNumber      | Alphanumeric                                                                                                                                                                                           | 34           | M                  |
| receiver.address                | SWIFT                                                                                                                                                                                                  | 35 chars x 3 | O                  |

## US\_WIRE\_INTL [#us_wire_intl]

* Use for any foreign currency except for USD

| field                      | pattern / charset                                          | max length   | mandatory/optional |
| -------------------------- | ---------------------------------------------------------- | ------------ | ------------------ |
| customerReference          | SWIFT (uppercase only)                                     | 16           | M                  |
| paymentDetails             | SWIFT                                                      | 140          | O                  |
| bankChargeBearer           | Only accept `SHARED`. Default to `SHARED` if not provided. |              | O                  |
| instructionForSenderBank   | SWIFT                                                      | 35           | O                  |
| receiver.name              | SWIFT                                                      | 140          | M                  |
| receiver.bank              | Alphanumeric                                               | 11           | M                  |
| receiver.intermediaryBank  | Alphanumeric                                               | 11           | O                  |
| receiver.bankAccountNumber | Alphanumeric                                               | 34           | M                  |
| receiver.address           | SWIFT                                                      | 35 chars x 3 | O                  |

## US\_RTP [#us_rtp]

<Callout type="warn" title="Important">
  * Receiver structured address must be provided. `line1`, `postalCode`, `city`, `state` and `country` are mandatory.
</Callout>

| field                           | pattern / charset                                         | max length | mandatory/optional |
| ------------------------------- | --------------------------------------------------------- | ---------- | ------------------ |
| customerReference               | SWIFT (uppercase only)                                    | 16         | M                  |
| paymentDetails                  | SWIFT                                                     | 140        | O                  |
| instructionForSenderBank        | SWIFT                                                     | 35         | O                  |
| receiver.name                   | SWIFT                                                     | 140        | M                  |
| receiver.localRoutingIdentifier | only accept 9 digits ABA code                             | 9          | M                  |
| receiver.bankAccountNumber      | Alphanumeric                                              | 34         | M                  |
| receiver.address.line1          | SWIFT                                                     | 70         | M                  |
| receiver.address.city           | SWIFT                                                     | 35         | M                  |
| receiver.address.state          | 2-char upper case state abbreviation <br /> Example: `NY` | 2          | M                  |
| receiver.address.postalCode     | SWIFT                                                     | 16         | M                  |
| receiver.address.country        | 2-char upper case ISO country code                        | 2          | M                  |
