Create Payment Orders in Bulk

A guide to bulk Payment Order creation using CSV uploads.


Within Modern Treasury, you have the option to create individual Payment Orders or create Payment Orders in bulk with CSV uploads.

🚧

Case-sensitive values

Values are case-sensitive and should match the guidance shown below.

🚧

Record limit

You can upload a maximum of 1,000 Payment Orders with one CSV.

Create Payment Orders in bulk

  1. Login to Modern Treasury.

  2. Navigate to the Payment Orders page.

  3. From the Create New dropdown menu, select Bulk Payment Order to go to the bulk import page.

    • From here, you can click the Download Template CSV button to obtain a template CSV that includes all possible header fields. See the "Bulk Counterparty CSV Guidance" section in this guide for more information about each column.
  4. If you have a file ready, click Import Payment Orders to open the import modal.

  5. Click Upload file in the modal and select the CSV you wish to upload.

  6. Once uploaded, the tool maps your columns to the accepted fields needed to create the Payment Orders. Verify the mapped columns and click Continue.

  7. The tool will identify any cells that need to be reviewed by highlighting them in red. Make your edits as necessary.

  8. Once you are ready to submit, click on the Submit uploaded data button in the top right.

    1. If there are no errors, you will see a success modal. Click on View Bulk Import to open a new tab to the resulting bulk import.

    2. If there are data errors, you will see a submission failure message:

      The tool will highlight any cells with remaining errors in red along with an error message. Make your corrections and re-attempt the upload as necessary.

Bulk Payment Order CSV Guidance

Payment Order Attributes

AttributeRequiredData TypeDescription
originating_account_idYesstringThe ID of one of your organization's originating accounts.

This attribute can be located underneath the on the Payment Order upload screen. Your internal account will always be the originating account.
typeYesstringDesignates the payment type you would like to request for the payment orders (e.g. ach, wire, book, etc). Case sensitive.
subtypeNostringAn additional layer of classification for the type of payment order you are doing. This attribute is only used for ach payment orders currently.

For ach payment orders, the subtype represents the SEC code. We currently support CCD, PPD, IAT, CTX, WEB, CIE, and TEL.

When Modern Treasury initiates an ACH payment on your behalf, the SEC Code is set automatically. When the receiving account's party_type is individual, the PPD code is used. When party_type is business or isn't set, CCD is used.
priorityNo
Default: normal
stringFor ACH and EFT payments, high represents a same-day ACH or EFT transfer, respectively. For check payments, high can mean an overnight check rather than standard mail
process_afterNostring

Format: ISO 8601 timestamp
If present, Modern Treasury will not process the payment until after this time. If process_after is past the cutoff for effective_date, process_after will take precedence and effective_date will automatically update to reflect the earliest possible sending date after process_after.
purposeNostringThis attribute means different things depending on the payment type:

For wire, this is usually the purpose which is transmitted via the InstrForDbtrAgt attribute in the ISO20022 file.

For CurrencyCloud, this is the payment.purpose_code attribute.

For eft, this attribute is the 3 digit CPA Code that will be attached to the payment.
amountYes or dollar_amountinteger

Format: cents
This attribute needs to be filled in if you want to designate the value in cents. Examples:

10 = $0.10
1000 = $10.00
1234 = $12.34

If you use this attribute, do not use the dollar_amount attribute.
dollar_amountYes or amountfloat(2)
Format: dollars without symbol
This attribute needs to be filled in if you want to designate the value in cents. Examples:

10 = $0.10
10.00 = $10.00
1234 = $12.34

If you use this attribute, do not use the amount attribute.
directionYesstringA credit moves money from your account to someone else's. A debit pulls money from someone else's account to your own.
Case sensitive.

Note: wire and check payment types will always be credit.
effective_dateNostring

Format: YYYY-MM-DD
The effective date is the date transactions are to be posted to the counterparty's account. If you wish to future date a payment order, you will want to fill in this attribute. If this attribute is not filled, it will default to the next business date.
descriptionNostringThis attribute is solely for internal use anything included within this attribute will not be visible to the Counterparty.
statement_descriptorNostringThe bank statement description should be used for your Counterparties to see more detail within their bank statement. This oftentimes defaults to including your company name, but there is room to include at least 10 more characters.
remittance_informationNostringRemittance information is typically another attribute that can be utilized to describe the money that is being sent.
For ACH, this field will be passed through on an addenda record and can include up to 80 characters.

If this field is left blank then an addenda record would not be created.

For wire payments the field will be passed through as the Originator to Beneficiary Informationand can include up to 140 characters.
metadataNostringAdditional data represented as key-value pairs separated by a | (pipe character).

Note: do not include special characters, outside of : and |
charge_bearerNostringThe party that will pay the fees for the payment order. Only applies to wire payment orders.

The values correspond to the SWIFT 71A values as follows:

Shared: SHA (SHAred)
Sender: OUR
Receiver: BEN (BENeficiary)
foreign_exchange_contractNostringIf present, indicates a specific foreign exchange contract number that has been generated by your financial institution.
foreign_exchange_indicatorNostringIndicates the type of FX transfer to initiate if the payment order currency matches the originating account currency.

Counterparty Attributes

The following attributes referring to counterparties will be dependent on whether a counterparty has or has not already been created within Modern Treasury.

If the Counterparty exists in Modern Treasury

AttributeRequiredData TypeDescription
counterparty_account_idYesstringSupports both Internal Accounts and External Accounts.

If the Counterparty does not exist in Modern Treasury

AttributeRequiredData TypeDescription
counterparty_nameYesstringSupports both Internal Accounts and External Accounts.
counterparty_routing_numberYesstringRouting number of the counterparty.
counterparty_routing_typeYesstringEither aba, swift or ca_cpa.
Case sensitive.
counterparty_account_numberYesintegerAccount number of the counterparty.
counterparty_account_number_typeNo if domestic Payment OrderstringSupports iban and clabe. Otherwise null if the bank account number is in a generic format.
Case sensitive.
counterparty_account_typeNostringCan be checking, savings or other.
counterparty_party_typeNostringEither individual or business.
counterparty_address_line_1NostringStreet address of the Counterparty.

Required for Wire Payment Orders.
counterparty_address_line_2NostringStreet address extended of the Counterparty.

Required for Wire Payment Orders.
counterparty_address_localityNostringCity of the Counterparty.

Required for Wire Payment Orders.
counterparty_address_regionNostringState of the Counterparty.

Required for Wire Payment Orders.
counterparty_address_postal_codeNostringPostal/region code of the Counterparty.

Required for Wire Payment Orders.
counterparty_address_countryNostringCountry of the Counterparty.

Required for Wire Payment Orders.

Continuous Accounting Attributes

AttributeRequiredData TypeDescription
accounting_class_idNostringThese IDs can be found in your organization settings page.
You should only use accounting_class_id or accounting_class_name (not both).
accounting_class_nameNostringThese names can be found in your organization settings page.
You should only use accounting_class_id or accounting_class_name (not both).
accounting_account_idNostringThese IDs can be found in your organization settings page.
You should only use accounting_account_id or accounting_account_name (not both).
accounting_account_nameNostringThese names can be found in your organization settings page.
You should only use accounting_account_id or accounting_account_name (not both).