ACH
ACH APIs can be used for ACH transfers.
ACH API Endpoints
Transfer Funds To/From External Account
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.
API Call Structure
POST /programs/{programCode}/transfers/ach
Request Body
{
"transferIdentifier":"string",
"transferType":"string",
"currency":"string",
"transferRoute":{
"transactionAmount":0,
"deliveryType":"string",
"sourceTransferEndpoint":{
"transferEndpointType":"string",
"accountIdentifier":"string"
},
"targetTransferEndpoint":{
"encryptedBankAccount":{
"version":"string",
"ephemeralPublicKey":"string",
"publicKeyHash":"string",
"data":"string"
}
},
"recurringType":"string",
"------ Options":"S” or “R"
},
"fraudData":{
}
}
Request Parameters
Field | Description |
---|---|
transferIdentifier | A unique identifier for each transfer. Note: It is recommended that the partner provide their own transfer identifiers. If not provided, then the requestId is used as the transferIdentifier. |
transferType | Type of transfer being done (i.e. achOut, achPull) Note: In the transaction API and webhook, achPull has a transactionType of “partnerTransferIn”. This can be distinguished from other Partner transfers, such as disbursementIn, by the transferType under the postedInternationalTransactionData node. achOut describes a transfer of funds to an external account from a Green Dot hosted account (user’s account), whereas achPull describes a transfer of funds from an external account to a Green Dot hosted account (user’s account). achPulls are initiated by Green Dot as the Originating Depository Financial Institution (ODFI). |
currency | The source currency of the transfer. • If a currency code is provided in the request payload, then it must be a valid 3-character ISO code and be valid for the program for which the call is being made. • Currency is optional and will default to USD if not provided. • Only USD is supported for all programs. |
transferRoute | Contains information about the source and target of each new transfer. |
transactionAmount | Amount of transaction (transfer) |
deliveryType | The following values are available to describe the type of delivery: • sameDay • nextDay • threeDay • default: Partner’s default deliveryType •0 – Partner default deliveryType • 1 – Same day • 2 – Next day • 3 – 3 business days • 4 – 4 business days • And so forth Note: For now, both the current string values and the new integer values can be used in the deliveryType field. The integer value must be equal to or greater than 0. If it is not, the following error message will be returned: • HTTP Status: 400 • Code: 600 • Description: INVALID_ENUM_VALUE deliveryType: • Supports both integer value of delivery type in string and existing string value (sameDay, nextDay, threeDay). Integer value of delivery days in string format should be the standard. String enum value is retained to support existing usage for backward compatibility. • There is no upper limit validation on integer value. Partner designates the desired number, so they can put in hold delivery days that make sense for them. • Integer delivery days can be defined in string. For example, "0" for partner default value, "1" for same day, "2" for next day, “3” for 3 days, “4” for 4 days and so on. |
sourceTransferEndpoint | Contains information about the source of the transfer. |
transferEndpointType | Type of endpoint the transfer is coming from, i.e. account. |
accountIdentifier | Unique identifier of an account. |
targetTransferEndpoint | Contains the encrypted data of the endpoint (bank account) that the transfer is going to. |
encryptedBankAccount | Contains the encrypted bank account data of the account that the transfer is going to. See Sample Unencrypted Bank Account Data |
version | pattern: EC_v[1|2] Version of encryption algorithm used. |
ephemeralPublicKey | Base64 encoded ephemeral public key. Needed for key agreement. |
publicKeyHash | Base64 encoded SHA-256 hash of the X509 encoded public key bytes used during encryption. |
data | Base64 encrypted data of an object or property. |
recurringType | Optional for all ACH Transfers. Options 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 returned: o HTTP Status: 400 o Code: 600 o Description: Invalidvalue provided for • If the recurringType is not provided the system will treat it as a one-time payment. |
fraudData | Value used to exchange fraud related information about the user or account. Structure is defined per product. |
Sample Unencrypted Bank Account Data Parameters
Note: Transfers ACH-Out and ACH-Pull are required to include the following:
Field Name | Required (Y/N/Conditional) | Format | Description |
---|---|---|---|
bankName | Y | String | Name of bank where the account that the transfer is going to (target account), is located. Required to be 1- 256 characters |
accountNumber | Y | String | Account number associated with the target account (i.e. 4857485748). Required to be 4-17 characters. |
routingNumber | Y | String | Valid ACH routing number associated with the target account (i.e. 123456789). Required to be exactly 9 digits. |
firstName | Y | String | First name of user (1-100 characters max). Example: Alice |
lastName | Y | String | Last name of user (2-100 characters max). Example: Jones |
accountType | Y | String | Type of account (i.e. checking or savings) |
businessName | Conditional | String | Mutually exclusive of firstName and lastName. So, either the businessName or the firstName and lastName must be provided. Used to determine if an ACH transfer request involves an external business account. |
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.
Partner | Limit Type | Frequency | Example Amount |
---|---|---|---|
Acme Debit | ACH Out Minimum Transfer Limit | Per Use | 1 |
ACH Out Velocity Limit | Last 7 Days | 20000 | |
ACH Out Maximum Transaction Limit | Per Use | 3000 |
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.
Response Message
If the POST request is successful, the following response message will be returned along with a 201 HTTP status code.
Created
Sample Response Body
{
"responseDetails":[
{
"code":0,
"subCode":0,
"description":"operation is successful",
"url":"http://tbd"
}
],
"transfer":{
"transferIdentifier":" 9f78abe3-f19a-4b2d-b653-f47450d66abf",
"transferStatus":"completed"
},
"accounts":[
{
"accountIdentifier":"0b830092-e5d4-45b8-ad26-8a42c94ddd4c",
"purses":[
{
"purseIdentifier":"562a27ec-6cae-4459-a522-be94b4570f78",
"purseType":"primary",
"availableBalance":12.0,
"ledgerBalance":12.0,
"availableBalanceAsOfDateTime":"2018-09-11T19:22:33.469Z",
"ledgerBalanceAsOfDateTime":"2018-09-11T19:22:33.469Z"
}
]
}
],
"fraudData":{
}
}
Response Parameters
Field | Description |
---|---|
responseDetails | See Response Details |
Code | |
subCode | |
Description | |
url | |
Transfer | Contains the identifier and status of the transfer. |
transferIdentifier | A unique identifier for each transfer. Note: It is recommended that the partner provide their own transfer identifiers. If not provided, then the requestId is used as the transferIdentifier. Note: If an upper-case identifier is provided in the POST /transfers/ach endpoint, it will be internally converted to lowercase and returned on both the response and webhook as lower case. |
transferStatus | Status of transfer (i.e. completed, pending, failed, or canceled). |
accounts | Contains detailed information about the account. |
accountIdentifier | Unique identifier of an account within a program. |
purses | Returns all purses associated with account, including the primary/checking purse. Note: A purse is a balance holding object. |
purseIdentifier | Unique identifier for a purse. |
purseType | Type of purse. |
availableBalance | Number value representing the amount of funds available for use. Pending transactions are included. |
ledgerBalance | Number value that represents the balance of the account based on all activities that have been posted to the associated ledger. |
availableBalanceAsOfDateTime | The date and time (UTC) that the available balance is reflective of. Note: Since events can be published out of chronological order, do not update the available balance if a more recent available balance as of date was previously processed. |
ledgerBalanceAsOfDateTime | The date and time (UTC) that the ledger balance is reflective of. Note: Since events can be published out of chronological order, do not update the ledger balance if a more recent ledger balance as of date was previously processed. |
fraudData | Value used to exchange fraud related information about the user or account. Structure is defined per product. |
ACH Availability
Schedule Times | Funding Date | Delivery Flag | Error |
---|---|---|---|
Before 10:10am | Same Day | 1 | |
After 10:10am | Return error | ||
Before 9:45pm | Next Business Day | 2 | |
After 9:45pm | 2 Business Days | ||
Before 9:45pm | 3 Business Days | 3 | |
After 9:45pm | 4 Business Days | ||
Before 9:45pm | 4 Business Days | 4 | |
After 9:45pm | 5 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 .
- If the recurringType is not provided the system will treat it as a one-time payment.
Sample Request Body
{
"transferIdentifier":"string",
"transferType":"achOut",
"currency":"USD",
"transferRoute":{
"transactionAmount":5,
"sourceTransferEndpoint":{
"transferEndpointType":"account",
"accountIdentifier":"0b830092-e5d4-45b8-ad26-8a42c94ddd4c"
},
"targetTransferEndpoint":{
"encryptedBankAccount":{
"version":"string",
"ephemeralPublicKey":"string",
"publicKeyHash":"string",
"data":"string"
}
},
"recurringType":""
},
"fraudData":{
}
}
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.
Note: Partners can be configured to receive NOC Alert webhook notifications when a NOC is received for their program. See Event Type: NOC Alert 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.
Scenario | Code | subCode | Description |
---|---|---|---|
If the user attempts a transfer while their account is in restricted or closed status, one of these responses will be returned. | 3 | 100 | This 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. | 3 | 100 | This 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. | 3 | 105 | A transfer is not allowed for a closed account. |
Transfer exceeds monthly $20K limit | 3 | 212 | Exceeds rolling limit for subsequent ACH Pull monthly transfer. |
Transfer exceeds daily Ach Pull limit. | 3 | 216 | Transfer exceeds daily Ach Pull limit. |
Green Dot have prior received a Notice of Change for this account. Transfer not allowed with this information | 3 | 310 | The 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. | 3 | 201 | Invalid 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. | 3 | 110 | The 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. | 3 | 115 | ACH Out transaction amount below minimum allowed |
ACH Out maximum transaction amount exceeded | 3 | 114 | ACH Out maximum transaction amount exceeded |
ACH Out velocity limit exceeded | 3 | 113 | ACH Out velocity limit exceeded |
Obtain ACH Delivery Date for ACH Pull Transfers
This endpoint allows retrieval of the achDeliveryDate (expected funding date and time) for ACH Pull transfers only.
API Call Structure
Endpoint: GET /deliveryDate?achTransferType={TransferType}&scheduleDate={ScheduleDate}&achDeliveryType={AchDeliveryType} (ACH Pull Only)
GET …/deliveryDate?achTransferType={TransferType}&scheduleDate={ScheduleDate}&achDeliveryType={Ach DeliveryType}
How it Works
- Call GET: …/deliveryDate?achTransferType={TransferType}&scheduleDate={ScheduleDate}&achDeliveryTyp e={AchDeliveryType}
- Include the:
- Request date
- Request time
- Program code
- Delivery Type (optional)
- Schedule Date (optional)
- The achDeliveryDate (expected funding date and time) of the ACH Pull transfer will be returned.
Sample Response Body
{
"achDeliveryDate":"2020-06-24T07:00:00Z",
"responseDetails":[
{
"code":0,
"subCode":0,
"description":"Success",
"url":"http://tbd"
}
]
}
Response Codes
Code | subCode | Description |
---|---|---|
218 | 101 | Invalid Request |
219 | 600 | Invalid deliveryType (deliveryType < 0) |
List Transfers for an Account
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
Sample Response Body
{
"responseDetails":[
{
"code":0,
"subCode":0,
"description":"operation is successful",
"url":" http://tbd"
}
],
"totalRecordCount":1,
"transfers":[
{
"achTransferType":"achPull",
"transferIdentifier":"4b830092-e5d4-45b8-ad26-8a42c94aaa2a",
"accountIdentifier":"9b830092-e5d4-45b8-ad26-8a42c94ccc2c",
"submissionDateTime":"2019-01-03T21:02:45.260Z",
"transactionAmount":5,
"achTransferStatus":"pending",
"expectedDeliveryDate":"2020-06-24T17:07:00.028Z",
"bankAccountType":"checking",
"institutionName":"GDot Bank",
"last4BankAccountNumber":"*************9999"
}
]
If the GET request includes an invalid scheduleDate, the following response message is returned along with a 400 HTTP status code.
"transfer":{
},
"responseDetails":[
{
"code":400,
"subCode":0,
"description":"Invalid ACH Schedule Date.",
"url":"http://tbd"
}
]
}
Response Parameters
Field | Description |
---|---|
responseDetails | See Response Details |
code, subCode,description,url | See Response Details |
totalRecordCount | |
transfers | Contains the identifier and status of the transfer. |
achTransferType | Type of ACH transfer |
transferIdentifier | A unique identifier for each transfer. Note: It is recommended that the partner provide their own transfer identifiers. If not provided, then the requestId is used as the transferIdentifier. |
accountIdentifier | Unique identifier of an account within a program. |
submissionDateTime | Date and time in UTC, that the transfer was submitted. |
transactionAmount | Amount of ACH transfer |
achTransferStatus | Status of ACH transfer (i.e. pending, sent, successful, returned, failed, hold, cancelled, unknown). |
Filtering ACH Transfers
ACH transfers can be filtered based on the following ACH Transfer Statuses, so specific ACH transfers can be viewed by the Partner.
Valid ACH Transfer Statuses
achTransferStatus | Available in BaaS | ACH Out | ACH Pull | Description | Notes |
---|---|---|---|---|---|
Pending | Y | Y | Y | ACH Instruction is received and ready to send to the network, money has been moved off the Green Dot Account. | Money moved off the GD account for only ACHOut |
Sent | Y | Y | Y | ACH instruction has been sent to the network. | |
Returned | Y | Y | Y | ACH instruction was returned from RDFI. Money will be returned to the Green Dot Account. | Returned is available for both ACHPull and ACHOut |
Failed | Y | Y | Y | ACH instruction failed. | |
Canceled | Y | N | Y | ACH instruction was canceled prior to being sent to the network. Money has been returned to the Green Dot Account. | Cancel ACHPull is available only to GBR for now. |
ManualReturn | Y | Y | N | ACH instruction was returned by the RDFI via a manual process—not the network. Money will be returned to the Green Dot account. | |
Hold | N | Y | Y | ACH Instruction is held at Green Dot for review. Money has been debited from the Green Dot Account. | |
Rejected | Y | Y | Y | ACH instruction was held and determined to be invalid. Money will be returned to the Green Dot Account. | |
RejectedManualReview | Y | Y | Y | ACH manual return was reviewed and determined to be invalid. Money will not be returned to the Green Dot Accounts. | |
Successful | Y | N | Y | ACH transaction transmitted successfully. | Successful is applicable to ACHPull only. |
Paused | N | Y | Y | ACH transaction was paused. Money has moved. | |
PendingClawback | N | Y | N | The account holder has requested clawback of an ACH instruction after it’s entered the network. Instruction has not left Green Dot. | |
ClawbackSent | N | Y | N | The clawback instruction has been sent to the network. | |
ClawbackCompleted | N | Y | N | The clawback instruction was completed and money has been returned to the Green Dot account. | |
ClawbackReturned | N | Y | N | The clawback instruction was completed and returned as not executable. No money will be returned to the Green Dot Account. |
If GET /achTransfers is called and the status provided is one or more of the valid ACH Transfer Statuses (listed above), then the response will contain the ACH transfers within the selected (or defaulted) date range that have an ACH Transfer Status that matches one of the statuses that was provided in the call.
Sample Response Body Snippets
Filtered by pending
"transfers": [{
"achTransferType": "achPull",
"transferIdentifier": "4434898b-d201-4634-be23-41e77587aa95",
"accountIdentifier": "78b41a0a-88ca-4386-82dd-33f9f30f818e",
"submissionDateTime": "2020-05-14T22:26:13.773Z",
"transactionAmount": 2.2300,
"achTransferStatus": "pending"
"expectedDeliveryDate": "2020-06-24T17:07:00.028Z",
"bankAccountType": "checking",
"institutionName": "GDot Bank",
"last4BankAccountNumber": "*************9999"
}],
Filtered by sent
"transfers":[
{
"achTransferType":"achPull",
"transferIdentifier":"2eb154fb-291a-4faa-aaf6-73479b055c0d",
"accountIdentifier":"d1f2c754-0802-4048-b1a0-8309b3b35202",
"submissionDateTime":"2020-05-14T03:07:54.077Z",
"transactionAmount":2.2300,
"achTransferStatus":"sent""expectedDeliveryDate":"2020-06-24T17:07:00.028Z",
"bankAccountType":"checking",
"institutionName":"GDot Bank",
"last4BankAccountNumber":"*************9999"
}
],
Filtered by multiple statuses
"transfers":[
{
"achTransferType":"achOut",
"transferIdentifier":"08ce2c74-7cd5-4706-9414-857b60b85e81",
"accountIdentifier":"38c33ebb-a83c-4cd1-a8a4-4a420e553112",
"submissionDateTime":"2020-02-25T23:11:06.310Z",
"transactionAmount":5.0000,
"achTransferStatus":"failed"
},
{
"achTransferType":"achOut",
"transferIdentifier":"872fab86-c394-455a-ab80-7284c1b2d827",
"accountIdentifier":"e802b9be-781c-4112-8c18-3d27e9e1fc95",
"submissionDateTime":"2020-05-15T18:31:45.527Z",
"transactionAmount":5.0000,
"achTransferStatus":"pending"
}
],
Appendices
Direct Deposit Rules
When both debits and credits are allowed, there will not be a return code.
Value (Account Status) | Description | Allow DD (Credits) | Allow DD (Debits) | Return Code |
---|---|---|---|---|
Normal | Any Reason | Yes | Yes | |
Closed | Any Reason | No | No | R 02 |
Locked | Any Reason | No | No | R 02 |
Pending | Any Reason | No | No | R 03 |
Restricted | Account Under Review | Yes | Yes | |
Restricted | Potential Fraud | Yes | No | R 02 |
Restricted | Customer Initiated Spend Down | No | Yes | R 02 |
Restricted | Spend Down | No | No | R 02 |
Restricted | Write Off | Yes | No | R 02 |
Restricted | Changed by CSR | No | No | R 02 |
ACH Categories
ACH Category | Value Returned in Transaction Schema |
---|---|
State Tax Refund | str |
Federal Tax Refund | ftr |
Tax Refund Loan | trl |
Goverment Benefits | gb |
Child Support | cs |
Internet Transfer | it |
Payroll | pr |
Unknown | uk |
SPECIAL | spc |
Commercial | com |
Other Pay | opy |
Unemployment | ui |
Pension | pn |
ACH Return Codes
ACH Return Code | Description |
---|---|
1 | ACH Transaction exceed load limit |
2 | ACH Account was closed |
3 | ACH Transaction has invalid ACHTranCode |
4 | ACH Customer Account Not Found |
5 | ACH Direct Deposit Not Allowed on This Account |
6 | ACH Card Not Activated |
9 | ACH Transaction was Temp Card Without Perso |
10 | ACH Transaction was NPNR |
11 | ACH Transaction has CRV blocked |
12 | ACH Transaction was rejected by card processor |
13 | ACH Transaction debit funding response insufficient funds |
14 | ACH Debit funding response reject (General) |
15 | ACH Credit funding response reject (General) |
16 | ACH Debit Transaction was rejected per the Durbin Amendment |
17 | TaxRefundReject-IRS#800-829-1954 |
18 | TaxRefundReject-IRS#800-829-1954 |
19 | Tax Refund Reject: Non-Tax Season |
20 | Tax Refund Reject: Payee Deceased |
21 | ACH transaction is sent from prohibited sender |
22 | Invalid Routing Number |
23 | TaxRefundReject-IRS#800-829-1954 |
24 | ACH Transaction is voided and exported by rule |
25 | Invalid CardExternalId |
26 | ACH transaction exceeded the daily debit limit |
27 | AccountNow ACH Transaction is funding via FIS |
28 | ACH Transaction rejected due customer name/ssn mismatch |
29 | ACH Transaction rejected due customer name/ssn mismatch |
30 | ACH Transaction rejected during non-tax season |
31 | ACH Transaction rejected due to credit rating |
32 | Account Locked |
33 | Spend Down |
34 | Write Off |
35 | Changed by CSR |
Updated 9 months ago