Transactions

Create ACH Transaction

Changed on

Use the Create ACH Transaction endpoint to originate an ACH transaction to move funds between a customer account (accountNo) and an existing ACH bank account (achAccountId). Use the <a href="ref:post_addachaccount" target="_blank">Add ACH Account</a> endpoint to add an ACH bank account.

For more information on this endpoint see <a href="doc:ach-endpoints#creating-an-ach-transaction" target="_blank">Creating an ACH transaction</a> in the ACH Endpoints guide.

post/createAchTransaction

Request

  • Base URL
    api-{corename}.{env}.gpsrv.com/intserv/4.0/ (relative, and the document’s source URL is not known)
  • URL
    api-{corename}.{env}.gpsrv.com/intserv/4.0/createAchTransaction
  • Auth
    none declared

Request body application/x-www-form-urlencoded

apiLoginstring required

Web service username, as provided by SoFi Tech Solutions. Pattern: Max 50 characters Example: "AbC123-9999"

apiTransKeystring required

Web service password, as provided by SoFi Tech Solutions. Pattern: Max 15 characters Example: "4sb62fh6w4h7w34g"

providerIdinteger required

Your unique provider identifier from SoFi Tech Solutions. Pattern: Max 10 digits Example: 9999

transactionIdstring required

Supply a globally unique ID to identify this endpoint request ("transaction"). Might be used for <a href="ref:idempotency#endpoints-that-use-transactionid-for-idempotency" target="_blank">idempotency</a>. A UUID is preferred. Pattern: Maximum 60 characters Example: "9845dk-39fdk3fj3-4483483478"

accountNostring required

The <glossary:PRN> or <glossary:PAN> of the account. Pattern: PAN or PRN Example: "074103447228"

achAccountIdinteger required

ACH account identifier (ach_account_id), as returned by <a href="ref:post_addachaccount" target="_blank">Add ACH Account</a> or <a href="ref:post_getachaccounts" target="_blank">Get ACH Accounts</a>. Pattern: Integer Example: 354656

amountnumber float required

Currency amount as a whole or decimal amount. Pattern: Positive integer or float Example: 100.00, 100, or 100.73

descriptionstring nullable

Description for the ACH transaction. Pattern: 1–30 <a href="ref:api-reference-special-characters#ach-name-parameters" target="_blank">supported characters</a> Example: "One-time payroll load."

remittanceInfostring nullable

Description for the remittance. This string populates the Payment Related Information field of the ACH Addenda Record in the outgoing <<glossary:Nacha file>>. Pattern: 1–80 <a href="ref:api-reference-special-characters#ach-name-parameters" target="_blank">supported characters</a> Example: "Payoff 2500 transfer initiated and verified to Acct 12345678."

debitCreditIndicator'C' | 'D' required

Specifies whether to credit (C) or debit (D) the recipient account. Pattern: String Example: "D"

authorizationMethod'online_or_mobile' | 'written_or_prearranged' nullable

B2C debit only. Specifies the authorization method used for the transaction, which determines its SEC code:

  • online_or_mobile — Authorization was captured via website or mobile app. SEC code = WEB.
  • written_or_prearranged — Authorization was pre-arranged via signed document, agreement, or standing auth. SEC code = PPD.
  • empty or invalid value — This parameter defaults to NULL. SEC code = PPD.

For B2C credit transactions, the system always sets this parameter to other. For non-B2C transactions, the system ignores any input and sets this parameter to NULL.

Pattern: 1–40 characters Example: "online_or_mobile"

companyEntryDescstring required

Describes the purpose of the ACH transaction. Possible values:

  • PAYROLL — Compensation-related payments for employees or contractors, including wages and salaries. Required only for the PPD SEC code.
  • PURCHASE — E-commerce-related debit transactions initiated by the cardholder. Required for WEB SEC code, except as permitted by the rule on Standing Authorization to use the TEL SEC code.
  • Free-text.

See list of <a href="ref:api-reference-restricted-company-entry-descriptions-values" target="_blank">restricted values and use cases</a>.

Pattern: Max 10 characters Example:PAYROLL

sameDay'Y' | 'N' nullable

Specifies whether this is a same-day transaction. Pattern: String Example: "Y"

identNumberstring nullable

Provider-supplied identifier, external to the system. This value is required only for the CIE and WEB <a href="page:sec-codes-requirements-for-ach" target="_blank">SEC codes</a>. Pattern: 1–15 characters Example: "999456789"

processorTokenstring nullable

Obtained from Plaid when using Plaid integration. Checks the balance of the ACH account to verify that there are sufficient funds for an ACH debit. Pattern: String Example: "processor-production-35cd43b-adfc-d8aa-b331-c9ba0fdha881"

finicityBalanceCheck'Y' | 'N' nullable

Controls whether the system performs a real-time balance check on an ACH account linked via Mastercard Finicity. By default, this check confirms that there are sufficient funds in the recipient account before initiating an ACH debit. To bypass balance checks, set to N. Pattern: String Example: "N"

holdDaysinteger nullable

The number of hold days to apply to this transaction, which overrides the hold days in product settings. This value applies only to outgoing ACH debits (debitCreditIndicator: D). This parameter is available only to clients who have obtained bank approval to use it. The ACOHD parameter must be set to use this parameter. Pattern: Integer Example: 2

Example request

{
  "apiLogin": "AbC123-9999",
  "apiTransKey": "4sb62fh6w4h7w34g",
  "providerId": 9999,
  "transactionId": "123e4567-e89b-12d3-a456-426614174000",
  "accountNo": "074103447228",
  "achAccountId": 354656,
  "amount": 25.5,
  "description": "One-time payroll load.",
  "remittanceInfo": "Payoff 2500 transfer initiated and verified to Acct 12345678.",
  "debitCreditIndicator": "D",
  "authorizationMethod": "online_or_mobile",
  "companyEntryDesc": "PAYROLL",
  "sameDay": "Y",
  "identNumber": "999456789",
  "processorToken": "processor-production-35cd43b-adfc-d8aa-b331-c9ba0fdha881",
  "finicityBalanceCheck": "Y",
  "holdDays": 2
}

Response

status_codeinteger nullable required

The response status code. May return a string for some statuses.

statusstring nullable required

The condition of a process or response

processing_timenumber float nullable required

The time elapsed in processing the transaction

system_timestampstring date-time nullable required

A system generated timestamp

rtokenstring nullable required

A system-generated ID used for tracking

errorsstring[]

A list of errors generated while the request was processed

Changes

    • breaking

      the request property became not nullable

    • breaking

      the request property became required

    • breaking

      removed the enum value other of the request property

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status