---
title: "Submit file"
method: POST
path: "/shards/{shardKey}/files/{fileID}"
tags: ["Files"]
---

# Submit file

`POST /shards/{shardKey}/files/{fileID}`

Submit a file to ACHGateway for upload at the next cutoff processing. The file may be in either Nacha formatted ACH or moov-io/ach's
JSON specification. When ValidateOpts are required the JSON specification must be used.

## Path parameters

- `shardKey` string, required
- `fileID` string, required

## Request body

- CreateFile — unresolved $ref

## Response `200`

File accepted. The response includes the predicted next automated cutoff when it can be computed.

- QueueACHFileResponse — Acknowledgement that a file was queued for a later cutoff. Existing clients can keep reading `id`, `shardKey`, and `error`. `nextCutoff` is the next automated window that should upload the file. It is omitted when the time cannot be predicted. A later manual `/trigger-cutoff` can still upload the file earlier.
  - `id` string
  - `shardKey` string
  - `error` string
  - `nextCutoff` string, date-time
  - `acceptedAt` string, date-time

## Other responses

- `400` — Unable to read file, make sure the file is in either valid Nacha or moov-io/ach formatting.
- `500` — Error publishing the file. Check logs for publishing errors.

---

[API](https://skmtc.net/moov-io/apis/achgateway-api.md) · [All operations](https://skmtc.net/moov-io/apis/achgateway-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/moov-io/achgateway-api/revisions/25218385da8c/schema)
