ACH

ACH APIs can be used for ACH transfers.

ACH API Endpoints

This endpoint only allows the creation of an ACH Out or ACH Pull transfer, to move funds to and from an external bank account. Daily limits can be configured for ACH Out transfers. However, daily limits are not mandatory for ACH Out. Note: For achOut and achPull transfers, Green Dot is the Originating Depository Financial Institution (ODFI).

When a valid ACH transfer is requested, an ACH transfer webhook will always be published unless there is a system failure. Refer to ACH Return Codes for details. Transaction Webhooks contain information on when the achOut or achPull is posted to the account. However, a Transaction webhook may not always be published. Refer to Event Type: Transactions for details.

📘

This API is affected by Joint Accounts as applicable. For Joint Account scenarios, there is an added request validation. When transfer type is achPull / achOut for joint accounts, userIdentifier field is required, if missing this property will get error response.

API Call Structure

POST /programs/{programCode}/transfers/ach

ACH Limits

Note: When executing a POST /programs/{programCode}/transfers/ach request where the transferType is “achOut”, the following limits will be enforced for ACH Out transfers. Consult with your onboarding liaison to confirm your limits.

PartnerLimit TypeFrequencyExample Amount
Acme DebitACH Out Minimum Transfer LimitPer Use1
ACH Out Velocity LimitLast 7 Days20000
ACH Out Maximum Transaction LimitPer Use3000

When one of the limits above is exceeded, the following code/sub-code will be returned.

Note: If the customer’s balance is below the minimum threshold then they will be allowed to transfer out the remaining balance.

ACH Availability

Schedule TimesFunding DateDelivery FlagError
Before 10:10amSame Day1
After 10:10amReturn error
Before 9:45pmNext Business Day2
After 9:45pm2 Business Days
Before 9:45pm3 Business Days3
After 9:45pm4 Business Days
Before 9:45pm4 Business Days4
After 9:45pm5 Business Days

Note: The above times are in PT.

Expected Delivery Date/Time (EDD)

ACH Out/ACH Pull Time of Request Date of Request Expected Delivery Date/Time (EDD) Delivery Type

ACH Out

Time of Request is before 10:15AM PT cutoff

On a weekday and non-banking holiday

Same day of request (no time set). Example: 2019-11- 18T00:00:00

N/A. Delivery Type does not apply to ACH Out.

ACH Out

Time of Request is before 10:15AM PT cutoff

On a weekday or weekend and non-banking holiday

Next business day (no time set). Example: 2019-11- 18T00:00:00

N/A. Delivery Type does not apply to ACH Out.

ACH Pull

Time of Request is before 10:15AM PT cutoff

On a weekday and non-banking holiday

Same day as request, at 21:00 PT

Delivery Type Option:
• sameDay: Only if request is before the 10:15am cutoff

ACH Pull

Anytime

Any Day

9:00PM PT and date available depends on chosen deliveryType. Example: If deliveryType is three business days, the EDD will be three business days after the first requested business day, at 21:00 PT.

Delivery Type Options:
• Next Day
• Three Business Days (3)

Note: Delivery Type does not apply to ACH Out. It only applies to ACH pull when the credit will be funded to BaaS accounts.

NACHA guidelines

  • Per NACHA guidelines, Green Dot is required to do the following:
    • Include an RDFI indicator within the NACHA file, for partners who submit recurring ACH transfers.
    • Provide external banks with the successful bank account verification method and date when debit authorizations are requested.
    • Provide supporting evidence that the customer (user) authorized the ACH transfer.
  • To meet these guidelines, Partners will now need to provide an optional recurringType for all ACH Transfers.
    Options for the recurringType are:
    • “R” for Recurring Payment
    • “S” for Single Payment (one-time payment).
  • If the recurringType is provided and does not contain one of these options, the following error will be received:
    • HTTP Status: 400
    • Code: 600
    • Description: Invalid value provided for <property name here>.
  • If the recurringType is not provided the system will treat it as a one-time payment.

ACH Joint Account Scenario

For ACH Joint Account scenarios, there is an added request validation. When transfer type is achPull / achOut for joint accounts, the userIdentifier field is required,. If missing, this property will get error response.

Route Parameters

Parameter nameTypeValueDescription
programCodestringwfThis value identifies the program type of the account to be created.

Headers

Header nameTypeValuedescription
X-GD-RequestIduuidvariesThis property is used to uniquely identify each request.
Authorizationbearer tokenvariesThe token received from GD.

Request Sample

