API Details
API Details
Making a Transfer
A simple workflow for making a transfer to an external bank account looks like:
- Make a POST /customers/{customerid} request as documented at POST /customers to create a new customer. If holding an existing account, retrieve its AccountID from the Registration API.
- Make a POST/customers/{customerid}/links/type/{fundingtype} request using CustomerID from the previous response to create a funding link. Make a second similar request to setup a destination link. If using a Green Dot bank account for either the source or destination, skip establishing that link.
- Make a POST/transfers/{transferid} request using CustomerID from the previous response to create a funding source.
- Make a POST/transfers/confirm/{transferId} request using TransferId from the previous response to confirm or void the associated Transfer. (This step is only used for a 2-phase commit or void Transfer Process).
Request Headers
Standard Headers
- accept: What the response should be formatted with. We currently support the following:
- application/xml
- application/json (Default)
- Accept-Encoding: gzip, deflate
- Content-Type: application/json;charset=UTF-8
Custom Headers
- requestid: The unique request ID generated by the client for transaction tracking. It is advisable to prepend the ID with the unique partner name. This header is optional for all APIs, except for POST/Transfer.
- endusersecurityid: The agreed upon unique Security ID of the End User. This header is used for fraud prevention and is a required value.
- enduserip: The IP address of the End User. This header is used for fraud prevention and is a required value.
- partneridentifier: Identifies the sender of the request. The value will be provided by Green Dot. This header is required if it is not an admin call. If it is an admin call, this is not required (the url is / admin/ xyz.
- apikey: This is an admin identifier/key. The value is “disbAdmin.” This is an optional header for non-admin calls but required for admin calls. If this header is populated, the caller needs to use an admin credentials to generate the authorization header. For all CRM calls, they can pass apikey along with the corresponding authorization header. If you are using version 1.2 and above, this is no longer used.
- x-gdc-authentication-method: Specifies the authentication method. This is used in version 1.2 and above. Values are:
- Basic – 1
- Oauth -2 (will be supported in the future)
- x-gdc-client-type: Specifies the client type. This is used in version 1.2 and above. Values are:
- External – 1 (default)
- Internal -2
Response Headers
Standard Headers
- date: The date and time that the response was sent (in "HTTP-date" format as defined by RFC 7231 7.1.1.2)
- content-type: What the request was encoded with. Currently we support:
- application/xml
- application/json (Default)
Custom Headers
- x-version: the format of the version string is: major.minor.build.revision, where:
- build is the number of days since January 1, 2000 local time.
- revision is the number of seconds since midnight local time (without considering time zone adjustments for daylight saving time), divided by 2. (https://msdn.microsoft.com/en-us/library/system.reflection.assemblyversionattribute.assemblyversionattribute.aspx)
- requestid: The same requestid passed into the request.
Common HTTP Status Codes
Common HTTP Status Codes
Upon receipt of any HTTP status codes, the Partner can either submit a GET/transfers/{transferId} to find out the status of the transaction or retry the transaction. If the transaction is retried, the POST/Transfer must be with the SAME TransferID so that idempotency is triggered and double-funding is prevented.
Status Code | Description |
---|---|
200 | Successful Request. See specific operation to see details for this response. |
201 | Resource was able to be created. See specific operation for details for this response. |
400 | Malformed request; missing fields, incorrect data, or malformed input structure. All possible error codes are listed below in Error Codes section. |
400 | If malformed requestid, an additional error code of 1010 will be sent. |
400 | If malformed endusersecurityid, an additional error code of 1020 will be sent. |
400 | If malformed enduserip, an additional error code of 1030 will be sent. |
401 | Unauthorized. Please provide valid credentials in the authorization header. |
404 | Unable to find resource. Unable to find resource specified by the URL parameter identifier. |
405 | Method Not Allowed. Unable to handle with the specified URI. |
409 | The requestid in the header already exists (duplicate request) in the Green Dot System for the given partner. An additional Error code of 2100 will be sent. |
409 | Unable to proceed because resource already exists in our system and is not in a valid state. See specific operation to see details for this response. |
500 | Internal Server Error. |
501 | Not implemented. Will be implemented at a future date. |
502 | Bad Gateway. The server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request. |
503 | Service Unavailable. The server is currently unable to handle the request due to a temporary overloading or maintenance of the server. |
504 | Gateway Timeout. The server, while acting as a gateway or proxy, did not receive a timely response from the upstream server specified by the URI (e.g. HTTP, FTP, LDAP) or some other auxiliary server (e.g. DNS) it needed to access in attempting to complete the request. |
Common Response Codes
Upon receipt of any common response codes, the Partner can either submit a GET/transfers/{transferId} to find out the status of the transaction or submit a new transaction. The new transaction should include a DIFFERENT TransferID. Sending the transaction with the same TransferID will only trigger idempotency and result in the same original response.
ResponseCode | Description |
---|---|
0 | Success |
1 | No response received for the API Request in a pre-defined time period. |
11 | No record found |
20 | Invalid Customer |
40 | Invalid Card Status |
41 | No Card Found |
50 | Parameter - Invalid |
51 | Missing parameter or Exceeded max length for the field |
52 | Invalid Amount |
70 | Invalid partnerIdentifier |
80 | Limit exceeded |
90 | Validation failed |
91 | Card Load Failed |
99 | Non-successful - Unspecified |
100 | Internal Exception |
101 | Internal Exception - call to other services failed |
102 | Partner service return failure |
103 | Customer is blocked |
112 | ProgramPartnerIdentifier is not supported |
113 | Transfer id is already completed |
114 | Verify account key failed |
123 | Failed in GREEN DOT AuthCommit |
131 | Invalid card |
153 | Personalized card not yet activated |
159 | Partially funded |
160 | Load not allowed |
161 | Card lost or stolen |
162 | Personalized card not found |
163 | Card account closed |
164 | Card account blocked |
165 | Card not registered |
166 | Validate Pin Other |
167 | Failed OFAC Verification |
168 | Card Expired |
213 | Missing valid MasterCard processor configuration UberPayments |
301 | Transfer reversal not allowed |
302 | Invalid Barcode Fields |
303 | The RetailerKey does not match the barcode retailer key |
304 | Transfer not previously authorized |
Common Response Detail Codes
Detail Codes are designed to provide additional detail information about the associated parent response code being returned.
Response Code | Description |
---|---|
0 | Success |
10 | None |
40 | Failed |
50 | Exception occurred |
3010 | Sender limit exceeded |
3020 | Recipient limit exceeded |
3030 | Invalid recipient account |
3040 | Other validation failures |
3041 | Invalid customer id |
3042 | There is no customer profile information by the CustomerID and PartnerProgramIdentifier |
3043 | Missing partner program configuration |
3046 | Partner Program Identifier is not allowed for this API |
3047 | No partner client credential found |
3048 | Partner program identifier do not match with original disbursement transfer request |
3049 | Original transfer id is a reversal id |
3050 | Either source or target account does not match original transfer |
3052 | Barcode number not found |
3053 | Invalid Retailer Information |
3054 | Account transaction not found |
3055 | Two Phase Commit Transfer not allowed |
3056 | Invalid Source Account |
3057 | Error encountered with GDN System - Transaction Successfully Voided |
3058 | Invalid UserName |
3059 | No user method groups found |
3071 | File type not supported |
3072 | File size exceeded |
3073 | Invalid BankName |
3074 | Invalid RoutingNumber |
3075 | DebitFundingSourceDetailAccountTransactionType is invalid |
3076 | CreditFundingSourceDetailAccountTransactionType is invalid |
3077 | Invalid Identification Info |
3600 | Transaction Cancelled successfully |
3601 | Transaction Cancelled already |
4001 | Ach Rejected |
4004 | Dct Timeout |
4005 | Partner Service Error |
4010 | Missing partner identifier |
4020 | Invalid partner identifier |
4021 | Invalid or no corresponding configuration for partner identifier |
4030 | PartnerProgramChannel not supported |
4040 | Amount cannot be less than or equal to 0 |
4041 | Amount format is invalid |
4050 | OriginationRequestId cannot be empty |
4060 | SourceProfile's CustomerID cannot be empty |
4070 | TargetProfile's CustomerID cannot be empty |
4080 | Request is null |
4100 | Invalid source profile |
4110 | Invalid target profile |
4120 | Invalid source profile type |
4130 | Invalid Transfer request option |
4131 | Invalid Transfer request option(IsGDNCard) |
4132 | Invalid Transfer request option(OriginalMessageID) |
4133 | Invalid Transfer request option(OriginalConfirmationID) |
4134 | Invalid Transfer request option(TransactionReferenceNumber) |
4135 | Invalid Transfer request option(SourceAccountReferenceNumber) |
4136 | Invalid Transfer request option(TargetAccountReferenceNumber) |
4230 | Invalid target profile type |
4250 | Missing/Duplicate request id |
4260 | Missing request transaction |
4270 | Missing request transferobject |
4280 | Missing partner service configuration |
4290 | Missing partner target uri |
4300 | Missing target customer information |
4310 | Missing target profile |
4320 | Missing channel configuration |
4330 | Missing target profile token |
4340 | Mismatch source customer and target customer |
4350 | The program is not supported |
4360 | Missing customer id |
4370 | Missing profile token |
4380 | Invalid transaction date |
4390 | Invalid transfer id |
4391 | Invalid claimCode |
4392 | Invalid transfer id or invalid claimcode |
4400 | Invalid target account token |
4410 | Invalid workflow process activity |
4420 | Invalid workflow activity status |
4430 | Invalid workflow process |
4440 | Invalid workflow process status |
4441 | Invalid DisbursementTransferRequestKey |
4442 | Invalid DisbursementBatchKey |
4450 | Invalid WorkflowProcessExecutionInstanceKey |
4460 | Invalid RegistrationKey |
4461 | No Registration profiles found |
4470 | Missing PIN |
4471 | Missing PIN Reference |
4480 | Missing first name |
4490 | Missing last name |
4500 | Missing customer info |
4510 | Missing account token |
4513 | Invalid or missing expiration info |
4520 | Missing last 4 digits |
4521 | Missing BIN |
4530 | Missing card association type |
4540 | Missing account number |
4550 | Missing expiry month |
4560 | Missing expiry year |
4570 | Invalid expiry month |
4572 | Account Blocked |
4573 | No Auth Request Found |
4574 | Invalid profile key |
4575 | Unable to void - already posted or full amount not available |
4576 | Either does not meet minimum or exceeds maximum per transaction amount. |
4577 | Account Not Active |
4578 | Invalid GDN Program |
4579 | GDN Program Blocked |
4580 | Invalid expiry year |
4581 | Invalid Payment Type |
4582 | Invalid Partner ResponseId |
4583 | Invalid Processor |
4584 | Exceeds IP Audit Limit |
4585 | ANI - Blocked by Green Dot |
4586 | Account Not Reloadable |
4587 | Account Not Eligible |
4588 | Card Declined |
4589 | Potential Fraud Detected |
4590 | Invalid customer key |
4591 | Partner has exceeded the daily limit |
4592 | Transaction limit is less than the minimum configured for the partner |
4593 | Consumer has exceeded the monthly limit configured in the system |
4594 | Per transaction maximum amount limit reached |
4595 | Missing RequestID |
4596 | Missing Transfer ResponseCode Description |
4597 | Missing Transfer ResponseDetailCode Description |
4598 | Invalid Transfer Status ChangeDate |
4599 | Missing Partner Program Identifier |
4600 | Missing phone number |
4601 | Consumer has exceeded the daily load amount limit in the system |
4602 | Consumer has exceeded the daily load count limit in the system |
4603 | Consumer has exceeded the weekly load amount limit in the system |
4604 | Consumer has exceeded the weekly load count limit in the system |
4605 | Consumer has exceeded the monthly load amount limit in the system |
4606 | Consumer has exceeded the monthly load count limit in the system |
4610 | Missing email address |
4620 | Invalid email address |
4630 | Invalid phone number |
4640 | Invalid SSN |
4660 | Invalid processing waiting hours |
4670 | Invalid expired waiting hours |
4680 | Invalid cancel waiting hours |
4690 | Invalid original disbursement transfer request key |
4700 | Invalid original disbursement transfer request id |
4710 | Missing original disbursement transfer request id |
4720 | Reversal amount exceeds original transaction amount |
4730 | Original transfer not successful |
4740 | Invalid reversal amount |
4750 | Original transfer not found |
4751 | Invalid Barcode Status |
4752 | Request ID provided not found |
4753 | Transfer ID provided not found |
4800 | Account balance is less than the reversal amount |
4802 | Refer to card issuer |
4807 | Cardholder not on file |
4809 | Bank not supported by switch |
4810 | Allowable PIN tries exceeded, capture |
4812 | Requested function not supported |
4813 | Insufficient funds on card |
4814 | Incorrect Pin - Invalid PIN number |
4815 | Transaction Denied - Transaction not Permitted to Cardholder |
4818 | Exceeds Withdrawal Limit |
4821 | Hard capture, permanent restraint |
4822 | Pin Exceeded |
4826 | Transaction Decline - Violation of Law |
4830 | Authorization life cycle expired or unacceptable |
4831 | Inactive card |
4832 | AVS Failed - The AVS validation was not a match |
4900 | Invalid InvalidPartnerKey |
4910 | No transaction is calculated |
4920 | Missing partner list configuration |
4921 | Missing email flag |
4922 | The Card type is Unknown |
4923 | No Valid CardTransfer found |
4924 | Missing PartnerKey |
4925 | Invalid Batch Id |
4926 | Invalid argument experienced with internal service |
4927 | Invalid PartnerId |
4928 | Invalid PartnerName |
4929 | Invalid ProgramId |
4930 | Invalid PartnerProgramId |
4931 | Missing notification product definition token |
4932 | Missing notification type key |
4933 | Missing detail account transaction type |
4934 | Missing or invalid GdGdV3LimitVeriPaymentType |
4935 | Missing Personal Card / CRV Removal configuration |
4936 | Duplicated identifier/record/requiest id detected |
4937 | Suspicious Fraud |
4938 | Operation is not allowed |
4939 | Failed to add the disbursementtransferledger information for the debit source profile |
4940 | Failed to add the disbursementtransferledger information for the fund target profile |
4941 | Failed to add the disbursementtransferledger information for the credit source profile |
4942 | Failed to update the disbursementtransferrequest information |
4943 | AccountManagement Credit Api Timeout |
4944 | AccountManagement Debit Api Timeout |
4945 | Tpg stage failed |
4946 | Missing Transaction Info |
4947 | Missing Identification Info |
4948 | Missing Credential Info |
4949 | Missing tpg processor configuration |
4950 | Missing payment processor configuration |
4951 | Missing Disbursement Transfer Token |
4952 | Missing Claim Code |
4953 | Missing TransactionId |
4954 | Unable to determine SSN based on last 4 provided |
Field Standards
Field | Type | Format | Required | Values Allowed |
---|---|---|---|---|
firstName | String | Min 2 characters Max 25 characters | Yes | a-z, A-Z, hyphen, space Regex="^[a-zA-Z][- a-zA-Z']+$ |
LastName | String | Min 2 characters Max 25 characters | Yes | a-z, A-Z, hyphen, space Regex="^[a-zA-Z][- a-zA-Z']+$ |
MiddleInitial | String | Min 1 character Max 1 character | Yes | a-z, A-Z Regex=@"^[a-zA-Z]{1}$ |
AddressLine1 | String | Min 0 characters Max 25 characters | Yes | a-z, A-Z, 0-9, hyphen, space, /, period Regex=@"^[a-zA-Z0-9][- a-zA-Z0-9/\.]{2,}$ |
AddressLine2 | String | Min 0 characters Max 25 characters | No | a-z, A-Z, 0-9, hyphen, space, /, period Regex=@"^[a-zA-Z0-9][- a-zA-Z0-9/\.]{2,}$ |
City | String | Min 0 characters Max 25 characters | Yes | a-z, A-Z, hyphen, space Regex=@"^[- a-zA-Z]*$ |
State | String | Min 0 characters Max 2 characters | Yes | any word character Regex=@"^\w{2}?$ |
ZipCode | String | Min 5 characters Max 10 characters | Yes | 0-9, hyphen Regex=@"^\d{5}(-?\d{4})?$ |
SSN | String | Min 11 characters Max 11 characters | Yes | 0-9, hyphen Regex=@"^[0-8]\d{2}-\d{2}-\d{4}$ |
DateOfBirth | String | Min 10 characters Max 10 characters | Yes | 0-9, hyphen, dash, period Regex=@"^(0[1-9]|1[012])[- /.](0[1-9]|[12][0- 9]|3[01])[- /.]19 | 20\d\d$ |
ATMPin | String | Min 4 characters Max 4 characters | Yes | 0-9 Regex=@"^[0-9]{4}$ |
PhoneNumber | String | Min 13 characters Max 14 characters | Yes | 0-9, hyphen, space, (,) Regex=@"^([2-9]\d{2}) ?\d{3}-\d{4}$ |
EmailAddress | String | Min 6 characters Max 50 characters | Yes | a-Z, A-Z, 0-9, underscore, hyphen, period, ampersand Regex=@"^[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)@[a[1]zA-Z0-9-]{2,}(.[a-zA-Z0-9-]+).([a-zA-Z]{2,4})$ |
Endpoints
Prefix: https://[server]/gateway/[version]/
The current version is 1.1
Error Response
When an error occurs, there will be an errors property with a list of errors applicable to the request
- errorcode: Green Dot error code.
- errordescription: Descriptive error message.
Example:
{
"errors":[
{
"errorcode":1317,
"errordescription":"Missing request id”
}
]
}
Updated 11 months ago