Accounts
Accounts APIs can be used for account management and account insights related functions.
Overview
The Accounts API allows Partners to:
- List the transactions for a specific account
- Retrieve account details
- Retrieve user’s primary account balances
- List available account statements for a specific period
- Verify user identities through Know Your Customer (KYC) and Green Dot
Accounts API Endpoints
GET /programs/{programCode}/accounts/{accountIdentifier}
This endpoint allows the retrieval of detailed information about a specific account. If the GET request is successful, the following response message will be returned along with a 200 HTTP status code.
During the GPR > DDA upgrade process, the response will include the UpgradeKycStateData property. If the account is already a DDA account, the response will not include the UpgradeKycStateData property.
This API will return two account holders for a joint account (if applicable).
Sample Values for Specific Response Parameters
Field | Description |
---|---|
dobStatus | Can be: • matched - If isDOBMatched is true and isDOBVerified is false, then matched is used • notMatched - If isDOBMatched is false and isDOBVerified is false, then notMatched is used • Verified - If isDOBVerified is true then verified is used |
peerTransferAcceptPreference | Value can be manual or automatic. This property is optional and only applies to Partners using the P2P capabilities of the platform. The default value is manual and has no impact to any service other than P2P. Note: If this value is not provided then it will remain manual. |
ofacStatus | Last result of running an OFAC check against a user (i.e. pending, passed, failed). |
kycStatus | Last result of running a user through a KYC (Know Your Customer) gate (i.e. pending, passed, failed). |
statusReasons | String value that returns the reason for the status of an account. statusReasons can be: • verificationNeeded • registrationNotComplete • healthy • closedWithRefund • underReview • bankInitiatedClosed • customerInitiatedSpendDown • lostStolen • negativeBalance • unspecifiedClose • potentialAccountTakeover • potentialFraud • customerReportedIdentityTheft • spendDown • writeOff • returnedMail • customerInitiatedClose • registrationFailed • statusChangedByCsr • accountEscheated • unknown • potentialFirstPartyFraud • confirmedFirstPartyFraud • potentialThirdPartyFraud • confirmedThirdPartyFraud • confirmedAccountTakeover • potentialIdentityTheft • confirmedIdentityTheft • potentialOtherFraud • confirmedOtherFraud |
Obtain Account Details Joint Account Scenario
This API will return two account holders for a joint account (if applicable).
Route Parameters
Parameter name | Type | Value | Description |
---|---|---|---|
programCode | string | wf | This value identifies the program type of the account to be created. |
accountIdentifier | uuid | varies | Property and value provided in response of Enrollment call. |
Headers
Header name | Type | Value | Description |
---|---|---|---|
X-GD-RequestId | uuid | varies | This property is used to uniquely identify each request. |
Authorization | bearer token | varies | the token get from GD |
Response Body
{
"account": {
"accountHolders": [
{
"user": {
"firstName": "First h1MYC1v",
"lastName": "First 3ymkEem",
"dobStatus": "matched",
"last4Identity": "1128",
"identityType": "ssn",
"userIdentifier": "bf607fdd-536b-40e8-82f2-165f6e7c4ff3",
"peerTransferAcceptPreference": "manual",
"status": "active",
"isPrimaryAccountHolder": true,
"kycStateData": {
"ofacStatus": "passed",
"kycStatus": "passed",
"kycPendingGate": "healthy"
}
},
"accountHolderIdentifier": "adfe56b1-9732-4ce1-a8a7-aa06bb263135"
},
{
"user": {
"firstName": "Second YQ41JQQM",
"lastName": "Second TlFe8NRz",
"dobStatus": "matched",
"last4Identity": "8436",
"identityType": "ssn",
"userIdentifier": "5c24d7e5-8b8f-4b3c-816e-d56fbcf97fee",
"peerTransferAcceptPreference": "manual",
"status": "active",
"isPrimaryAccountHolder": false,
"kycStateData": {
"ofacStatus": "passed",
"kycStatus": "passed",
"kycPendingGate": "healthy"
}
},
"accountHolderIdentifier": "dabfa22f-0570-4cfa-9868-353daca958cb"
}
],
"accountIdentifier": "55881304-e02f-4048-a176-5efb4f6c8a79",
"accountReferenceNumber": "APM8757797",
"productCode": "50400",
"productTierKey": 32,
"currency": "USD",
"status": "normal",
"instantIssue": false,
"statusReasons": [
"healthy"
],
"accountStatusChangedDateTime": "2025-02-04T07:53:34.140Z",
"directDepositInformation": {
"accountNumber": "11150794159285",
"routingNumber": "124303214"
},
"termsAcceptances": [
{
"termsIdentifier": "privPlcy",
"termsAcceptanceDateTime": "2025-02-04T07:53:01.857Z",
"termsAcceptanceFlag": false
},
{
"termsIdentifier": "daa",
"termsAcceptanceDateTime": "2025-02-04T07:53:01.857Z",
"termsAcceptanceFlag": true
},
{
"termsIdentifier": "eca",
"termsAcceptanceDateTime": "2025-02-04T07:53:01.857Z",
"termsAcceptanceFlag": true
}
],
"accountCycleDay": 3
},
"responseDetails": [
{
"code": 0,
"subCode": 0,
"description": "Success",
"url": "http://tbd"
}
]
}
Webhook
"Obtain Account Details" Joint Account Webhook
PUT /programs/{programCode}/accounts/{accountIdentifier}
This optional feature can be used to assign account identifiers to customer accounts or to opt in or out of any terms or agreements that were agreed to or declined during enrollment
This feature can only be used if it has been agreed upon during onboarding and included in your onboarding contract.
Opt In/Out Terms or Agreements
This feature allows any terms or agreements that were opted into during enrollment to be opted out of later. Conversely, any terms or agreements that were opted out of during enrollment can be opted into later.
Credit Line Decrease (CLD) Eligibility Criteria Change
This feature further determines when an SCC account is eligible for a Credit Line Decrease. And when eligible, this change replaces statement check with funding date, thereby ensuring a statement is generated in 30 days instead of 7.
Conditions | Result |
---|---|
• Customer requests a CLD. • Request date minus initial successful account funding date is <=30 days. | CLD declined |
• Customer requests a CLD. • Request date minus initial successful account funding date is > 30 days and other criteria are met | CLD approved |
Request Sample
GET https://bospart.qa.uw2.gdotawsnp.com/baas/v1/programs/gbr/accounts/07d8ba76-6549-
4903-8434-90a11ae77300/cldEligibilityCheck HTTP/1.1
Accept-Encoding: gzip,deflate
Authorization: Bearer tcanJISPn0GUq4iImRY7Ig==
X-GD-RequestId: bf8b175e-5cfe-46d2-8cf0-fd6aea887e12
Content-Length: 0
Host: bospart.qa.uw2.gdotawsnp.com
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.2 (Java/1.8.0_181)
Response – Successful CLD
{
"isEligible":true,
"decreaseAmount":200,
"responseDetails":[
{
"code":0,
"subCode":0,
"description":"Success",
"url":"http://tbd"
}
]
}
Response – Unsuccessful CLD
{
"isEligible":false,
"decreaseAmount":0,
"responseDetails":[
{
"code":3,
"subCode":810,
"description":"Credit line decrease is not allowed since your account was opened less than a month ago.",
"url":"http://tbd"
}
]
}
GET /programs/{programCode}/accounts/{accountIdentifier}/getAccountForShowcase
Retrieves account information for display in showcase scenarios. Used for limited or demo account views.
GET /programs/{programCode}/accounts/{accountIdentifier}/getLinkedAccountsInfo
Retrieves detailed information about accounts linked to the specified account. Optionally includes sensitive payment instrument data and additional details.
GET /programs/{programCode}/accounts/{accountIdentifier}/statements/{statementPeriod}
This endpoint allows the retrieval of a PDF statement for an account and for a given period. The PDF will be base64 coded and it will return the transaction details on all transaction types.
If the GET request is successful, the following response message will be returned along with a 200 HTTP status code
Programs configured for the Interest Rate feature only:
- The following changes will be made to the eStatement interest details section:
- Interest Paid this Period changed to Interest Earned this Period
- Interest Paid Year to Date – Will reflect the posted YTD interest total amount
GET /programs/{programCode}/accounts/{accountIdentifier}/statements
This endpoint allows a list of available statements to be retrieved
If the GET request is successful, the following response message will be returned along with a 200 HTTP status code.
Note: If a statement is not available, and the accountIdentifier exists, then an empty list will be returned along with the 200 HTTP status code. If the accountIdentifier does not exist, a 404 HTTP status code will be returned.
eStatements List
All available eStatements will be included in the accountholder’s online Statements list. The Statements list may become long over time, so it is recommended that Partners:
Limit the list to 2 years or less
Implement a hide/unhide tab for accountholders to view eStatements older than 2 years
POST /programs/{programCode}/accounts/search
Searches for accounts based on encrypted search criteria. Requires a valid program code and search details in the request body. Returns a list of accounts matching the search parameters.
PUT /programs/{programCode}/accounts/{accountIdentifier}/close
This endpoint provides the ability to close accounts without the assistance of the Green Dot Care team.
- Close an Account
- To set an account to restricted customer initiated spend down:
- Submit a request to close the account by calling PUT /programs/{programCode}/accounts/{accountIdentifier}/close
- Once the request is processed by the system, the partner will receive a response containing the following account status information:
- The account status will be changed to restricted
- The account status reason will be customerInitiatedSpendDown
- There will not be a kycPendingGate (cure) (i.e. kycPendingGate: none)
- All funds currently in the spend purses will be moved back to the primary purse automatically.
- Note: For an account to be closed, it must be set to a restricted customer initiated spend down state.
- The current status of the account must be normal.
- An account with a negative balance cannot be closed using the API
PUT /programs/{programCode}/accounts/{accountIdentifier}/status
This endpoint allows Partners to update account statuses, account status reasons, and cures under certain conditions. When a valid request is submitted and completed successfully, the updated status, status reason, and kycPendingGate will be returned in GET /accounts/{accountIdentifier} and GET /enrollments/accounts/{accountIdentifier} responses. An Account Updated Webhook will also be published.
Partners can unlock an account on their own IF the lock was performed by the Partner. To unlock accounts, call this API with the status you would like to set. Any accounts locked by Green Dot will remain locked until Green Dot returns status to healthy.
Note: This endpoint can only be used if the Partner is configured to change statuses.
Account Status Values
Account Status Possible Values |
---|
Pending |
Normal |
Restricted |
Closed |
Locked |
Valid Parameters and Conditions
Note: PUT /accounts/{accountIdentifier}/status can be used to update account status and account status reason under the following conditions.
Request Parameters Account Status | Request Parameters Account Status Reason | Condition Only allowed if current kycPendingGate (aka: cure) is | Updated kycPendingGate (aka: cure) if request is successful |
---|---|---|---|
locked | potentialFirstPartyFraud | healthy | manual |
locked | confirmedFirstPartyFraud | healthy | manual |
locked | potentialThirdPartyFraud | healthy | manual |
locked | confirmedThirdPartyFraud | healthy | manual |
locked | potentialAccountTakeover | healthy | manual |
locked | confirmedAccountTakeover | healthy | manual |
locked | potentialIdentityTheft | healthy | manual |
locked | confirmedIdentityTheft | healthy | manual |
locked | potentialOtherFraud | healthy | manual |
locked | confirmedOtherFraud | healthy | manual |
Response Codes
Scenario | Code | subCode | Description |
---|---|---|---|
Invalid enum or missing notes. can be Status, Reasons, or Notes. | 600 | 0 | Invalid value. |
A combination of any of the following: • Invalid status • Invalid status response • Missing notes field | 603 | 0 | Invalid combination of values in the request. |
The request was not allowed. | 5 | 420 | The status update was declined by fraud. |
Status changes initiated by Green Dot (i.e. fraud or manual review) will override any partner-initiated status changes.
Partners must also send notes to the Green Dot Care team when updating an account status. When a valid request including the required notes property, is sent to PUT /accounts/{accountIdentifier}/status, the notes will be saved in CRM. Notes longer than 1000 characters will be truncated.
GET /programs/{programCode}/accounts/{accountIdentifier}/users
This endpoint allows the retrieval of the users’ profile information, associated with a specific account.
PUT /programs/{programCode}/accounts/{accountIdentifier}/users/{userIdentifier}
This endpoint gives the partner the ability to update an existing user’s information.
POST /programs/{programCode}/accounts/{accountIdentifier}/users/{userIdentifier}/identity
This endpoint allows an Individual Taxpayer Identification Number (ITIN) to be added to a customer’s account that originally enrolled using a Mexican Matricula ID only. This is primarily for U.S. tax purposes.
ITIN Limits:
- Up to 1 active account with the same ITIN per consumer program is allowed
- Up to 3 lifetime accounts with the same ITIN per consumer program are allowed
POST /programs/{programCode}/accounts/{accountIdentifier}/users/{userIdentifier}/kycGates/kyc2
Performs Know Your Customer (KYC) verification for a user on the account. Requires encrypted KYC details in the request body.
GET /programs/{programCode}/accounts/{accountIdentifier}/ACHTransfers
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.
If the GET request is successful, the following response message will be returned along with a 200 HTTP status code. 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. 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.
PUT /programs/{programCode}/accounts/{accountIdentifier}/transfers/{transferIdentifier}/mrdc
After a check is submitted and the checkDepositStatus is either pending or in review, this endpoint forces the customer to either accept or cancel the check deposit request.
GET /programs/{programCode}/accounts/{accountIdentifier}/transfers/{transferIdentifier}/mrdc
This endpoint allows retrieval of MRDC related transfers, one at a time, for an account.
GET /programs/{programCode}/accounts/{accountIdentifier}/fundfulfillment/{transferIdentifier}/mrdc
Gets the Fund Fulfillment MRDC Transfer
GET /programs/{programCode}/accounts/{accountIdentifier}/transfers/mrdc
After a check is submitted and the checkDepositStatus is either pending or in review, this endpoint forces the customer to either accept or cancel the check deposit request.
GET /programs/{programCode}/accounts/{accountIdentifier}/fundfulfillment/mrdc
Retrieves a paginated list of fund fulfillment MRDC transfers for the specified account, filtered by date range. Returns transfer details and status.
GET /programs/{programCode}/accounts/{accountIdentifier}/transfers/{transferIdentifier}/mrdc/checkImage
Retrieves a full color or grayscale image of a check for a specific MRDC transfer.
GET /programs/{programCode}/accounts/{accountIdentifier}/transfers/onHold
Retrieves a list of MRDC (Mobile Remote Deposit Capture) transfers that are currently on hold for the specified account. Returns transfer details and status.
GET /programs/{programCode}/accounts/{accountIdentifier}/transfers/{transferIdentifier}
Retrieves details for a specific P2P (peer-to-peer) transfer by transfer identifier for the given account. Returns transfer status, amount, and participant information.
GET /programs/{programCode}/accounts/{accountIdentifier}/transfers/p2p
This API is used to retrieve information about P2P requests between two different account holders within a program. It should be used to retrieve a list of P2Ps that could still be:
- Accepted by the recipient
- Cancelled by the sender
- Rejected by the recipient
- Expired by the system
GET /programs/{programCode}/accounts/{accountIdentifier}/externalcards
Retrieves all external debit or credit cards linked to the specified account. Returns card details and status for each linked card.
DELETE /programs/{programCode}/accounts/{accountIdentifier}/externalcards/{cardIdentifier}
This endpoint allows a specific external card to be deleted from an account. Make sure to include the accountIdentifier and cardIdentifier.
GET /programs/{programCode}/accounts/{accountIdentifier}/getLinkedAccount
This endpoint allows an account holder to be added to an existing account.Account must have the ability to be a joint account and not be a corp account.Account holder must first pass a validation check if validation check is successful, the account holder will be created and the request will returned the account holders linked to the account.
GET /programs/{programCode}/accounts/{accountIdentifier}/users/{userIdentifier}/authCustomerSSOToken
Retrieves a Single Sign-On (SSO) token for the specified user on the account.
GET /programs/{programCode}/accounts/{accountIdentifier}/users/{userIdentifier}/getAuthCustomerEnrollment
Retrieves the enrollment information for the specified user on the account.
GET /programs/{programCode}/accounts/{accountIdentifier}/odEligibilities
Performs an overdraft eligibility check for the specified account based on the inquiry date.
GET /programs/{programCode}/accounts/{accountIdentifier}/taxdocuments/{year}
This endpoint allows the retrieval of an INT-1099 form for a specific year. INT-1099 forms are only available for interest-bearing accounts that earn $10 USD or more in interest per year.
Note: Contact your Green Dot liaison for assistance with configuration.
GET /programs/{programCode}/accounts/{accountIdentifier}/taxdocuments/{docType}/{year}
This endpoint allows the retrieval of different type form for a specific year. Like INT-1099,S-1042 forms,etc.
Note: Contact your Green Dot liaison for assistance with configuration.
GET /programs/{programCode}/accounts/{accountIdentifier}/taxdocuments
This endpoint allows the retrieval of an INT-1099 form. INT-1099 forms are only available for interest-bearing accounts that earn $10 USD or more in interest per year.
Note: Contact your Green Dot liaison for assistance with configuration.
GET /programs/{programCode}/accounts/{accountIdentifier}/taxdocumentsbytype/{docType}
Retrieves tax documents for the account by type
Note: Contact your Green Dot liaison for assistance with configuration.
GET /programs/{programCode}/accounts/{accountIdentifier}/feeSummary
This endpoint allows to retrieve the fee summary of certian account. It returns the prior month fees and the year-to-date fees in this fee summary.
GET /programs/{programCode}/accounts/{accountIdentifier}/getAccountType
Retrieves the type of the specified account, such as checking, savings, or other supported types. Useful for partners to determine account capabilities.
Other Account Related API Endpoints
Obtain Bank Name
This API allows Partners to retrieve the bank name associated with a specific routing number.
Structure of API Call
GET /programs/{programCode}/bankNames?routingNumber={routingNumber}
API Call Structure Parameters
Field Name | Type | Required (Y/N) | Description |
---|---|---|---|
routingNumber | string | Y | Bank routing number: 9-digit ABA routing number for wire |
programCode | string | Y | Program code |
How it Works
Call GET …/bankNames?routingNumber={routingNumber} and include the routing number for which the bank name is being requested.
Sample Response Body Parameters
Field Name | Type | Description |
---|---|---|
bankName | string | Maximum Characters: 18 |
responseDetails | object | N/A |
Response Codes
Scenario | Code | subCode | Description |
---|---|---|---|
Success | 0 | 0 | Success |
Incorrect routing number | 3 | 760 | routingNumber not found |
Request validation fails | 101 | 0 | Invalid parameter routingNumber |
Close Account
This endpoint provides the ability to close accounts without the assistance of the Green Dot Care team.
Structure of API Call
PUT /programs/{programCode}/accounts/{accountIdentifier}/close
How it Works
- To set an account to restricted customer initiated spend down:
- Submit a request to close the account by calling PUT /programs/{programCode}/accounts/{accountIdentifier}/close
- Once the request is processed by the system, the partner will receive a response containing the following account status information:
- The account status will be changed to restricted
- The account status reason will be customerInitiatedSpendDown
- There will not be a kycPendingGate (cure) (i.e. kycPendingGate: none)
- All funds currently in the spend purses will be moved back to the primary purse automatically.
- Note: For an account to be closed, it must be set to a restricted customer initiated spend down state.
- The current status of the account must be normal.
- An account with a negative balance cannot be closed using the API.
Response Codes
HTTP Status Code | Code | subCode | Description |
---|---|---|---|
200 | 5 | 100 | Closing an account is not allowed unless account status is normal |
200 | 5 | 360 | An account with a negative balance cannot be closed using the API |
Closed Accounts
APIs will be disabled for closed/purged accounts, so they can be placed into a closed terminal state.
How it Works
- The accountStatus of an account will be set to closed if it meets the following conditions:
- The current status is restricted, the statusReason is customerInitiatedSpendDown, and the balance has been $0 for 60 days.
- The current status is restricted, the statusReason is spendDown, and the balance has been $0 for 210 days.
- All state changing API endpoints will be blocked for a closed account.
Sample Response:
{
"responseDetails":[
{
"code":3,
"subCode":105,
"description":"Account is closed.",
"url":"http://tbd"
}
]
}
Response Codes
If an account is closed and any of the following endpoints are called, the following response details will be returned.
Endpoint | Code | subCode | Description |
---|---|---|---|
POST /transfers MRDC, achOut, achPull, Purse to Purse, Disbursements, P2P POST /transfers/assessment P2P o IFT, achOut | 3 | 105 | Source account is closed or Target account is closed. |
PUT /transfers/{transferIdentifier} PUT /transfers/mrdc POST /accounts/{accountIdentifier}/adjustments POST /billpayPayees PUT /billpayPayees/{payeeIdentifier} DELETE /billpayPayees/{payeeIdentifier} POST /billpayPayments DELETE /billpayPayments/{paymentIdentifier} PUT/billPayPayments/{paymentIdentifier} | 3 | 105 | Account is Closed. |
POST /kycGates/idv | 2 | 105 | Account is Closed. |
PUT /accounts/{accountIdentifier} PUT /accounts/{accountIdentifier}/users/{userIdentifier} PUT /accounts/{accountIdentifier}/paymentInstruments/{p aymentInstrumentIdentifier} POST /accounts/{accountIdentifier}/activateCard DELETE /purses/{purseIdentifier} | 4 | 105 | Account is Closed. |
PUT /accounts/{accountIdentifier}/close | 5 | 100 | Closing an account is not allowed unless Account Status is Normal. |
POST /accounts/{accountIdentifier}/purses | 5 | 100 | An account must be in a normal status to add a purse. |
PUT /accounts/{accountIdentifier}/paymentInstruments/{p aymentInstrumentIdentifier}/lifecycleEvent | 4 | 105 | Replacement request was not allowed due to closed account status. |
PUT /accounts/{accountIdentifier}/paymentInstruments/{p aymentInstrumentIdentifier}/lifecycleEvent | 4 | 313 | Cannot Pause card. |
PUT /accounts/{accountIdentifier}/purses/{purseIdentifier} | 5 | 100 | An account must be in a normal status to update a purse. |
Updated 9 days ago