Bulk importing payments
CSV Import
Single payments can be created for multiple existing customers in bulk via a CSV import.
IMPORTANT: Please note that:
- You cannot add new, or update details for existing customers into the payments import CSV. The upload will return an error.
- There is a character limit of 100 characters per cell.
- Click Payments
- Select Import
- Click Download template
-
Once downloaded, click the blue .csv link in the Export window to open
A link to download the export will also be emailed to you
- Enter the payment amount, description, and charge dates* into the respective rows of the customers you wish to create payments for (columns G, I, and J). Please note: There is a character limit of 100 characters per cell.
- Save the updated csv file
- Return to your dashboard and click Choose file to upload your saved csv
-
Click Import payments
If there are any errors in your uploaded file, this will be highlighted on the Imports page. You will then be required to correct the errors and then re-upload the csv.
-
Once the upload has successfully validated, you will see confirmation of this on the Imports page.
Here, you can confirm that the payments you have created for each customer entry are correct via the Valid rows section at the bottom.
- When you're ready, click Process payments.
If you now navigate to the Payments page of your dashboard via the blue menu on the left, you should see these payments available to view with a pending submission status.
* Entering charge dates
The charge date must be entered in the format YYYY-MM-DD.
You must enter a date that allows for sufficient pre-collection processing time; determined by the advance notice and payment submission deadline requirements of the payment scheme applicable to where your customer is based.
If you wish to collect the payment as soon as possible, you can instead leave the payment.charge_date (column J) field blank.
| COLUMN | COLUMN TITLE | REQUIRES INPUT / ACTION |
|---|---|---|
| A | mandate.id | No |
| B | customer.id | No |
| C | customer.given_name | No |
| D | customer.family_name | No |
| E | customer.company_name | No |
| F | customer.email | No |
| G | payment.amount | Yes |
| H | payment.currency | No |
| I | payment.description | Optional |
| J | payment.charge_date | Optional |
| K | payment.metadata.YOUR_CUSTOM_FIELD | Optional |
Please note: Column K "payment.metadata.YOUR_CUSTOM_FIELD" needs to be given a unique name.
Handling accents in the bulk upload tool
If your customers' details contain accents or other special characters, you might experience issues when we run our automated checks.
This is because spreadsheet software like Excel by default doesn't understand the special characters in the file, so when you save it and upload it back to us, the special characters are corrupted, and the details no longer match up. This is because Excel doesn't handle what is called "UTF-8 encoding" properly.
On Excel on Windows, you can fix this by using the "Import Text File" tool to open the CSV file.
On Mac, Excel isn't able to open UTF-8 encoded files at all. You'll need to use alternative spreadsheet software (for example Apple's Numbers) or edit the CSV file carefully using a text editor.
XML Import
GoCardless supports bulk payment creation via PAIN.008 XML files — the industry-standard format exported directly by ERP and accounting systems. This means you can start processing SEPA Direct Debit payments immediately, using the files your system already generates, without any manual conversion.
Before you start, make sure:
- Your organisation has SEPA Direct Debit enabled on your GoCardless account
- Your file is in PAIN.008.001.08 or PAIN.008.001.02 format (other versions are not accepted)
- Your file is under 20 MB
How it works:
- Click Payments
- Select Import
- Upload your PAIN.008.001.08 XML file — GoCardless detects the file type automatically
- Review the payments on the confirmation screen, including any errors flagged at the transaction level
- Click Process payments when you're ready.
The review screen, error handling, and processing steps are identical to the existing CSV import flow. If you're familiar with CSV imports, you already know how to use XML imports.
FAQs
Is the XML import feature available to all GoCardless merchants?
Can I upload an XML file to create SEPA Direct Debit payments in the GoCardless dashboard?
Which XML file format does GoCardless support?
Do I need a template to create my XML file?
Do I need to do anything differently when uploading an XML file versus a CSV file?
What is the maximum file size I can upload?
I use an ERP system (such as SAP or Microsoft Dynamics) that exports PAIN.008 XML files. Will these work?
Do I need to notify the customers of the mandate migration?
What happens if a mandate in my XML file doesn't exist in GoCardless yet?
Some transactions in my file failed. Does that mean my whole file is rejected?
What errors might cause my entire XML file to be rejected?
I uploaded an XML file but I'm getting an error about the wrong version. What should I do?
How can I tell whether my import was processed as a CSV or an XML file?
Getting Started & Eligibility
Is the XML import feature available to all GoCardless merchants?
XML imports are available to merchants who have SEPA Direct Debit enabled on their GoCardless account. If you don't yet have access to XML imports, please reach out to your account manager or our support team and we'll get you set up.
Can I upload an XML file to create SEPA Direct Debit payments in the GoCardless dashboard?
Yes! If your organisation’s SEPA scheme is enabled, you can upload a PAIN.008.001.08 XML file directly through the dashboard, without any conversion needed. This is the same file your ERP or accounting system already generates for bank submission, so you can start processing payments right away.
Which XML file format does GoCardless support?
GoCardless supports the PAIN.008.001.08 format, which is the ISO 20022 standard for SEPA Direct Debit initiation. If you try to upload an older version (such as PAIN.008.001.02), you'll see a clear error message letting you know only version 001.08 is accepted.
Uploading your file
Do I need a template to create my XML file?
No template is needed. Unlike CSV imports, your XML file should be exported directly from your ERP or accounting system (such as SAP, Microsoft Dynamics, or Sage) in PAIN.008.001.08 format. GoCardless reads this file as-is, so there's nothing to fill in or reformat before uploading.
Do I need to do anything differently when uploading an XML file versus a CSV file?
No, the experience is identical. GoCardless automatically detects whether your file is XML or CSV, so you don't need to toggle any settings or change your workflow. You'll see the same review screen, the same error reporting, and the same processing steps either way.
What is the maximum file size I can upload?
The file size limit is 20 MB, which is the same limit that applies to CSV imports. For most merchants, this comfortably accommodates tens of thousands of transactions per file.
Mandates & Customers
I use an ERP system (such as SAP or Microsoft Dynamics) that exports PAIN.008 XML files. Will these work?
Yes, that's exactly what this feature is designed for. GoCardless reads the mandate reference (called "MndtId") from your XML file, which is the same reference your ERP system uses internally. You don't need to replace these references with GoCardless-specific IDs.
Do I need to notify the customers of the mandate migration?
Yes, under bank debit scheme requirements, you are required to notify customers of the change in SEPA Direct Debit provider, any changes to their mandate reference, and confirmation of the old and new CID. The letter should also detail the date the change will occur. For more information on the requirements, see here
What happens if a mandate in my XML file doesn't exist in GoCardless yet?
As part of onboarding with GoCardless, we recommend migrating your existing customers and mandates into your account so that your XML files process smoothly from day one. If a mandate reference in your file doesn't match an existing mandate in GoCardless, for example, if the mandate wasn't included in your initial migration, GoCardless will automatically migrate the mandate using the details in your XML file, but you will be required to confirm this migration in the dashboard. The migration ensures that mandates you've previously set up with your clients can be used to create payments through GoCardless. This is a safety net to ensure no payments are missed, but we don't recommend relying on it as a substitute for a complete customer migration during onboarding, as timing mismatches between when payments are created and when mandates become active can affect your processing.
Errors & Troubleshooting
Some transactions in my file failed. Does that mean my whole file is rejected?
Not necessarily. There's a difference between file-level errors and transaction-level errors:
- File-level errors (such as an unsupported XML version or a corrupted file) will reject the entire upload. You'll see the reason clearly on the import detail page.
- Transaction-level errors (such as an invalid bank account number on a specific payment) only affect those individual transactions. The rest of your payments will proceed normally, and you can download an error report as a CSV to see exactly which transactions need attention and why.
What errors might cause my entire XML file to be rejected?
Your file will be rejected if any of the following apply:
- It uses an unsupported PAIN.008 version (PAIN.008.001.08 and PAIN.008.001.02 are accepted)
- It isn't a valid or parseable XML document
- It fails structural validation against the PAIN.008.001.08/PAIN.008.001.02 standard
- It contains a payment type other than SEPA Core Direct Debit (B2B direct debit is not supported)
- The transaction count or total amount in the file header doesn't match the actual contents
- The same file has already been imported (GoCardless detects duplicates using the file's unique Message ID)
In each case, you'll see a specific error message explaining what went wrong.
I uploaded an XML file but I'm getting an error about the wrong version. What should I do?
GoCardless supports PAIN.008.001.08 and PAIN.008.001.02. If your ERP or bank software is generating an older version, you'll need to update your export settings to one of these output versions. Check your export configuration or contact your ERP vendor for help.
Import history & Tracking
How can I tell whether my import was processed as a CSV or an XML file?
Your import history in the dashboard shows a label , either "CSV" or "XML", next to each import so you can easily tell them apart.