Upload a payment devices file
POST api/payment_devices/upload
Uploads a file of payment devices to SC//Reliantâ„¢ Platform Manager.
Request syntax
POST api/payment_devices/upload
Content-Type: multipart/form-data
file=@<path_to_file>
Request parameters
The request accepts the following data in the request body.
| Parameter | Type | Description | Required | Default value |
|---|---|---|---|---|
file | File | The CSV file to upload. For the required format, see File format. | Yes | N/A |
File format
The file is a comma-delimited CSV file. Each row can create or update a store, and can also create, update, or move a payment device in that store. A single file can contain rows that do different things.
- The first line must be the following header, with the columns in this order:
Store Name,Store Number,Card Acceptor Identifier,City,Address1,Address2,State,Zip,Country,Phone Number,Timezone,Level of Hierarchy,Register Number,Device IP,Mac Address,Terminal ID,Serial ID,Group,Payment Device Type,Status- Every row must include all 20 columns. Leave a value empty to set it to null.
- Don't enclose values in quotes, and don't use commas inside values.
- Rows are processed in order from the top of the file. If a payment device appears more than once, the last row wins.
- If a payment device's serial number appears in a row for a different store, the device is moved to that store.
IMPORTANT: For an existing store or payment device, an empty value deletes the existing value. For example, leaving Device IP empty removes the device's IP address. Include the current values for any fields you want to keep.
| Column | Required | Description |
|---|---|---|
| Store Name | Yes | The name of the store. Can't be changed by a later import. |
| Store Number | Yes | The store number. The value is numeric, so leading zeros are ignored. Can't be changed by a later import. |
| Card Acceptor Identifier | Yes | The card acceptor identifier (CAID) for the store. |
| City | Yes | The city where the store is located. |
| Address1 | Yes | The street address of the store. |
| Address2 | No | Additional address information. |
| State | Yes | The state where the store is located. |
| Zip | Yes | The zip or postal code of the store, as 5 digits, 9 digits, or 5 digits, a hyphen, and 4 digits. |
| Country | Yes | The country where the store is located. |
| Phone Number | No | The phone number of the store. |
| Timezone | No | The timezone of the store. |
| Level of Hierarchy | Depends on your organization | The level of hierarchy for the store. |
| Register Number | When the row adds or updates a payment device | The register number the payment device is attached to. Must be unique within the store. |
| Device IP | No | The IP address of the payment device. |
| Mac Address | No | The MAC address of the payment device. |
| Terminal ID | No | The terminal ID of the payment device. |
| Serial ID | When the row adds or updates a payment device | The serial number of the payment device. |
| Group | No | An optional label for grouping stores. |
| Payment Device Type | When the row adds or updates a payment device | The name of the payment device type, for example E280FP. Must exactly match the name of a payment device type. See List all payment device types. |
| Status | When the row adds or updates a payment device | The status of the payment device. One of: Awaiting deployment, Deployed, Undergoing repair, In transit, Storage, Retired, Lost Stolen, Tampered, Refused, Blocked. |
Response syntax
{
"job_id": integer
}
Response parameters
If the file is accepted, an HTTP 202 response is returned and the file is processed in the background by an import job. The following data is returned in JSON format. To check whether the import succeeded, retrieve the job with Retrieve details about a job. A status of finished means the import succeeded. If the import fails, status is failed and message describes the problem.
| Field | Type | Description |
|---|---|---|
job_id | Integer | The ID of the job that processes the uploaded file. Use this ID to check the status of the import. |
Errors
The following are errors returned by this API. For a complete list of common errors, see Common errors.
| Code | Message | Cause |
|---|---|---|
| - | Validation Failed: file is missing | The request didn't include a file in the file field. |
Examples
Example: Upload a payment devices file
This example uploads devices.csv, which creates store 9907 with one payment device. The api.rb script sends request bodies as JSON, so this example uses a version of the script that sends the file as a multipart form upload.
The contents of devices.csv:
Store Name,Store Number,Card Acceptor Identifier,City,Address1,Address2,State,Zip,Country,Phone Number,Timezone,Level of Hierarchy,Register Number,Device IP,Mac Address,Terminal ID,Serial ID,Group,Payment Device Type,Status
Docs Upload Test,9907,DOCS9907,Austin,123 Test Way,,TX,78731,US,,,,1,10.53.23.47/26,,,DOCS-TEST-0006,,E280FP,DeployedUpload the file:
ruby upload.rb <customer_code> api/payment_devices/upload devices.csv
Response
{
"job_id": 1781637
}To check the result of the import, retrieve the job:
ruby api.rb <customer_code> get 'api/jobs/1781637?include_payload=true'Response
{
"id": 1781637,
"type": "StoreImport",
"status": "finished",
"message": null,
"process_time": 180,
"username": "test.user",
"created_at": "2026-10-10T18:36:46.199Z",
"updated_at": "2026-10-10T18:36:46.484Z",
"payload": null
}The import created store 9907 with the E280FP payment device DOCS-TEST-0006 on register 1. To confirm the result, see List all payment devices for a store.