> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Batch API Overview

> The Batch API allows you to upload held account data records in properly formatted and encrypted CSV files via SFTP. MX can provide a response file for each batch file submitted.

## Check Files

Ensure your batch files are correctly formatted before submitting them to MX for processing by using our Batch File Checker:

1. Download the [Batch File Checker](./assets/batch-file-checker.zip), unzip it, and open csv-checker/index.html.
2. Follow the instructions presented on the webpage.

Use the sample CSV files included in the zip as guidance for file formatting and naming schema.

## File Format

Batch files for creating users, members, accounts, and transactions must adhere to the following standardized format:

* Encoding: UTF-8.
* Format: CSV.
* Quoting: Use field quoting when necessary.
* Header Row: Required to specify the fields you're providing. For which fields are required/optional for each file, see [File Contents](/api-reference/more-apis/batch-api/file-contents/).
* Customization: Line ending, separator, and quote characters are customizable.

## Initial SFTP Setup

To set up access to MX's integration and production SFTP servers:

1. Provide source and destination IP addresses (and domain name, if applicable) for whitelisting.
2. MX will securely provide usernames and passwords for both integration and production environments, and port numbers.
3. (Optional) MX will provide [public PGP keys](#pgp-keys) for integration and production environments. All batch files must be encrypted with the environment-specific MX public PGP key.
4. (Optional) If you require response files, provide MX with:
   * SFTP URL and login information for your test and production servers.
   * Destination IP addresses for your SFTP server.
   * (Optional) Your public PGP key.

## Sending Files via SFTP

To send batch files to MX's SFTP server:

1. Prepare each file, ensuring proper formatting, file-naming requirements, and optional encryption with the environment-specific MX public PGP key.
2. Log into the MX SFTP server.
3. Navigate to the upload directory (default: `files` folder).
4. Upload files using SFTP commands.
5. If requested, MX will upload encrypted response files (using your provided PGP key, if applicable) to your SFTP server.

## SFTP Hostname and Port

The MX SFTP hostnames for each MX environment are as follows:

* MX Integration Environment: `int-sftp.mx.com`
* MX Production Environment: `sftp.mx.com`

MX uses a non-standard port, which will be provided with your credentials.

## PGP Keys

These keys are used to encrypt files.

Use the key that matches the target environment:

### Integration Environment Public Key

```pgp theme={null}
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBGoGS8IBEADWFWtg2pNKfSNstBe1qNFiohYs9ZICIwFQXeWOKZPNXdhjPF+c
8B3G2IJtWYUqCAmQiwIsWxRuV0cwPMizA9OCXXASYTq7YOFNhDf0LdAmhFU4SkU7
2xvHzqEzzk4CmCwPk4V9HewNWyRaW5FtDaB61gSnKKAWY+5FaL3wxdGPdDScenO+
K2JimNmiOg2cNuM0wHYJ6YrJ03qu7OxZ6L69SYGq+M/DvY6Q7bu2Y8h0oaFVbA23
ey1EknjHel83vaIOlvuuM4UezUyNXvNp8tfX3ugrdg5KOt35czIXqSASWNE25mOX
623hhTp2dpZ67blflEVfGm928DpefJ70nn557I+ysopguIw63NJ0B/qjf1al26gd
J8pRipdgUA1MnHFr+1LOjtAEqfw/ORkkdKg3GanZfCEJsSSq3pFdCtYhFN9M1mXI
arg4SZkRwlixOb4cL+FRk6CN4kwQ0yamLAG87tPpnmeVwEGbll7nZvh8fSTXPzgt
MLYSWxm1DmiIRWJ5iu4bBDJI9/pzvroEIKwudWzX/PgraHgWxk/qK2iJbVGQQvLl
uIe14BhNDiMSmE2rIgEIN7zktFA2QdRrkubctPz63i0dlO2rOWdvoG0GI2q7rq+x
H+F0si0SQzdCkkBnEN6vKjcg4FDYhGl5BE1z+PQy5J8PLXNZUqHIwu/+NwARAQAB
tHFNWCBJbnRlZ3JhdGlvbiAodGhpcyBpcyBhIGtleSBmb3Igc2VuZGluZyBlbmNy
eXB0ZWQgZGF0YSB0byB0aGUgTVggaW50ZWdyYXRpb25zIGVudmlyb25tZW50KSA8
aW50ZWdyYXRpb25AbXguY29tPokCcwQTAQgAXRYhBMGu0NrkbNiHpN7L0sVYBao8
gol+BQJqBkvCGxSAAAAAAAQADm1hbnUyLDIuNSsxLjEyLDAsMwIbAwUJEswDAAUL
CQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRDFWAWqPIKJfj9GEAC6QNvkR2yy
pIL9FfvIoWIZnUWrm9qU1n9Duy3w7a0vOvx5SmZojxMXZH74YOACdRi7hD3ehrs4
BMkXytZZm4sXbdQxg52DzpIoCRcTuWBOCVFSQp2pwxSz1kaRhH+PiF4o/XBz8K/e
9/5lBkGOYdQg9ZxI5ALPJQF7SsZOe3Cwzsi03YweVVFWWPu7KFgGrUttedLGbvRa
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
/M9bHQ==
=hzX+
-----END PGP PUBLIC KEY BLOCK-----
```

### Production Environment Public Key

```pgp theme={null}
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=pUgt
-----END PGP PUBLIC KEY BLOCK-----
```

## Identifiers

Users, members, accounts, and transactions use identifiers provided by your system. This enables retrieval via other MX APIs using your system's identifiers.

We recommend identifiers consist of letters, numbers, dashes, and underscores, and are less than 1,024 bytes. Common choices include 128-bit [UUIDs](https://en.wikipedia.org/wiki/Universally_unique_identifier) or 64-bit sequential integers.

## Date and Times

Batch API resources often include `_at` and `_on` fields. Provide dates using either format, but not both:

* `_at`: Unix datetime.
* `_on`: ISO 8601 dates (for example, YYYY-MM-DD). Zero pad the month and day.

## File Naming and Size

Batch files must follow a fixed naming convention. Each batch filename will have four portions plus the filename extensions. A manifest filename has three portions plus the filename extensions. Files that are not named correctly will not be processed.

**Filename Format:**

* Batch files: `PREFIX.TYPE.DATE.SUFFIX.csv.pgp`
* Manifest file: `PREFIX.Manifest.DATE.csv.pgp`

### Batch File Naming Convention

| Portion  | Description                                                                                                                          | Example Value                                          | Required?               |
| :------- | :----------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------- | :---------------------- |
| `PREFIX` | Groups files into a batch for a given date. Must be the same for all files in a batch; unique with `DATE` across all client batches. | `Bank`, `PreloadGroup`                                 | Yes                     |
| `TYPE`   | Object type (singular). Must be one of the allowed types; `Manifest` for manifest files.                                             | `User`, `Member`, `Account`, `Transaction`, `Manifest` | Yes                     |
| `DATE`   | ISO 8601 date (`YYYY-MM-DD` or `YYYYMMDD`). Must be the same for all files in a batch.                                               | `2017-02-01`                                           | Yes                     |
| `SUFFIX` | Differentiates files of the same type within a batch. Increment for multiple files of same type; omit for `Manifest` files.          | `Split001`, `part001`, `Complete`                      | Yes (except `Manifest`) |
| `.csv`   | File extension. Always required.                                                                                                     | `.csv`                                                 | Yes                     |
| `.pgp`   | File extension for PGP-encrypted files. Required if file is PGP-encrypted.                                                           | `.pgp`                                                 | Conditional             |

**Full Format:**

* `PREFIX.TYPE.DATE.SUFFIX.csv.pgp`
* Manifest: `PREFIX.Manifest.DATE.csv.pgp`

**Filename Examples:**

* `Bank.User.2016-12-31.Split001.csv.pgp`
* `BackfillProject.Member.2017-01-20.Split002.csv.pgp`
* `Credit.Account.2017-02-01.Part01of01.csv.pgp`
* `MyBank.Transaction.2017-02-01.Complete.csv.pgp`

### Batch Definition

A batch is a group of batch files that are intended to be processed together. The batch is identified by the combination of the `PREFIX` and `DATE` fields in the filenames. Every file in the batch must have the same `PREFIX` and `DATE` values, and the combination of those values must be unique across all batches for the client. If multiple batches are uploaded with the same `DATE` value, they must have different `PREFIX` values to be considered separate batches.

Example filenames for a batch file group containing one each of user, member, and account files, two transaction files, and the manifest file:

```
PreloadGroup.Manifest.2017-10-31.csv.pgp
PreloadGroup.User.2017-10-31.batch001.csv.pgp
PreloadGroup.Member.2017-10-31.batch001.csv.pgp
PreloadGroup.Account.2017-10-31.batch001.csv.pgp
PreloadGroup.Transaction.2017-10-31.part001.csv.pgp
PreloadGroup.Transaction.2017-10-31.part002.csv.pgp
```

### Prefix

The `PREFIX` groups files from the same `DATE` into a batch, ensuring sequential processing according to the [MX Architecture hierarchy](/products/connectivity/overview/data-architecture) (for example, users → members → accounts → transactions).

For example, a transactions file named `Bank.Transaction.20170202.Split001.csv.pgp` will not be processed until the user, member, and account files prefixed with `Bank` and having date `2017-02-02` have completed processing.

In contrast, independent data sets for a particular `DATE` can be given a different `PREFIX` value. MX will consider that set of files a different batch because of the different `PREFIX`. A batch using the same `2017-02-02` date as in the example above, but using `Backfill` as its prefix, won't wait for the batch with `Bank` as its prefix to complete before it starts processing. The batches will be processed in parallel.

### Type

The `TYPE` indicates the object type and must be one of: `User`, `Member`, `Account`, `Transaction`, or `Manifest`. Use the singular form only.

### Date

The `DATE` must be an ISO 8601 date with a four-digit year and zero-padded month and day (`YYYY-MM-DD` or `YYYYMMDD`). Note that this date represents the data itself, not necessarily the date of transmission. While it often coincides with the upload date for daily processing, it should reflect the historical date when sending backfill data. This `DATE` must be consistent for all files within the batch.

### Suffix

The `SUFFIX` differentiates unique files of the same type within a batch. For example, if multiple Transaction files are being included in the batch, the `SUFFIX` allows them to be uniquely named. A recommended practice is to use a `SUFFIX` ending with a number and incrementing the number for each file of that type (`part001`, `part002`, and so on). A file of type `Manifest` does not require a suffix.

### File Size

* **Recommended**: 1 million records or fewer for optimal performance.
* **Maximum**: 3 million records. Larger datasets must be split.

## Upload Order

Objects must be created following the [MX Architecture](/products/connectivity/overview/data-architecture) hierarchy. Group batches appropriately and upload them in the correct order to avoid errors. For example, transactions can't be created before the user, member, and account records have been created.

Early integrations that did not use manifest files had to ensure files were uploaded in strict hierarchy order to ensure files in the same batch were processed in the correct order.

Manifest files (required for all new integrations) ensure all files for a batch are received before processing starts, and ensure they are processed in the correct order.

When doing an initial data load, it is sometimes easier for a client to use separate batches to create each object in the MX hierarchy rather than trying to create them all in a single batch. In such a case, the batches must be uploaded in strict MX hierarchical order to ensure parent objects are created before child objects that attach to them. The order is:

1. User files
2. Member files
3. Account files
4. Transaction files

This ensures hierarchical objects are created in the correct sequence.

## Manifest Files

Manifest files are required for all new integrations. The manifest lists all files that MX should expect to receive for that batch and allows optional checksums for each file, guaranteeing correct processing and data integrity.

It is a best practice to send the manifest file first. MX will begin processing the batch only when all listed files are received, and no files will be processed that aren't listed in the batch manifest.

### Manifest File Naming

Manifests follow the same naming pattern: `PREFIX.TYPE.DATE.csv.pgp`. Use the `PREFIX` and `DATE` values for the batch, set `TYPE` to `Manifest`, and omit the `SUFFIX`.

Example: `Bank.Manifest.2016-12-31.csv.pgp`

### Manifest File Contents

Manifests must be in CSV format. The filenames must be listed exactly as they will be sent to MX, including filename extensions. If the batch is encrypted, each batch file must be PGP encrypted and the manifest file itself must also be PGP encrypted and include the `.csv.pgp` extensions.

Two columns are supported:

| Field      | Description                                               | Required? |
| :--------- | :-------------------------------------------------------- | :-------- |
| `filename` | The name of the file in the batch (including extensions). | Yes       |
| `checksum` | The SHA256 checksum of the unencrypted file.              | No        |

An example of manifest file contents follows.

```
filename,checksum
Bank.User.2020-04-13.Split001.csv.pgp,389438d0f857041757a754e696375dc2b8089f2423ccbe5e3ff2a0e60ac1544f
Bank.Member.2020-04-13.Split001.csv.pgp,89fbc47675603079be7f9feca7625d8ac38802ac3e2c492edeed04a327db8015
Bank.Account.2020-04-13.Split001.csv.pgp,5474f58d52395952268b10342b45dff780a0039636aba3a21a0b0ad5775d062d
Bank.Transaction.2020-04-13.Split001.csv.pgp,b423960ce42eadd02ab36f3ba9313d5ac2d533ba3a4d2266d15a2df43d46e0c1
```

Note that the checksum, when used, is calculated for the unencrypted file.

## Number Limits

Decimal numbers are defined by precision,scale. Precision is the total number of digits; scale is the number of digits after the decimal. For example, 538.46 has a precision,scale of 5,2.
