MRDC Funding
MRDC Funding APIs can be used for funding MRDC transactions, as well as general MRDC transfers information.
MRDC Funding Endpoints
Submit Check for MRDC Funding
This endpoint is used to submit a check to fund an MRDC transaction.
API Call Structure
POST /programs/{programCode}/fundfulfillment/mrdc
Request Body
{
"transferIdentifier": "string",
"currency": "string",
"transferRoute": {
"transactionAmount": 0,
"sourceTransferEndpoint": {
"latitude": 0,
"longitude": 0,
"encryptedCheckImageData": {
"version": "string",
"ephemeralPublicKey": "string",
"publicKeyHash": "string",
"data": "string"
},
"encryptedCheckX9Data": {
"version": "string",
"ephemeralPublicKey": "string",
"publicKeyHash": "string",
"data": "string"
},
"imageFormat": "string",
"device": {
"deviceId": "string",
"deviceMake": "string",
"deviceVersion": "string",
"deviceOS": "string",
"deviceOSVersion": "string",
"ipAddress": "string",
"customerIP": "string"
},
"postingInfos": [
{
"postingInfoToken": "string",
"amount": 0,
"depositDate": "string",
"transferType": "string"
}
]
},
"targetTransferEndpoint": {
"accountIdentifier": "string"
}
},
"fraudData": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
Response Body
{
"transfer": {
"accountIdentifier": "string",
"transferIdentifier": "string",
"checkAmount": 0,
"transferStatus": "string",
"checkReturnedDate": "string",
"checkCanceledDate": "string",
"checkDeclinedDate": "string",
"rejectReason": "string",
"checkSubmitDate": "string",
"postingInfos": [
{
"postingInfoStatus": "string",
"fundsAvailableDate": "string",
"lastChangedDateTime": "string",
"hasScheduleChanged": "string",
"postingInfoToken": "string",
"amount": 0,
"depositDate": "string",
"transferType": "string"
}
]
},
"fraudData": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"responseDetails": [
{
"code": 0,
"subCode": 0,
"description": "string",
"url": "string"
}
]
}
Modify Funding Date of MRDC Transaction
After a check is submitted successfully, partners can submit a funding date update via this endpoint. The new funding date must be between the current date and the scheduled funding date. The new funding date must be a business date, not a bank holiday or weekend. Approved check amount will be funded to the Green Dot accountholder’s account at the end of the business day of the new (updated) funding date.
API Call Structure
PUT/programs/{programCode}/transfers/{transferIdentifier}/mrdc/fundingDate
Request Parameters
Parameter | Type | Sample Values | Notes |
---|---|---|---|
fundingDate | DateTime | ‘2021-03-24’ | fundingDate must be a valid business day (non-weekend and non-holiday). |
Request Body
{
"fundingDate":“2021-03-24"
"RequestHeader":
{"RequestId": "fd0bd4cb-0935-4175-ac7e-64677c545407"}
}
Response Body
{
"fundingDate":“2021-03-24",
"transferIdentifier": "9296582f-4a3d-4c49-860f-a2b579b80a6f",
"responseDetails": [
{
"code": 0,
"subCode": 0,
"description": "Success"",
"url": "http://tbd"
}
]
}
Error Codes
Error Scenario | HTTP Status Code | Code | Subcode | Message |
---|---|---|---|---|
A field in the Request is sent in with Invalid data | 400 | 101 | 0 | Invalid Parameter |
Missing a required field in the request | 400 | 200 | 0 | Missing Parameter |
TransactionReferenceId related to TransferID sent in is Invalid | 400 | 918 | 2004 | Invalid Client Check Deposit Reference Id |
Funding Date is Invalid | 400 | 916 | 2016 | Invalid Funding Date |
ProgramCode or CheckDepositTransactionId is Invalid | 400 | 902 | 2006 | CheckDepositTransactionId or PartnerProgramReferenceID is invalid |
Check Deposit is not in the correct status of Approved and Funds Scheduled | 400 | 902 | 2020 | Check deposit Transaction is not a qualified Funds Scheduled item |
FundingDate is not a valid Business date | 400 | 916 | 2031 | Invalid BusinessDate date (FundingDate not a business day) |
Non-configured partner/Invalid ProgramCode | 400 | 101 | 0 | Non-configured partner/Invalid ProgramCode |
TransferID not found in our DB | 404 | 10 | 0 | No Transfer found with TransferIdentifier: (transferID) |
Internal Exception | 500 | 912 | 2000 | InternalException (Green Dot internal error) |
Retrieve MRDC Transfers
This endpoint is used to retrieve MRDC-related transfers for a specific account.
API Call Structure
GET /programs/{programCode}/accounts/{accountIdentifier}/transfers/{transferIdentifier}/mrdc
Sample Response Body
Single Transfer Regular Funding (Happy Path)
{
"transfer":{
"accountIdentifier":"09c26d69-0ec2-431e-8fd8-978f7f4db6ce",
"transferIdentifier":"64beeea0-8ed2-4862-9364-39d21f3a8ff9",
"transferStatus":"pending",
"checkDeposit":{
"checkDepositStatus":"approved",
"checkDepositSubStatus":"fundsScheduled",
"transactionAmount":50.0,
"checkSubmitDate":"2020-08-19T19:44:47.255Z ",
"fundsAvailableDate":"2020-08-26T19:44:47.255Z",
"depositDate":"2020-08-19T19:44:47.255Z ",
"lastChangedDateTime":"2020-08-19T11:43:48.390Z",
"hasScheduleChanged":"false"
}
},
"responseDetails":[
{
"code":0,
"subCode":0,
"description":"success",
"url":"http://tbd"
}
]
}
Permit Retrieval of MRDC Transfers
This endpoint is used to retrieve an MRDC transfers list for an account during a specific time.
API Call Structure
GET/programs/{programCode}/accounts/{accountidentifier}/transfers/mrdc
Sample Request Body
GET/programs/{programCode}/accounts/{accountidentifier}/transfers/mrdc?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&offset=1&limit=100
Sample Response Body
{
"transfers":[
{
"accountIdentifier":"638b1bda-c041-48b3-8494-94159b36e3e0",
"transferIdentifier":"7a0f5829-199e-4fc5-9e41-60f85017a640",
"transferStatus":"completed",
"checkDeposit":{
"checkDepositStatus":"approved",
"checkDepositSubStatus":"fundsPosted",
"transactionAmount":50.0,
"checkSubmitDate":"2020-07-27T19:44:47.255Z",
"fundsAvailableDate":"2020-07-27T19:44:47.255Z ",
"depositDate":"2020-07-27T19:44:47.255Z",
"lastChangedDateTime":"2020-07-27T09:00:04.797Z",
"checkReturnedDate":"",
"checkCanceledDate":"",
"checkDeclinedDate":"",
"hasScheduleChanged":"false",
"isManualReview":false,
"isInstantFund":true
}
},
{
"accountIdentifier":"638b1bda-c041-48b3-8494-94159b36e3e0",
"transferIdentifier":"2e7bd453-202d-46f2-9ad5-19bce8025542",
"transferStatus":"canceled",
"checkDeposit":{
"checkDepositStatus":"canceled",
"checkDepositSubStatus":"canceled",
"transactionAmount":50.0,
"checkSubmitDate":"2020-08-04T19:44:47.255Z",
"fundsAvailableDate":"",
"depositDate":"2020-08-04T19:44:47.255Z",
"lastChangedDateTime":"2020-08-04T12:35:13.300Z",
"checkReturnedDate":"",
"checkCanceledDate":"2020-08-04",
"checkDeclinedDate":"",
"hasScheduleChanged":"false",
"isManualReview":false,
"isInstantFund":false
}
},
{
"accountIdentifier":"638b1bda-c041-48b3-8494-94159b36e3e0",
"transferIdentifier":"2048c1c3-2142-4c9f-b28e-8b4b6c12cda1",
"transferStatus":"canceled",
"checkDeposit":{
"checkDepositStatus":"canceled",
"checkDepositSubStatus":"canceled",
"transactionAmount":50.0,
"checkSubmitDate":"2020-08-04T19:44:47.255Z",
"fundsAvailableDate":"",
"depositDate":"2020-08-04T19:44:47.255Z",
"lastChangedDateTime":"2020-08-04T19:07:45.810Z",
"checkReturnedDate":"",
"checkCanceledDate":"2020-08-04T19:44:47.255Z",
"checkDeclinedDate":"",
"hasScheduleChanged":"false",
"isManualReview":false,
"isInstantFund":false
}
},
{
"accountIdentifier":"638b1bda-c041-48b3-8494-94159b36e3e0",
"transferIdentifier":"a8dbaf82-dcaa-4ae4-95bc-e2396896f096",
"transferStatus":"pending",
"checkDeposit":{
"checkDepositStatus":"review",
"checkDepositSubStatus":"pendingAgentReview",
"transactionAmount":2800.0,
"checkSubmitDate":"2020-08-12T19:44:47.255Z",
"fundsAvailableDate":"",
"lastChangedDateTime":"2020-08-12T16:04:30.320Z",
"checkReturnedDate":"",
"checkCanceledDate":"",
"checkDeclinedDate":"",
"hasScheduleChanged":"false",
"isManualReview":true,
"isInstantFund":false
}
},
{
"accountIdentifier":"638b1bda-c041-48b3-8494-94159b36e3e0",
"transferIdentifier":"75619c1d-8ae1-4435-a5a2-4a3a60fe413c",
"transferStatus":"pending",
"checkDeposit":{
"checkDepositStatus":"approved",
"checkDepositSubStatus":"fundsScheduled",
"transactionAmount":10.0,
"checkSubmitDate":"2020-08-14T19:44:47.255Z",
"fundsAvailableDate":"2020-08-20T19:44:47.255Z",
"depositDate":"2020-08-14",
"lastChangedDateTime":"2020-08-14T03:34:38.817Z",
"checkReturnedDate":"",
"checkCanceledDate":"",
"checkDeclinedDate":"",
"hasScheduleChanged":"false",
"isManualReview":false,
"isInstantFund":false
}
},
{
"accountIdentifier":"638b1bda-c041-48b3-8494-94159b36e3e0",
"transferIdentifier":"dcaf3874-2c6d-447b-8997-367116006cd2",
"transferStatus":"pending",
"checkDeposit":{
"checkDepositStatus":"pending",
"checkDepositSubStatus":"pendingUserAcceptance",
"transactionAmount":50.0,
"checkSubmitDate":"2020-08-19T19:44:47.255Z",
"fundsAvailableDate":"2020-08-19T19:44:47.255Z",
"depositDate":"2020-08-19T19:44:47.255Z",
"lastChangedDateTime":"2020-08-19T11:53:42.203Z",
"checkReturnedDate":"",
"checkCanceledDate":"",
"checkDeclinedDate":"",
"hasScheduleChanged":"false",
"isManualReview":false,
"isInstantFund":true
}
}
],
"responseDetails":[
{
"code":0,
"subCode":0,
"description":"Success",
"url":"http://tbd"
}
]
}
MRDC Transfer Statuses
Transfer Status | Definition | Submit Check (Post) | Update Check (PUT) | GET | GET ALL |
---|---|---|---|---|---|
Declined | If declined by a system rule: • When funds are declined and • When agent declines in review | YES | NO | YES | YES |
Canceled | Canceled by the user or the system if the user does not respond on time | NO | YES | YES | YES |
Failed | Failure due to an account status that is not normal when posting | YES | YES (system failure) | NO | NO |
Rejected | Check is returned | NO | NO | YES | YES |
Completed | Successful | NO | NO | YES | YES |
Pending | Initial state | YES | YES | YES | YES |
MRDC Statuses and Sub-Statuses
Status | Sub-Status | Submit Check (Post) | Update Check (PUT) | GET | GET ALL |
---|---|---|---|---|---|
declined | declined | YES | NO | YES | YES |
review | pendingUserAcceptance | YES | NO | YES | YES |
declined | declinedByAgent | NO | NO | YES | YES |
declined | declinedByRisk | YES | NO | YES | YES |
review | pendingAgentReview | NO | YES | YES | YES |
approved | fundsScheduled | NO | YES | YES | YES |
pending | pendingUserAcceptance | YES | NO | YES | YES |
canceled | canceledByCustomer | NO | YES | YES | YES |
canceled | userDidNotRespond | NO | NO | YES | YES |
approved | fundsPosted | NO | NO | YES | YES |
failed | failed | YES | YES | NO | NO |
returned | fundsReversed | NO | NO | YES | YES |
returned | fundsNotReversed | NO | NO | YES | YES |
Check Eligibility
This endpoint allows the Partner to verify if the account meets the eligibility requirements when a submit check is requested.
Note: This API can only be used by Partners who are using BaaS eligibility criteria for MRDC.
API Call Structure
POST/programs/{programCode}/transfers/assessment/mrdc
Pre-requisites
To mitigate fraud risk, returned eligibility prerequisites are mandatory and enforced when a check is submitted using the POST transfers/mrdc API. When POST transfers/MRDC is called, any unmet prerequisites for the customer will be returned.
The following table contains a list of prerequisites that must be met for a customer to be eligible to submit a check for MRDC.
PreRequisite | Required | statusReasonCode | Description |
---|---|---|---|
Identity Verification Status | Yes | idv | IDV has not been approved |
Customer Identification Program (CIP) Status | Yes | cip | CIP/KYC has not been approved |
Account Status | Yes | as | Account status is not normal. Note: The account status must be normal. If a user’s account changes to a non-normal status between the time that they submit a check and the time it is posted, then the deposit will still succeed. |
Card Activation Status | Yes | act | Physical card not activated |
Successful Payroll | Partner specific | pr | Account does not have eligible payroll |
Card Spend | Partner specific | cs | Account does not have recent card spend at POS |
Response Codes
HTTP Status Code | Code | Sub-Code | Description |
---|---|---|---|
200 | 3 | 131 | One or more prerequisites was not met |
Sample Request Body – Normal Account
Note: The image is not required for assessment calls.
{
"currency":"USD",
"transferIdentifier":"422f0c3a-f756-4656-be33-61e59fdaccd3",
"transferRoute":{
"sourceTransferEndpoint":{
"device":{
"deviceID":"DEVICEID"
},
"encryptedCheckImageData":{
"data":"string",
"ephemeralPublicKey":"string==",
"publicKeyHash":"string=",
"version":"EC_v1"
},
"imageFormat":"jpeg"
},
"targetTransferEndpoint":{
"accountIdentifier":"07f0a3d2-9ca1-41ce-8771-960f9241d800"
},
"transactionAmount":1.0
}
}
Sample Response – Normal Account
Note: The accountHolders list (highlighted) will only contain details about an account holder that is not in normal status (i.e. pending, restricted, locked, closed). If an account holder is in normal status, an empty list will be returned.
{
"accountHolders":[],
"prerequisites":["idv","dd","pr","cs","crv","pv"],
"responseDetails":[
{
"code":0,
"subCode":0,
"description":"Pending",
"url":"http://tbd"
}
]
}
Response Details
If the account status is not normal, the following will be returned via responseDetails.
Scenario | Code | Sub-Code | Description |
---|---|---|---|
Account is Locked | 3 | 106 | AccountStatus is locked. |
Account is Locked with a Cure | 3 | 100 | AccountStatus is locked but is curable. Note: The accountholder list is returned with an outstanding cure. |
Account is Pending | 3 | 100 | AccountStatus is pending. |
Account is Closed | 3 | 105 | AccountStatus is closed. |
Account is Restricted | 3 | 100 | This account is in a restricted state that does not allow inbound or internal transfers. Note: The accountholder list is returned with an outstanding cure. |
MRDC Response Codes
Click here to view the MRDC Response Codes.
Retrieve Check Images
This endpoint allows the retrieval of check images to display on transaction history User Interfaces (UIs) and eStatements.
Note: This endpoint returns a reduced size grayscale image of a check.
API Call Structure
GET/programs/{programCode}/accounts/{accountIdentifier}/transfers/{transferIdentifier}/mrdc/checkImage
Sample Response Body
{
"responseDetails":[
{
"code":0,
"subCode":0,
"description":"string",
"url":"string"
}
],
"encryptedCheckImageData":{
"version":"string",
"ephemeralPublicKey":"string",
"publicKeyHash":"string",
"data":"string"
}
}
Retrieve Full Color Check Image
This API is used to retrieve the full-color image of a check.
API Call Structure
GET /programs/{programCode}/accounts/{accountIdentifier}/transfers/{transferIdentifier}/mrdc/CheckImage? colorImage=true
Updated 9 months ago