Bank payment rules

Acme Citibank 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

  • 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  
  • Citi restrictions:

    • For SWIFT character set: do not start a field with any of the following characters: /, -, :

US_ACH

fieldpattern / charsetmax lengthmandatory/optional
subtype (at batch level)CCD or PPDM
customerReferenceSWIFT (uppercase only)15M
paymentDetailsSWIFT80O
instructionForSenderBankSWIFT35O
receiver.nameSWIFT22M
receiver.bankAccountNumberNumeric17M
receiver.bankNameSWIFT35M
receiver.accountTypeCHECKING or SAVINGSM
receiver.localRoutingIdentifierNumeric (routing number)9M
receiver.address.line1SWIFT35O
receiver.address.line2SWIFT35O
receiver.address.citySWIFT35O
receiver.address.stateSWIFT35O
receiver.address.postalCodeSWIFT16O
receiver.address.countryISO 3166-1 alpha-22O

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:

{
  "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 Domestic Wire

  • Use US_WIRE_DOM for book transfer and USD payments, use US_WIRE_INTL for other currencies
    fieldpattern / charsetmax lengthmandatory/optional
    customerReferenceSWIFT (uppercase only)16M
    paymentDetailsSWIFT140O
    bankChargeBearerSENDER or RECEIVER or SHARED
    Default to SHARED if not provided.
    O
    instructionForSenderBankSWIFT35O
    receiver.nameSWIFT140M
    receiver.bankAlphanumeric11M
    receiver.localRoutingIdentifierEither bank or localRoutingIdentifier must be provided (not both)

    4 digits: USCH (CHIPS ABA / participant number)
    or 6 digits: USCHU (CHIPS UID)
    or 9 digits: USABA (ABA)
    9M
    receiver.intermediaryBankAlphanumeric11O
    receiver.bankNameSWIFT35M
    receiver.bankAccountNumberAlphanumeric34M
    receiver.address.line1SWIFT35O
    receiver.address.line2SWIFT35O
    receiver.address.citySWIFT35Conditional: M if address is provided
    receiver.address.stateSWIFT35O
    receiver.address.postalCodeSWIFT16O
    receiver.address.countryISO 3166-1 alpha-22Conditional: M if address is provided

US_WIRE_INTL

  • Use for any foreign currency except for USD
    fieldpattern / charsetmax lengthmandatory/optional
    customerReferenceSWIFT (uppercase only)16M
    paymentDetailsSWIFT140O
    bankChargeBearerOnly accept SHARED. Default to SHARED if not provided.O
    instructionForSenderBankSWIFT35O
    receiver.nameSWIFT140M
    receiver.bankAlphanumeric11M
    receiver.intermediaryBankAlphanumeric11O
    receiver.bankAccountNumberAlphanumeric34M
    receiver.address.line1SWIFT35O
    receiver.address.line2SWIFT35O
    receiver.address.citySWIFT35Conditional: M if address is provided
    receiver.address.stateSWIFT35O
    receiver.address.postalCodeSWIFT16O
    receiver.address.countryISO 3166-1 alpha-22Conditional: M if address is provided

US_RTP

Important

  • Receiver structured address must be provided. line1, postalCode, city, state and country are mandatory.
fieldpattern / charsetmax lengthmandatory/optional
customerReferenceSWIFT (uppercase only)16M
paymentDetailsSWIFT140O
instructionForSenderBankSWIFT35O
receiver.nameSWIFT140M
receiver.localRoutingIdentifieronly accept 9 digits ABA code9M
receiver.bankAccountNumberAlphanumeric34M
receiver.address.line1SWIFT70M
receiver.address.citySWIFT35M
receiver.address.state2-char upper case state abbreviation
Example: NY
2M
receiver.address.postalCodeSWIFT16M
receiver.address.country2-char upper case ISO country code2M

Bank references

bankReference is AcctSvcrRef, else ClrSysRef, from Citi's status report on the payment. bankReferences lists every reference Citi sent, keyed by Citi's field name: AcctSvcrRef, ClrSysRef and StsId, as Citi sends them.

On your Citi statement: the line shows a different Citi reference. Find the payment by your customerReference.

What the names mean:

  • AcctSvcrRef: Citi's own reference for the transaction.
  • ClrSysRef: the clearing system's reference.
  • StsId: the id of Citi's status entry.

A rejected payment keeps the references from the report that rejected it.

A completed payment sent as a file returns:

{
  "bankReference": "01720322200000001",
  "bankReferences": {
    "AcctSvcrRef": "01720322200000001"
  }
}

On this page