{
  "transferIdentifier": "43445b58-87d5-4932-a49e-9910ab0f51b0",
  "userIdentifier": "6F40110D-99B3-4091-8F7F-05AEBBC229D8", // Optional for Individual Accounts and REQUIRED for Joint Accounts
  "transferType": "achOut",
  "currency": "USD",
  "transferRoute": {
    "transactionAmount": 5.1,
    "sourceTransferEndpoint": {
      "transferEndpointType": "account",
      "accountIdentifier": "fd7767c1-76e3-445a-a6a5-4e9492777e69"
    },
    "targetTransferEndpoint": {
      "encryptedBankAccount": {
        "version": "EC_v1",
        "ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD",
        "publicKeyHash": "kMhnzB6afrTdRvVFjhOQ5kjUTrPKvkygSCZQXQzNHYo=",
        "data": ""
      }
    },
    "recurringType": "",
    "bankAccountVerificationMethod": "",
    "businessThirdPartyACH": true
  },
  "fraudData": {}
}

Webhook

ACH Transfer Joint Account Webhook

ACH Notification of Change (NOC)

Green Dot needs to be able to process ACH Notification of Change (NOC) requests received from the Federal Reserve (Fed). An ACH NOC is created by a Receiving Depository Financial Institution (RDFI) to notify the Originating Depository Financial Institution (ODFI) that the account information included in the ACH is incorrect and needs to be changed.

When ACH NOC requests are received from the Fed, subsequent ACH transfer requests using the incorrect account number or routing number included in the ACH requests will be declined.

📘

Partners can be configured to receive NOC Alert webhook notifications when a NOC is received for their program.

See ACH NOC Alert Webhook for details.

Sample achPull Request Body (Account with a NOC Return Code)

{
   "transferIdentifier":"8aac3be4-b190-4d97-9b31-d5211cdb58d7",
   "transferType":"achPull",
   "currency":"USD",
   "transferRoute":{
      "transactionAmount":10,
      "sourceTransferEndpoint":{
         "transferEndpointType":"account",
         "accountIdentifier":"407da696-4141-410d-9674-d466626f788a"
      },
      "targetTransferEndpoint":{
         "encryptedBankAccount":{
            "version":"EC_v1",
            "ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESot1Hj2OHD4AW9jZ39EW95SodW0Tgxg25c2omHC4tPzf+KWKNN81Gzw8K1ObbXbhaPDQqF3/okCKsBeKsdIHEg==",
            "publicKeyHash":"1YPiscLswrzhpxDdW2LvYTwKmzImy922OQ5HMcmoL9E=",
            "data":"IyHe0snwpL7kCx73YKND/ITLS4o2fCsA7xjGpWRCkEl/3XDgva4nzA6je17f73zUYrX3zfnJkKdnyFUVfZCVWPv5Sy9fodKwRcNhBouskBpxHSAwt8stZz6LvXGGOxLqzDuEG3b8Oz6ouNJA60qA5XqWDu/Wbdf1sElsWwk/S6vfxfuECbJQZP6U6FqD8SUS5QLJ87h3cOJ/RGlJrzk0vyqSHtT0enrDHzbvWLjOSIN3IQ=="
         }
      },
      "recurringType":""
   },
   "fraudData":{      
   }
}

Sample achOut Request Body (Account with a NOC Return Code)

{
   "transferIdentifier":"9d61b996-fb2c-4c51-8cb8-bfb34739f15a",
   "transferType":"achOut",
   "currency":"USD",
   "transferRoute":{
      "transactionAmount":10,
      "sourceTransferEndpoint":{
         "transferEndpointType":"account",
         "accountIdentifier":"0b7725b9-5dfc-4972-a465-ab8f889d16a0"
      },
      "targetTransferEndpoint":{
         "encryptedBankAccount":{
            "version":"EC_v1",
            "ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFNGxyj9sLVL/JoGXyeZlseahA3nFWnFgNT/Er13EpHRVXgIg+H+B8F0AP13oyz5aAobyiZ1bHP6vq5qO0hTzUA==",
            "publicKeyHash":"1YPiscLswrzhpxDdW2LvYTwKmzImy922OQ5HMcmoL9E=",           
            "data":"hqw0qkuVY8O7f6sCbxU2MoyShvRAXGqKlbT57FoZ0Y0TZkay0BTsvjrmkUb3w3VCa573Ih//2f//mfBOhH6I/AL7/Vj6ZXnQ/IspM8hrGXfHCX2TsGyTHJ1ElwcJ0WTT1aDGTFWNon+b+LJz6eQUdt185P+7SopAQKhSrdXxNuE3w9ctZyu2FKZK7SL970wHpchlo3RcQ0QK+jtl2vZUmWp/H2gt6Ex6V21p0MQ8zcExDg=="
         }
      },
      "recurringType":""
   },
   "fraudData":{
      
   }
}

Sample Response

{
   "transfer":{
      
   },
   "responseDetails":[
      {
         "code":3,
         "subCode":216,
         "description":"The transfer was initiated by an account that has previously received a NOC return. Corrected account information must be submitted.",
         "url":"http://tbd"
      }
   ]
}

Response Codes

🚧

