Skip to main content

How do I send bulk payments?

Updated over a month ago

Whether you’re settling a dozen local invoices or dozens of international transfers, you can now turn a spreadsheet into a ready-to-send batch payment in minutes.

With Bulk Payments, you simply upload a CSV file to Loop. 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 a single dollar moves, giving you both speed and total control.

Note: this tool is reserved for teammates who run money movement and is permission controlled to Admins, or anyone granted Manage payments or Create payee payments access.

Before You Start

  1. 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.

  2. Check that you have the right source account for each currency (see “source_account” section below).

  3. Confirm which routing code values each country needs (see “Country-specific bank details” section below).

CSV Instructions

Source Account

Field

Required

Description

source_account

No

Account to withdraw funds from. If blank, uses internal account matching payment_currency. See "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

email

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., 00112345112345). 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 "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, it 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

FAQ

  • 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 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.

Did this answer your question?