---
title: "Assess Transfer Prerequisites"
method: POST
path: "/programs/{programCode}/transfers/assessment"
tags: ["Transfers"]
---

# Assess Transfer Prerequisites

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

Assesses if the required prerequisites are met for various transfer types (P2P, ACH Out, IFT). Verifies user identity and returns any unmet requirements.

## Path parameters

- `programCode` string, required

## Headers

- `X-GD-RequestId` string, required

## Request body

- AssessTransferRequest — Represents a request to assess the eligibility, risk, and prerequisites for a funds transfer operation. This request is used to validate and pre-check a transfer before execution, including authorization type, transfer type, routing, and initiator details. It supports a variety of transfer types (ACH, internal, disbursement, MRDC, etc.) and is typically used for fraud/risk assessment, compliance, and business rule validation.
  - `transferAuthorizationType` 'Hold' | 'Execute' | 'Accept' | 'Cancel' | 'Reject' | 'System' | 'Reverse' — The type of authorization being requested for the transfer (e.g., Execute, Hold, Accept, Cancel, Reject, System, Reverse). Determines the intended action for the transfer assessment.
  - `transferIdentifier` string, nullable — The unique identifier for the transfer. Used for idempotency, tracking, and reference in assessment and subsequent operations.
  - `transferType` 'DisbursementIn' | 'DisbursementOut' | 'AchOut' | 'Purse' | 'SwipeReload' | 'Adjustment' | 'AchPull' | 'PeerPayment' | 'MrdcTransfer' | 'ECashLoad' | 'BillPay' | 'ECashSend' | 'EGiftPurchase' | 'IFTSend' | 'IFTLoad' | 'IFTOut' | 'SCCPayment' | 'SCCFunding' | 'CreditLineIncrease' | 'CreditLineDecrease' | 'SccOverCreditLimit' | 'SccWriteOffFullBalance' | 'SccWriteOffPartialBalance' | 'SccWriteOffNegativeBalance' | 'SccPaymentByAchPull' | 'CblPayment' | 'CblRefund' | 'SccWriteOffOverCreditLimit' | 'DisbursementInternal' | 'DisbursementExternal' | 'A2AOut' | 'PartnerA2A' | 'PartnerP2P' | 'PartnerA2AIn' | 'A2AIn' | 'GiftA2AIn' | 'AffiliateTransferOut' — The type of transfer being assessed (e.g., ACH Out, Internal Transfer, Disbursement, MRDC Transfer). Determines the business rules and validations applied during assessment.
  - `initiator` string, nullable — The identifier of the account or entity initiating the transfer. Typically references the source account or user responsible for the transfer.
  - `transferRoute` TransferRoute2 — Represents the routing and endpoint details for a funds transfer operation. Contains information about the transaction amount, description, fee handling, and the source and target endpoints. Used for transfers between accounts, cards, or external endpoints, supporting a variety of transfer types such as A2A, B2C, and partner-initiated transfers.
    - `transactionDescription` string, nullable — Optional. A description for the transaction, such as the purpose or reference for the transfer.
    - `transactionAmount` number, double — Required. The amount to transfer, in the currency specified by the endpoints (typically "USD").
    - `waiveFee` boolean, nullable — Optional. Flag to specify whether to waive all calculated fees for this transfer request. If true, no fees will be applied to the transaction.
    - `feeDefinitionOverride` FeeDefinitionOverride
      - `fixedFeeAmount` number, double, nullable — Optional: Amount used to override the fixed fee.
      - `percentageFeeAmount` number, double, nullable — Optional: Amount used to override the percentage amount.
      - `minFeeAmount` number, double, nullable — Optional: Amount used to override the minimum fee during fee calculations involving percentage amounts.
      - `maxFeeAmount` number, double, nullable — Optional: Amount used to override the maximum fee during fee calculations involving percentage amounts.
    - `sourceTransferEndpoint` TransferEndpoint
      - `transferEndPointType` string, nullable — Required: TransferEndpointType.
      - `identifier` string, nullable — Required: Unique identifier of the purse that the transfer is going to.
      - `currency` string, nullable — Optional: <ul><li>If a currency code is provided in the request payload, it must be a valid 3-character ISO code and be valid for the program for which the call is made.</li><li>Currency is optional and will default to USD if not provided.</li><li>Only USD is supported for all programs.</li></ul>
      - `encryptedCardData` 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.
      - `encryptedBankAccount` 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.
      - `check` Check — Represents a check image submission, including geolocation, image data, and device information. Contains latitude and longitude for where the check was captured, front and back images of the check, image format, and device metadata. Used in remote deposit capture, check processing, or fraud prevention workflows to provide all necessary data for check validation and risk assessment.
        - `latitude` number, double — The latitude coordinate where the check image was captured.
        - `longitude` number, double — The longitude coordinate where the check image was captured.
        - `frontImage` string, nullable — The base64-encoded image data of the front side of the check.
        - `backImage` string, nullable — The base64-encoded image data of the back side of the check.
        - `imageFormat` integer — The format of the check images (e.g., 1 = JPEG, 2 = PNG).
        - `deviceInfo` 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.
      - `handleData` HandleData — Represents user handle and display information for identity, lookup, or display purposes. Contains the user's unique handle, first name, last name, and username. Used to transfer or present user identity data in data transfer operations, APIs, or UI contexts.
        - `handle` string, nullable — The unique user handle, used for identification or lookup.
        - `firstName` string, nullable — The user's first name.
        - `lastName` string, nullable — The user's last name.
        - `userName` string, nullable — The user's username, which may be used for login or display purposes.
    - `targetTransferEndpoint` TransferEndpoint
      - `transferEndPointType` string, nullable — Required: TransferEndpointType.
      - `identifier` string, nullable — Required: Unique identifier of the purse that the transfer is going to.
      - `currency` string, nullable — Optional: <ul><li>If a currency code is provided in the request payload, it must be a valid 3-character ISO code and be valid for the program for which the call is made.</li><li>Currency is optional and will default to USD if not provided.</li><li>Only USD is supported for all programs.</li></ul>
      - `encryptedCardData` 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.
      - `encryptedBankAccount` 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.
      - `check` Check — Represents a check image submission, including geolocation, image data, and device information. Contains latitude and longitude for where the check was captured, front and back images of the check, image format, and device metadata. Used in remote deposit capture, check processing, or fraud prevention workflows to provide all necessary data for check validation and risk assessment.
        - `latitude` number, double — The latitude coordinate where the check image was captured.
        - `longitude` number, double — The longitude coordinate where the check image was captured.
        - `frontImage` string, nullable — The base64-encoded image data of the front side of the check.
        - `backImage` string, nullable — The base64-encoded image data of the back side of the check.
        - `imageFormat` integer — The format of the check images (e.g., 1 = JPEG, 2 = PNG).
        - `deviceInfo` 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.
      - `handleData` HandleData — Represents user handle and display information for identity, lookup, or display purposes. Contains the user's unique handle, first name, last name, and username. Used to transfer or present user identity data in data transfer operations, APIs, or UI contexts.
        - `handle` string, nullable — The unique user handle, used for identification or lookup.
        - `firstName` string, nullable — The user's first name.
        - `lastName` string, nullable — The user's last name.
        - `userName` string, nullable — The user's username, which may be used for login or display purposes.

