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

FieldDescription
dobStatusCan 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
peerTransferAcceptPreferenceValue 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.
ofacStatusLast result of running an OFAC check against a user (i.e. pending, passed, failed).
kycStatusLast result of running a user through a KYC (Know Your Customer) gate (i.e. pending, passed, failed).
statusReasonsString 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 nameTypeValueDescription
programCodestringwfThis value identifies the program type of the account to be created.
accountIdentifieruuidvariesProperty and value provided in response of Enrollment call.

Headers

Header nameTypeValueDescription
X-GD-RequestIduuidvariesThis property is used to uniquely identify each request.
Authorizationbearer tokenvariesthe 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.

ConditionsResult
• 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) isUpdated kycPendingGate (aka: cure) if request is successful
lockedpotentialFirstPartyFraudhealthymanual
lockedconfirmedFirstPartyFraudhealthymanual
lockedpotentialThirdPartyFraudhealthymanual
lockedconfirmedThirdPartyFraudhealthymanual
lockedpotentialAccountTakeoverhealthymanual
lockedconfirmedAccountTakeoverhealthymanual
lockedpotentialIdentityThefthealthymanual
lockedconfirmedIdentityThefthealthymanual
lockedpotentialOtherFraudhealthymanual
lockedconfirmedOtherFraudhealthymanual

Response Codes

ScenarioCodesubCodeDescription
Invalid enum or missing notes. can be Status, Reasons, or Notes.6000Invalid value.
A combination of any of the following:
• Invalid status
• Invalid status response
• Missing notes field
6030Invalid combination of values in the request.
The request was not allowed.5420The 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 NameTypeRequired (Y/N)Description
routingNumberstringYBank routing number: 9-digit ABA routing number for wire
programCodestringYProgram 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 NameTypeDescription
bankNamestringMaximum Characters: 18
responseDetailsobjectN/A

Response Codes

ScenarioCodesubCodeDescription
Success00Success
Incorrect routing number3760routingNumber not found
Request validation fails1010Invalid 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 CodeCodesubCodeDescription
2005100Closing an account is not allowed unless account status is normal
2005360An 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.

EndpointCodesubCodeDescription
POST /transfers MRDC, achOut, achPull, Purse to Purse, Disbursements, P2P

POST /transfers/assessment P2P o IFT, achOut
3105Source 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}3105Account is Closed.
POST /kycGates/idv2105Account is Closed.
PUT /accounts/{accountIdentifier} PUT /accounts/{accountIdentifier}/users/{userIdentifier} PUT /accounts/{accountIdentifier}/paymentInstruments/{p aymentInstrumentIdentifier} POST /accounts/{accountIdentifier}/activateCard DELETE /purses/{purseIdentifier}4105Account is Closed.
PUT /accounts/{accountIdentifier}/close5100Closing an account is not allowed unless Account Status is Normal.
POST /accounts/{accountIdentifier}/purses5100An account must be in a normal status to add a purse.
PUT /accounts/{accountIdentifier}/paymentInstruments/{p aymentInstrumentIdentifier}/lifecycleEvent4105Replacement request was not allowed due to closed account status.
PUT /accounts/{accountIdentifier}/paymentInstruments/{p aymentInstrumentIdentifier}/lifecycleEvent4313Cannot Pause card.
PUT /accounts/{accountIdentifier}/purses/{purseIdentifier}5100An account must be in a normal status to update a purse.

What’s Next

For Accounts API Reference, click the link below.