Transfers for “Restricted” and “Closed” accounts are never allowed for inbound transfers. Outbound transfers on “Restricted” accounts, are not allowed unless there is a spend down or customer Initiated spend down involved. Outbound transfers for “Closed” Accounts may or may not be allowed depending on product or program specific rules.

ScenarioCodesubCodeDescription
If the user attempts a transfer while their account is in restricted or closed status, one of these responses will be returned.3100This account is in a restricted state that does not allow inbound or internal transfers.
If the user attempts a transfer while their account is in restricted or closed status, one of these responses will be returned.3100This account is in a restricted state that does not allow outbound transfers.
If the user attempts a transfer while their account is in restricted or closed status, one of these responses will be returned.3105A transfer is not allowed for a closed account.
Transfer exceeds monthly $20K limit3212Exceeds rolling limit for subsequent ACH Pull monthly transfer.
Transfer exceeds daily Ach Pull limit.3216Transfer exceeds daily Ach Pull limit.
Green Dot have prior received a Notice of Change for this account. Transfer not allowed with this information3310The transfer was initiated by an account that has previously received a NOC return. Corrected account information must be submitted
The accountNumber provided in the encrypted bankAccount data, does not meet the length requirement of 1 to 17 digits.3201Invalid ACH Account Number
All Transfer requests will be verified by the Green Dot fraud system. As a result, a transfer could be declined, and additionally, the accountStatus/statusReasons could be updated to potential or confirmed fraud state. In the latter case, an event notification/webhook (accountUpdate alert) would be published. See Webhooks for more details. In this scenario, the transfer is declined.3110The transfer was declined by a fraud system check
ACH Out transaction amount below minimum allowed Note: For some transfers, a minimum transfer amount is required - often $1.00.3115ACH Out transaction amount below minimum allowed
ACH Out maximum transaction amount exceeded3114ACH Out maximum transaction amount exceeded
ACH Out velocity limit exceeded3113ACH Out velocity limit exceeded

Retrieves the expected funding date and time (achDeliveryDate) for ACH Pull transfers. Requires transfer type, optional schedule date, and delivery type. Returns the expected funding date for the transfer.

API Call Structure

GET /programs/{programCode}/DeliveryDate

This endpoint allows the retrieval of a list of transfers for an account.

Note: The maximum number of transfers in a list is 180 per request.

API Call Structure

GET /programs/{programCode}/accounts/{accountIdentifier}/ACHTransfers

Appendices

Direct Deposit Rules

📘

When both debits and credits are allowed, there will not be a return code.

Value (Account Status)DescriptionAllow DD (Credits)Allow DD (Debits)Return Code
NormalAny ReasonYesYes
ClosedAny ReasonNoNoR 02
LockedAny ReasonNoNoR 02
PendingAny ReasonNoNoR 03
RestrictedAccount Under ReviewYesYes
RestrictedPotential FraudYesNoR 02
RestrictedCustomer Initiated Spend DownNoYesR 02
RestrictedSpend DownNoNoR 02
RestrictedWrite OffYesNoR 02
RestrictedChanged by CSRNoNoR 02

ACH Categories

ACH CategoryValue Returned in Transaction Schema
State Tax Refundstr
Federal Tax Refundftr
Tax Refund Loantrl
Goverment Benefitsgb
Child Supportcs
Internet Transferit
Payrollpr
Unknownuk
SPECIALspc
Commercialcom
Other Payopy
Unemploymentui
Pensionpn

ACH Return Codes

ACH Return CodeDescription
1ACH Transaction exceed load limit
2ACH Account was closed
3ACH Transaction has invalid ACHTranCode
4ACH Customer Account Not Found
5ACH Direct Deposit Not Allowed on This Account
6ACH Card Not Activated
9ACH Transaction was Temp Card Without Perso
10ACH Transaction was NPNR
11ACH Transaction has CRV blocked
12ACH Transaction was rejected by card processor
13ACH Transaction debit funding response insufficient funds
14ACH Debit funding response reject (General)
15ACH Credit funding response reject (General)
16ACH Debit Transaction was rejected per the Durbin Amendment
17TaxRefundReject-IRS#800-829-1954
18TaxRefundReject-IRS#800-829-1954
19Tax Refund Reject: Non-Tax Season
20Tax Refund Reject: Payee Deceased
21ACH transaction is sent from prohibited sender
22Invalid Routing Number
23TaxRefundReject-IRS#800-829-1954
24ACH Transaction is voided and exported by rule
25Invalid CardExternalId
26ACH transaction exceeded the daily debit limit
27AccountNow ACH Transaction is funding via FIS
28ACH Transaction rejected due customer name/ssn mismatch
29ACH Transaction rejected due customer name/ssn mismatch
30ACH Transaction rejected during non-tax season
31ACH Transaction rejected due to credit rating
32Account Locked
33Spend Down
34Write Off
35Changed by CSR