## Response `200`

OK

- AssessTransferResponse — Represents the response returned after assessing a funds transfer request. Provides information about account holders, available balance, applicable limits, fees, prerequisites, and the net amount for the transfer. Used to determine eligibility, compliance, and cost before executing a transfer.
  - `accountHolders` AccountHolderAssess[], nullable — A list of account holders involved in the transfer assessment. Each entry includes identifiers and KYC (Know Your Customer) gate status for eligibility checks.
    - `accountIdentifier` string, nullable — The unique identifier of the account associated with the account holder being assessed for MRDC eligibility.
    - `userIdentifier` string, nullable — The unique identifier of the user (account holder) being assessed for MRDC eligibility.
    - `pendingkycGate` string, nullable — The current pending KYC (Know Your Customer) gate or status for the account holder. Indicates if there are any outstanding KYC requirements that must be satisfied before MRDC transactions can proceed.
  - `availableBalance` number, double, nullable — The available balance in the source account at the time of assessment. Used to determine if sufficient funds are present to complete the transfer.
  - `limits` Limit[], nullable — A list of limits applicable to the transfer, such as daily, monthly, or per-transaction limits. Each limit includes type, frequency, minimum/maximum amounts, and remaining allowance.
    - `type` string, nullable — The type of limit (e.g., "Transfer", "Withdrawal", "Deposit").
    - `frequency` string, nullable — The frequency at which the limit applies (e.g., "Daily", "Monthly", "PerTransaction").
    - `minimumAmount` number, double — The minimum amount allowed for the operation, in the relevant currency.
    - `maximumAmount` number, double — The maximum amount allowed for the operation, in the relevant currency.
    - `amountRemaining` number, double, nullable — The remaining amount available under this limit for the current period or context.
    - `initialTransferDateTime` string, date-time, nullable — The date and time when the initial transfer or operation was performed, if applicable.
    - `subsequentTransferAllowed` boolean, nullable — Indicates whether subsequent transfers or operations are allowed after the initial one.
    - `count` integer, nullable — The number of times the operation has been performed or the count of transactions within the limit period.
  - `fees` AssessTransferFee[], nullable — A list of fees that will be applied to the transfer, including type, frequency, and amount.
    - `type` string, nullable — The type of fee being assessed (e.g., "Transaction", "Service", "Recurring").
    - `frequency` string, nullable — The frequency at which the fee is applied (e.g., "OneTime", "Monthly", "PerTransfer").
    - `amount` number, double — The amount of the fee to be assessed, in the relevant currency.
  - `prerequisites` string[], nullable — A list of prerequisite conditions that must be met before the transfer can proceed. If any prerequisites are returned, the customer must fulfill them to be eligible for the transfer.
  - `netAmount` number, double — The net amount that will be transferred after deducting all applicable fees.
  - `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/versions/666553766b78/schema)
