With Bulk Payments, you can turn a spreadsheet into a ready-to-send batch payment in minutes — whether you're settling local invoices or international transfers.
Upload a CSV file to Loop and we'll automatically identify your existing payees or create new ones directly from your file. You then get a final chance to review and approve the entire batch before any funds move, giving you both speed and total control.
Note: This tool is permission-controlled, available to Admins or anyone granted Manage payments or Create payee payments access.
Before you start
Download the blank CSV template to ensure your column headers match exactly. In the dashboard, go to Send Payments → Bulk Payments → Import Instructions, then download the template.
Check that you have the right source account for each currency (see the "Source Accounts" section below).
Confirm which routing code values each country needs (see the "Requirements by Country & Currency" section below).
How payee matching works
Loop matches each CSV row to an existing payee, or creates a new one, based on the details you provide:
If an email is present and matches an existing payee, the payee-specific details in that row are ignored — the existing payee is not updated.
If the email is blank, the system can still match an existing payee by bank details. To match by bank details, the row needs enough bank information:
bank_country,account_number,payment_currency, and eitherrouting_code_valueorswift_bic_code.Payee information is therefore only required if there is no email. The tables below mark payee fields as required so that new payees (with no matching email) can be created.
CSV instructions
Source Account
Field | Required | Description |
source_account | No | Account to withdraw funds from. If blank, uses internal account matching payment_currency. See the "Source Accounts" section. |
Payee Information
Field | Required | Description |
payee_type | Yes | Type of payee. Values: company or individual |
company_name | Yes (if company) | Legal name of the company. Required when payee_type is company |
first_name | Yes (if individual) | First name of the individual. Required when payee_type is individual. Cannot contain digits |
last_name | Yes (if individual) | Last name of the individual. Required when payee_type is individual. Cannot contain digits |
loop_display_nickname | No | Optional display nickname for the payee |
No | Email address of the payee (must be valid email format if provided) |
Payee Address
Field | Required | Description |
street | Yes | Street address of the payee |
city | Yes | City of the payee |
state_or_province | Yes | State/Province code (e.g., ON for Ontario, CA for California) |
postal_code | Yes | Postal/ZIP code |
country | Yes | ISO 3166-1 alpha-2 country code (e.g., CA, US, GB) |
Bank Account Information
Note: Excel and Google Sheets may automatically remove leading zeros (e.g., 00112345 → 112345). To preserve them, prefix the value with an apostrophe (e.g., '00112345). Loop will ignore the apostrophe during import.
Field | Required | Description |
bank_name | Yes | Name of the bank |
bank_country | Yes | ISO 3166-1 alpha-2 country code of the bank (e.g., CA, US, GB) |
account_number | Yes | Bank account number |
swift_bic_code | Conditional | SWIFT/BIC code. Required for international transfers and EUR accounts |
routing_code_value | Conditional | Routing code for the bank account. The value depends on the payment currency. See the "Requirements by Country & Currency" section |
Payment Information
Field | Required | Description |
payment_amount | Yes | Amount to pay (positive numeric value, e.g., 1000.00) |
payment_currency | Yes | ISO 4217 currency code for the payment (e.g., CAD, USD) |
payment_reason | Yes | Reason/description for the payment. |
notes | No | Additional notes to be attached to the payment email |
send_confirmation_email | No | Whether to send confirmation email to payee. Values: true or false. If blank or not true, defaults to false |
Requirements by country & currency
The routing_code_value field is a universal routing code column. The system maps based on payment_currency:
Canada (CAD)
bank_country: CA
Required fields: account_number, routing_code_value
Format: routing_code_value = institution number (3 digits) followed by transit number (5 digits), e.g., 00112345 where 001 is the institution and 12345 is the transit number
United States (USD)
bank_country: US
Required fields: account_number, routing_code_value
Format: routing_code_value = ABA routing number, e.g., 021000021
United Kingdom (GBP)
bank_country: GB
Required fields: account_number, routing_code_value
Format: routing_code_value = sort code, e.g., 123456
European Union (EUR)
bank_country: One of AT, BE, GR, CY, DE, EE, ES, FI, FR, HR, IE, IT, LT, LU, LV, MT, NL, PT, SI, SK
Required fields: account_number (IBAN), swift_bic_code
Format: account_number = IBAN, e.g., DE89370400440532013000
Note: routing_code_value is not required for EUR accounts as the IBAN already contains the routing information
Mexico (MXN)
bank_country: MX
Required fields: account_number (CLABE)
Format: account_number = CLABE, e.g., 032180000118359719
Note: routing_code_value is not required for MXN accounts as the CLABE already contains the routing information
India (INR)
Required fields: routing_code_value
Format:
routing_code_value = IFSC code, e.g., SBIN0001234
payment_reason = advertising, advisor_fees, construction, education, exports, fund_investment, goods, hotel, insurance_claims, insurance_premium, loan_repayment, medical, other_fees, property_purchase, property_rental, royalties, services, share_investment, tax, transfer, travel, utilities
Australia (AUD)
Required fields: routing_code_value
Format: routing_code_value = BSB code, e.g., 062000
Other Country & Currency Combinations (International)
Required fields: account_number, swift_bic_code
Source accounts
Use the source_account column to specify which account to withdraw funds from. If this field is blank, the internal account with the matching payment_currency will be used.
Internal Accounts. Use the format INTERNAL_{CURRENCY} for internal accounts:
Source Account | Description |
INTERNAL_CAD | CAD internal account |
INTERNAL_USD | USD internal account |
INTERNAL_GBP | GBP internal account |
INTERNAL_EUR | EUR internal account |
Linked Accounts. Use the format EXTERNAL_{CURRENCY}_{LAST4} for external bank accounts, where LAST4 is the last 4 digits of the account number:
Source Account | Description |
EXTERNAL_CAD_1234 | External CAD account ending in 1234 |
EXTERNAL_USD_5678 | External USD account ending in 5678 |
FAQs
Can I create multiple payees at once?
Yes. When you upload the CSV, any row with a new payee will create and save that payee as part of the batch.
Can I pay new and existing payees in the same upload?
Yes. Include full payee details for new payees, and include email for existing payees so Loop can match them.
What happens if a payee already exists and I include new bank/address details in the CSV?
If the email matches a saved payee, Loop uses the saved payee details and ignores the bank/address details from the CSV.
Why did my routing/account value lose a leading zero in Excel/Sheets?
Add a leading apostrophe to preserve it (for example, '021000021). Loop removes the apostrophe automatically when processing the payment.
Can I use an AI assistant to help with Bulk Payments?
Yes. Tools like Claude (or similar AI assistants) can help you populate the CSV faster. A common workflow is to upload the blank and example templates, paste the Help Centre instructions, then provide your payee and payment details and ask the assistant to fill in the template. Always review the final CSV for accuracy before uploading to Loop. Loop Financial isn't responsible for errors in the CSV, whether made by a person or an AI tool.
What should I enter in routing_code_value for CAD payments to Canadian payees?
Enter the 3-digit institution number followed by the 5-digit transit number (8 digits total). Example: '00112345 where 001 is the institution number and 12345 is the transit number. Include a leading apostrophe if the value starts with zero to prevent Excel/Google Sheets from removing the zero.
Why am I getting an authorization error when uploading a CSV file?
Bulk Payments is only available to users with the right payments permissions, and it requires MFA. Confirm you have Admin access (or Manage payments / Create payee payments permissions) and that you've signed in using MFA.
