Skip to main content
The FedACH system, operated by the Federal Reserve, is an electronic payment network that processes Automated Clearing House (ACH) transactions in the United States. FedACH ensures the timely clearing and settlement of payments through multiple processing windows each business day. Lead has a direct connection to the FedACH network, offering streamlined access to ACH transfer services as close to the payment rails as possible.

ACH Object

{
  "id": "ach_xyz001",
  "created_at": "2022-06-27T11:22:33Z",
  "updated_at": "2022-06-27T11:22:33Z",
  "status": "submitted",
  "amount": 5000,
  "account_id": "account_xyz123",
  "account_number_id": "account_number_xyz123",
  "direction": "outgoing",
  "delivery_type": "same_business_day",
  "transaction_type": "credit",
  "sec_code": "WEB",
  "currency_code": "USD",
  "statement_descriptor": "P2P Credit",
  "record_details": {
    "company_name": "Acme Inc.",
    "company_id": "1234",
    "company_discretionary_data": "Acme Inc.",
    "effective_date": "2022-06-27",
    "settlement_date": "2022-06-27",
    "individual_id": "string",
    "receiver_name": "string",
    "descriptive_date": "220627",
    "additional_information": "string",
    "trace_number": "123456789012345"
  },
  "counterparty": {
    "name": "Lara Smikle",
    "account_number": "1032345678",
    "routing_number": "021000021",
    "account_type": "checking"
  },
  "returns": [
    {
      "type": "return",
      "status": "submitted",
      "return_code": "R02",
      "return_reason": "string",
      "trace_number": "123456789012345",
      "additional_information": "string"
    }
  ],
  "reversal": {
    "reversal_reason": "duplicate",
    "linked_ach_id": "string"
  },
  "rejection": {
    "reason": "account_number_status",
    "details": "Account number account_123 is inactive."
  },
  "correction": {
    "account_number": "1032345678",
    "routing_number": "021000021",
    "account_type": "checking"
  },
  "metadata": {
    "additionalProp": "string"
  }
}

Attributes

AttributeTypeDescription
idstringID of the ACH object.
created_atdate-timeThe ISO-8601 timestamp at which the ACH object was created.
updated_atdate-timeThe ISO-8601 timestamp at which the ACH object was last updated.
statusstringThe current status of the ACH object. Possible values: scheduled, processing, submitted, posted, canceled, under_review, approved, rejected, pending_return, returned.
amountint64The amount of the transaction in cents.
amount_idstringThe ID of the Account object.
account_number_idstringThe ID of the Lead Bank Account Number object.
directionstringWho is initiating the transaction. Possible values: - outgoing: You are sending an ACH transaction to a counterparty. - incoming: You are receiving an ACH transaction from a counterparty.
delivery_typestringHow fast you want the counterparty to receive the ACH. Possible values: - same_business_day: If the ACH request is submitted before the cutoff window with the same business day option, funds will settle on the same day. - next_business_day: Standard ACH processing, for funds to settle on the next business day.
transaction_typestringACH transaction type. Possible values: credit, debit.
sec_codestringStandard Entry Class (SEC) code to use for this ACH object. Lead currently supports CCD, PPD, WEB, CIE, and TEL for outgoing ACH.
currency_codestringA three-letter currency code as defined in ISO 4217. Possible value: USD.
statement_descriptorstringThe description you would like to appear on your customers’ statement. Maximum number of characters is 10.

record_details (object)

AttributeTypeDescription
company_namestringThe company that initiated the outgoing ACH. - For outgoing ACH, this value is set from the Account Number object. - For incoming ACH, this value is what we receive from the sender.
company_idstringA 10-digit unique identifier used for identifying companies collecting payments via ACH debit. - For outgoing ACH, this value is set from the Account Number object. - For incoming ACH, this value is what we receive from the sender.
company_discretionary_datastringAdditional information from the ACH sender on incoming ACH.
effective_datestringThe date the ACH transaction is expected to settle with the financial institution. - For outgoing ACH, the date is set by Lead based on the delivery_type field. - For incoming ACH, this value is what we receive from the sender.
statement_datestringDate by which funds must be posted to the counterparty’s account.
individual_idstringThe name of the individual you are sending funds to. Required for P2P payments.
receiver_namestringThe name of the receiver of funds. This field is set by the counterparty and may or may not be accurate.
descriptive_datestringThe date you would like displayed to the counterparty. Receiving financial institutions may utilize this field to display on the statement.
additional_informationstringAdditional information for the ACH recipient. Not all banks will share this message with their end customer.
trace_numberstringThe unique number assigned to every ACH entry by an ODFI, which identifies that entry within a specific ACH file. - For outgoing ACH, this is generated by Lead when we submit the ACH. - For incoming ACH, this value is what we receive from the sender.

