---
title: "Create MRDC Transfer"
method: POST
path: "/programs/{programCode}/transfers/mrdc"
tags: ["Transfers"]
---

# Create MRDC Transfer

`POST /programs/{programCode}/transfers/mrdc`

Creates a new Mobile Remote Deposit Capture (MRDC) transfer and runs check deposits through a pre-validation process. User must accept the 'Funds Available Date' or a 'Manual Review'.

## Path parameters

- `programCode` string, required

## Headers

- `X-GD-RequestId` string, required

## Request body

- CreateMrdcTransferRequest — Represents a request to create a Mobile Remote Deposit Capture (MRDC) transfer. This request is used to submit a check deposit for processing, including check image data, deposit amount, and account details.
  - `transferIdentifier` string, nullable — The unique identifier for the MRDC transfer. This value is generated by the client and used for idempotency and tracking.
  - `currency` string, nullable — The ISO 4217 currency code for the deposit (e.g., "USD").
  - `transferRoute` MrdcTransferRoute — Represents the routing details for a Mobile Remote Deposit Capture (MRDC) transfer. Contains information about the check deposit amount, the source (including check image and device/location data), and the target account where the funds will be deposited.
    - `transactionAmount` number, double, nullable — The amount of the check to be deposited, in the currency specified by the parent request (e.g., "USD").
    - `sourceTransferEndpoint` MrdcSourceEndpoint — Represents the source endpoint details for a Mobile Remote Deposit Capture (MRDC) transfer. Contains information about the location, check image, image format, and device used to submit the check deposit.
      - `latitude` number, double — The latitude coordinate where the check deposit was initiated. Used for geolocation and fraud prevention purposes.
      - `longitude` number, double — The longitude coordinate where the check deposit was initiated. Used for geolocation and fraud prevention purposes.
      - `encryptedCheckImageData` EncryptedData — Represents a container for encrypted data used in secure data transfer operations. Contains the encrypted payload and associated cryptographic metadata, including encryption version, ephemeral public key, and public key hash. Used to securely transmit sensitive information such as user data, ensuring confidentiality and integrity during transport.
        - `version` string, nullable — The version of the encryption algorithm used to encrypt the data (e.g., "v1", "v2").
        - `ephemeralPublicKey` string, nullable — The ephemeral public key used in the encryption process, typically for key exchange or session establishment.
        - `publicKeyHash` string, nullable — The hash of the public key used to verify the integrity and authenticity of the encryption key.
        - `data` string, nullable — The encrypted data payload, typically base64-encoded, containing the sensitive information.
      - `imageFormat` string, nullable — The format of the check image (e.g., "jpg", "png"). Indicates the file type of the submitted check image.
      - `device` DeviceInfo — Represents device-specific information used when initiating a transfer or other sensitive operation. Contains details about the device and network, such as device ID, make, model, operating system, and IP addresses. Used for device identification, risk assessment, auditing, and fraud prevention.
        - `deviceId` string, nullable — The unique identifier assigned to the device (e.g., device UUID or hardware ID). Used to uniquely identify the device making the request.
        - `deviceMake` string, nullable — The make or manufacturer of the device (e.g., "Apple", "Samsung", "Dell").
        - `deviceVersion` string, nullable — The model or version of the device (e.g., "iPhone 14", "Galaxy S22", "Latitude 7420").
        - `deviceOS` string, nullable — The operating system running on the device (e.g., "iOS", "Android", "Windows").
        - `deviceOSVersion` string, nullable — The version of the operating system running on the device (e.g., "16.4", "13", "11 Pro").
        - `ipAddress` string, nullable — The IP address of the device as detected by the application or device itself. Used for geolocation, risk analysis, and fraud prevention.
        - `customerIP` string, nullable — The customer’s public IP address as seen by the server or network edge. May be used for additional risk analysis or logging.
    - `targetTransferEndpoint` MrdcTargetEndpoint — Represents the target endpoint for a Mobile Remote Deposit Capture (MRDC) transfer. Specifies the account where the check funds will be deposited after a successful MRDC transaction.
      - `accountIdentifier` string, nullable — The unique identifier of the account that will receive the deposited check funds. This should reference a valid Green Dot account eligible for MRDC deposits.

