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

ParameterTypeSample ValuesNotes
fundingDateDateTime‘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 ScenarioHTTP Status CodeCodeSubcodeMessage
A field in the Request is sent in with Invalid data4001010Invalid Parameter
Missing a required field in the request4002000Missing Parameter
TransactionReferenceId related to TransferID sent in is Invalid4009182004Invalid Client Check Deposit Reference Id
Funding Date is Invalid4009162016Invalid Funding Date
ProgramCode or CheckDepositTransactionId is Invalid4009022006CheckDepositTransactionId or PartnerProgramReferenceID is invalid
Check Deposit is not in the correct status of Approved and Funds Scheduled4009022020Check deposit Transaction is not a qualified Funds Scheduled item
FundingDate is not a valid Business date4009162031Invalid BusinessDate date (FundingDate not a business day)
Non-configured partner/Invalid ProgramCode4001010Non-configured partner/Invalid ProgramCode
TransferID not found in our DB404100No Transfer found with TransferIdentifier: (transferID)
Internal Exception5009122000InternalException (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 StatusDefinitionSubmit Check (Post)Update Check (PUT)GETGET ALL
DeclinedIf declined by a system rule:
• When funds are declined and
• When agent declines in review
YESNOYESYES
CanceledCanceled by the user or the system if the user does not respond on timeNOYESYESYES
FailedFailure due to an account status that is not normal when postingYESYES (system failure)NONO
RejectedCheck is returnedNONOYESYES
CompletedSuccessfulNONOYESYES
PendingInitial stateYESYESYESYES

MRDC Statuses and Sub-Statuses

StatusSub-StatusSubmit Check (Post)Update Check (PUT)GETGET ALL
declineddeclinedYESNOYESYES
reviewpendingUserAcceptanceYESNOYESYES
declineddeclinedByAgentNONOYESYES
declineddeclinedByRiskYESNOYESYES
reviewpendingAgentReviewNOYESYESYES
approvedfundsScheduledNOYESYESYES
pendingpendingUserAcceptanceYESNOYESYES
canceledcanceledByCustomerNOYESYESYES
canceleduserDidNotRespondNONOYESYES
approvedfundsPostedNONOYESYES
failedfailedYESYESNONO
returnedfundsReversedNONOYESYES
returnedfundsNotReversedNONOYESYES

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.

PreRequisiteRequiredstatusReasonCodeDescription
Identity Verification StatusYesidvIDV has not been approved
Customer Identification Program (CIP) StatusYescipCIP/KYC has not been approved
Account StatusYesasAccount 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 StatusYesactPhysical card not activated
Successful PayrollPartner specificprAccount does not have eligible payroll
Card SpendPartner specificcsAccount does not have recent card spend at POS

Response Codes

HTTP Status CodeCodeSub-CodeDescription
2003131One 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.

ScenarioCodeSub-CodeDescription
Account is Locked3106AccountStatus is locked.
Account is Locked with a Cure3100AccountStatus is locked but is curable.
Note: The accountholder list is returned with an outstanding cure.
Account is Pending3100AccountStatus is pending.
Account is Closed3105AccountStatus is closed.
Account is Restricted3100This 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