counterparty (object)

AttributeTypeDescription
namestringThe name of the counterparty you are transacting with.
account_numberstringThe account number for the bank account.
routing_numberstringThe routing number for the bank account. This should be the ACH routing number, not the wire routing number.
account_typestringThe account type for the bank account.
Possible values: checking, savings.

returns (array of objects)

AttributeTypeDescription
typestringType of the return record, determined by the respective return code. Possible values: return, dishonored_return, contested_return.
statusstringThe current status of the ACH object. Possible values: scheduled, processing, submitted, posted, canceled, under_review, approved, rejected, pending_return, returned.
return_codestringNacha Return codes. Possible values: R01 - R85.
return_reasonstringShort description of the associated return code.
trace_numberstringThe unique number assigned to this ACH return by the ODFI, which identifies the entry within a specific ACH file.

reversal (object)

AttributeTypeDescription
reversal_reasonstringReason you want to initiate a reversal.

duplicate: The ACH is a duplicate of another you’ve already submitted

receiver_incorrect: You’ve entered incorrect counterparty information

amount_incorrect: The payment amount is incorrect

debit_too_early: You’re debiting the counterparty too early

credit_too_late: You’re crediting the counterparty too late
linked_ach_idstringThe ID of the original ACH transaction that is being reversed.

rejection (object)

AttributeTypeDescription
reasonstringProvides the reason code about why an ACH transfer was rejected before submission to the network. See rejection reason mapping below for possible values.
detailsstringA short, human-readable string with more details about why the ACH was rejected.

Rejection Reasons

ReasonDetails
invalid_formatInvalid format. Please contact Lead for details.
non_sufficient_fundsInsufficient funds. Balance result: [BALANCERESULT].
ofac_rejectionPlease contact Lead for further details.
per_transaction_limit_exceededEntry would exceed per transaction limit. Current limit value [LIMITVALUE].
previously_correctedA previous ACH to the same counterparty was corrected (correction id = [ACHID]).
processor_discretionary_decisionPlease contact Lead for further details.
related_prenote_exceptionACH entry cannot be created within 3 banking days of a prenote’s settlement date. (prenote id = [ACHID]).
related_prenote_exceptionPrevious prenote to this counterparty (id = [ACHID]) was not accepted.
return_untimelyReturn is not within the proper return timeframe.
reversal_rejectionReversal rejected upon review.
unexpected_change_codeUnexpected change code: [CHANGECODE].
unexpected_return_codeUnexpected return code: [RETURNCODE].
unexpected_routing_numberInvalid routing number provided.

correction (object)

AttributeTypeDescription
account_numberstringThe updated account number for the counterparty.
routing_numberstringThe updated routing number for the counterparty.
account_typestringThe updated account type for the counterparty. Possible values: checking, savings.

metadata (object)

A set of key-value pairs that can be used to store additional information related to this object.

Incoing ACH Transfers

Incoming ACH transfers (funds received from another party) contain a different set of fields compared to outgoing ACH transfers.

Core Fields

  • id
  • created_at
  • updated_at
  • status
  • amount
  • account_id
  • direction
  • transaction_type
  • sec_code
  • currency_code
  • statement_descriptor (may be NULL)

record_details (object)

  • company_name
  • company_id
  • company_discretionary_data (may be NULL)
  • effective_date
  • settlement_date
  • individual_id (may be NULL)
  • receiver_name (may be NULL)
  • descriptive_date
  • additional_information (may be NULL)
  • trace_number

counterparty (object)

  • name
  • routing_number

returns (array of objects)

  • type
  • status
  • return_code
  • return_reason
  • trace_number

correction (object)

At least one of the following fields will be included:
  • account_number
  • routing_number
  • account_type