## Response `201`

Created

- CreateMrdcTransferResponse — Represents the response returned after successfully creating a Mobile Remote Deposit Capture (MRDC) transfer. Contains details about the submitted check deposit, including transfer status, identifiers, account information, check deposit details, and any associated fraud data.
  - `transfer` MrdcTransfer — Represents the details of a Mobile Remote Deposit Capture (MRDC) transfer. Contains information about the submitted check deposit, including account and transfer identifiers, transfer status, check deposit details, and the submission timestamp.
    - `accountIdentifier` string, nullable — The unique identifier of the account to which the check deposit is being made.
    - `transferIdentifier` string, nullable — The unique identifier assigned to the MRDC transfer. Used for tracking and idempotency.
    - `transferStatus` string, nullable — The current status of the MRDC transfer (e.g., "pending", "completed", "failed"). Indicates the processing state of the check deposit.
    - `checkDeposit` CheckDepositInfo — Represents detailed information about a check deposit submitted via Mobile Remote Deposit Capture (MRDC). Contains status, amount, key dates, and review or return information for the check deposit process.
      - `checkDepositStatus` string, nullable — The current status of the check deposit (e.g., "pending", "completed", "returned", "canceled"). Indicates the overall processing state of the check deposit.
      - `checkDepositSubStatus` string, nullable — A more granular sub-status for the check deposit, providing additional detail about the current state or any issues.
      - `transactionAmount` number, double — The amount of the check that was deposited, in the currency specified by the parent request (e.g., "USD").
      - `checkSubmitDate` string, nullable — The date and time when the check was submitted for deposit, formatted as an ISO 8601 string (e.g., "2024-07-01T17:00:00Z").
      - `fundsAvailableDate` string, nullable — The date and time when the deposited funds are expected to become available, formatted as an ISO 8601 string.
      - `depositDate` string, nullable — The date and time when the check was actually deposited into the account, formatted as an ISO 8601 string.
      - `lastChangedDateTime` string, date-time, nullable — The date and time when the check deposit status was last updated, formatted as an ISO 8601 string.
      - `checkReturnedDate` string, nullable — The date and time when the check was returned, if applicable, formatted as an ISO 8601 string.
      - `checkCanceledDate` string, nullable — The date and time when the check deposit was canceled, if applicable, formatted as an ISO 8601 string.
      - `checkDeclinedDate` string, nullable — The date and time when the check deposit was declined, if applicable, formatted as an ISO 8601 string.
      - `rejectReason` string, nullable — The reason for rejection if the check deposit was declined or returned (e.g., "insufficient funds", "duplicate check").
      - `hasScheduleChanged` string, nullable — Indicates whether the funds availability schedule has changed ("true" or "false").
      - `isManualReview` boolean, nullable — Indicates whether the check deposit is under manual review (true if a manual review is required).
      - `isInstantFund` boolean, nullable — Indicates whether the check deposit was processed as an instant fund (true if funds were made available instantly).
    - `submissionDateTime` string, nullable — The date and time when the check deposit was submitted, formatted as an ISO 8601 string (e.g., "2024-07-01T17:00:00Z").
  - `fraudData` object, nullable — Optional. A dictionary of key/value pairs containing fraud detection data associated with the MRDC transaction. This data may be returned if fraud checks were performed during the check deposit process.
  - `responseDetails` ResponseDetail[], nullable — Required: A list of response details providing status codes, descriptions, and additional information about the result of the operation.
    - `code` integer — The primary status or error code for the response (e.g., 200 for success, 400 for validation error).
    - `subCode` integer, nullable — An optional subcode providing more granular detail about the response or error.
    - `description` string, nullable — A human-readable description of the response, error, or status.
    - `url` string, nullable — A URL linking to documentation or a web page with more information about the response code.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `500` — Internal Server Error
- `503` — Service Unavailable

---

[API](https://skmtc.net/greendot/apis/baas-apis.md) · [All operations](https://skmtc.net/greendot/apis/baas-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/greendot/baas-apis/revisions/666553766b78/schema)
