Create Payment Orders in Bulk
Within Modern Treasury, you have the option to create individual Payment Orders or create Payment Orders in bulk with CSV uploads.
Case-sensitive valuesValues are case-sensitive and should match the guidance shown below.
Record limitYou can upload a maximum of 1,000 Payment Orders with one CSV.
Create Payment Orders in bulk
-
Login to Modern Treasury.
-
Navigate to the Payment Orders page.
-
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.
-
If you have a file ready, click Import Payment Orders to open the import modal.
-
Click Upload file in the modal and select the CSV you wish to upload.

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

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

-
Once you are ready to submit, click on the Submit uploaded data button in the top right.
-
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.

-
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
| Attribute | Required | Data Type | Description |
|---|---|---|---|
originating_account_id | Yes | string | The 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. |
type | Yes | string | Designates the payment type you would like to request for the payment orders (e.g. ach, wire, book, etc). Case sensitive. |
subtype | No | string | An additional layer of classification for the type of payment order you are doing. This attribute is only used for For When Modern Treasury initiates an ACH payment on your behalf, the SEC Code is set automatically. When the receiving account's |
priority | No Default: normal | string | high priority is only available for ach, eft, and check payment types. For ACH and EFT payments, high represents a same-day transfer. For check payments, high can mean an overnight check rather than standard mail. For all other payment types, high priority payments are treated the same as normal priority payments. |
process_after | No | string
| 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. |
purpose | No | string | This attribute means different things depending on the payment type: For For CurrencyCloud, this is the For |
amount | Yes or dollar_amount | integer
| This attribute needs to be filled in if you want to designate the value in cents. Examples:
If you use this attribute, do not use the |
dollar_amount | Yes or amount |
| This attribute needs to be filled in if you want to designate the value in cents. Examples:
If you use this attribute, do not use the |
direction | Yes | string | A credit moves money from your account to someone else's. A debit pulls money from someone else's account to your own.Case sensitive.
|
effective_date | No | string
| 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. |
description | No | string | This attribute is solely for internal use anything included within this attribute will not be visible to the Counterparty. |
statement_descriptor | No | string | The 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_information | No | string | Remittance information is typically another attribute that can be utilized to describe the money that is being sent. 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 |
metadata | No | string | Additional data represented as key-value pairs separated by a | (pipe character). Note: do not include special characters, outside of : and | |
charge_bearer | No | string | The 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) |
foreign_exchange_contract | No | string | If present, indicates a specific foreign exchange contract number that has been generated by your financial institution. |
foreign_exchange_indicator | No | string | Indicates 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
| Attribute | Required | Data Type | Description |
|---|---|---|---|
counterparty_account_id | Yes | string | Supports both Internal Accounts and External Accounts. |
If the Counterparty does not exist in Modern Treasury
| Attribute | Required | Data Type | Description |
|---|---|---|---|
counterparty_name | Yes | string | Supports both Internal Accounts and External Accounts. |
counterparty_routing_number | Yes | string | Routing number of the counterparty. |
counterparty_routing_type | Yes | string | Either aba, swift or ca_cpa.Case sensitive. |
counterparty_account_number | Yes | integer | Account number of the counterparty. |
counterparty_account_number_type | No if domestic Payment Order | string | Supports iban and clabe. Otherwise null if the bank account number is in a generic format.Case sensitive. |
counterparty_account_type | No | string | Can be checking, savings or other. |
counterparty_party_type | No | string | Either individual or business. |
counterparty_address_line_1 | No | string | Street address of the Counterparty. Required for Wire Payment Orders. |
counterparty_address_line_2 | No | string | Street address extended of the Counterparty. Required for Wire Payment Orders. |
counterparty_address_locality | No | string | City of the Counterparty. Required for Wire Payment Orders. |
counterparty_address_region | No | string | State of the Counterparty. Required for Wire Payment Orders. |
counterparty_address_postal_code | No | string | Postal/region code of the Counterparty. Required for Wire Payment Orders. |
counterparty_address_country | No | string | Country of the Counterparty. Required for Wire Payment Orders. |
Continuous Accounting Attributes
| Attribute | Required | Data Type | Description |
|---|---|---|---|
accounting_class_id | No | string | These IDs can be found in your organization settings page. You should only use accounting_class_id or accounting_class_name (not both). |
accounting_class_name | No | string | These names can be found in your organization settings page. You should only use accounting_class_id or accounting_class_name (not both). |
accounting_account_id | No | string | These IDs can be found in your organization settings page. You should only use accounting_account_id or accounting_account_name (not both). |
accounting_account_name | No | string | These names can be found in your organization settings page. You should only use accounting_account_id or accounting_account_name (not both). |