---
title: "Send an ACH"
method: POST
path: "/ach"
tags: ["ACH"]
---

# Send an ACH

`POST /ach`

Send an ACH

## Headers

- `Idempotency-Key` string

## Request body

- OutgoingAchRequest — Send an ACH
  - `amount` integer, required — Amount to transfer in ISO 4217 minor currency units
  - `company_entry_description` string, nullable — Company Entry Description field in ACH batch header. Originator inserts this field's value to provide the Receiver with a description of the entry's purpose. NACHA Operating Rules dictate that Payroll or E-Commerce Purchase ACH transactions require setting this field to PAYROLL or PURCHASE respectively. Only ASCII-printable characters (0x20-0x7E) are accepted. Non-ASCII characters will be stripped; the request will be rejected if no ASCII characters remain.
  - `company_name` string — Overrides the 'Company Name' field in ACH batch header, which otherwise defaults to the configured partner name. The provided name will be prepended with the Bank's configured prefix and a *. It will then be truncated to 16 characters. Only ASCII-printable characters (0x20-0x7E) are accepted. Non-ASCII characters will be stripped; the request will be rejected if no ASCII characters remain.
  - `currency` string, required — ISO 4217 alphabetic currency code of the transfer amount
  - `customer_id` string, uuid, required — The customer's unique identifier
  - `dc_sign` 'credit' | 'debit', required — The type of transaction (debit or credit). A debit is a transfer in and a credit is a transfer out of the originating account
  - `effective_date` string, date, nullable — Effective date transaction proccesses (is_same_day needs to be false or not present at all)
  - `external_data` object, nullable — Additional transfer metadata structured as key-value pairs
  - `final_customer_id` string, uuid, nullable — ID of the international customer that receives the final remittance transfer (required for OFAC enabled payments)
  - `hold` AchRequestHoldData, nullable
    - `amount` integer, required
    - `duration` integer, required
  - `is_same_day` boolean, nullable — Send as same day ACH transaction (use only is_same_day without specific effective_date)
  - `memo` string, nullable — Memo for the payment
  - `originating_account_id` string, uuid, required — The unique identifier for an originating account
  - `receiving_account_id` string, uuid, required — The unique identifier for an receiving account
  - `reference_info` string, nullable — Will be sent to the ACH network and maps to Addenda record 05 - the recipient bank will receive this info. Only ASCII-printable characters (0x20-0x7E) are accepted. Non-ASCII characters will be stripped; the request will be rejected if no ASCII characters remain.
  - `risk` RiskData, nullable
    - `client_ip` string — Client IP
  - `sec_code` 'CCD' | 'PPD' | 'WEB' — Standard Entry Class Code: * WEB: Internet initiated / Mobile Entry (default if empty) * CCD: Corporate Credit or Debit * PPD: Pre-arranged Payment or Deposit (only deposits currently supported)

## Response `201`

Sent ACH response

- OutgoingAch — Represents a sent ACH transaction.
  - `account_id` string, uuid — Receiving account uuid. This links to the external account resource (represented by 'receiving_account_id' in the request to send outgoing ACH).
  - `account_name` string — Receiving account name
  - `account_no` string, required — Receiving account number
  - `amount` integer, required — Transaction amount in cents
  - `bank_id` integer, required
  - `company_entry_description` string — Company Entry Description field in ACH batch header. Originator inserts this field's value to provide the Receiver with a description of the entry's purpose. NACHA Operating Rules dictate that Payroll or E-Commerce Purchase ACH transactions require setting this field to PAYROLL or PURCHASE respectively.
  - `company_name` string — Company Name field in ACH batch header.
  - `effective_date` string, date, required — Effective date of the transaction
  - `external_id` string, uuid, required — Transaction ID in the ledger
  - `hold` HoldData
    - `amount` integer, required
    - `availability_time` string, date-time, required
  - `id` string, uuid, required
  - `incoming_ach_id` string, uuid — ID of the linked incoming ACH entry. This is filled only for outgoing ACH entries that are returns and links to the originally received incoming entry.
  - `is_same_day` boolean, required — Was initiated as same-day ACH transaction
  - `memo` string, required
  - `partner_id` integer, required
  - `reference_info` string — Transaction reference info
  - `return_data` ReturnData — Filled if the entry is a return.
    - `code` string, required — Return reason code, i.e. why is the entry being returned.
    - `dishonored_return_code` string — Code of the original dishonored return (without "R"). Filled only if this is a contested return.
    - `dishonored_return_settlement_date` string — Settlement date of the original dishonored return. Filled only if this is a contested return. Formatted as an ordinal date, a single day-of-year number between 1-366.
    - `dishonored_return_trace` string — Trace number of the original dishonored return. Filled only if this is a contested return.
    - `field_errors` string — Required for return reason code R69. Contains the code(s) to indicate the field(s) in which erroneous information in the original return is located.
    - `original_dfi_no` string, required — Receiving financial institution of the original entry.
    - `original_trace` string, required — Trace number of the original entry that is being returned.
    - `return_code` string — Return reason code of the original return (just the number). Filled only if this is a dishonored return.
    - `return_settlement_date` string — Settlement date of the original return. Filled only if this is a dishonored return. Formatted as an ordinal date, a single day-of-year number between 1-366.
    - `return_trace` string — Trace number of the original return. Filled only if this is a dishonored return.
  - `source_account_id` string, uuid — Originating account uuid. This links to the customer account on Synctera platform (represented by 'originating_account_id' in the request to send outgoing ACH).
  - `source_account_name` string — Originating account name
  - `source_account_no` string, required — Originating account number
  - `status` 'CANCELED' | 'COMPLETE' | 'DECLINED' | 'INIT' | 'PENDING', required
  - `trace_no` string, required — Trace number of the transaction

## Other responses

- `400` — BadRequest
- `401` — Unauthorized
- `403` — Forbidden error
- `422` — Unprocessable entity request response
- `500` — Internal server error

---

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