---
title: "Create Single-Commit Transfer"
method: POST
path: "/programs/{programCode}/transfers/singlecommit"
tags: ["Transfers"]
---

# Create Single-Commit Transfer

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

Executes a single-commit funds transfer in one step, using encrypted transfer route details. Returns the created transfer details, including identifier, status, and related accounts.

## Path parameters

- `programCode` string, required

## Headers

- `X-GD-RequestId` string, required

## Request body

- SingleCommitTransferRequestEncrypted — Represents a single-commit transfer request with encrypted transfer route details. Inherits all properties from Gd.Bos.DataTransfer.Request.SingleCommitTransferRequest.
  - `transferRoute` TransferRouteSingleCommit — Represents the routing and endpoint details for a single-commit funds transfer operation. Contains the transaction amount and the source and target endpoints for the transfer. Used within !:SingleCommitTransferRequest to specify how and where funds should be moved in a single-step transfer.
    - `transactionAmount` number, double — The amount to be transferred in the transaction.
    - `sourceTransferEndpoint` TransferEndpointSingleCommit — Represents the endpoint details for a single-commit funds transfer operation. Contains endpoint type, identifier, currency, and optionally encrypted card, bank account, and user data. Used to specify the source or target endpoint for a single-step transfer, supporting secure transmission of sensitive payment and user information.
      - `transferEndPointType` string, nullable — The type of transfer endpoint (e.g., "card", "account", "external").
      - `identifier` string, nullable — The unique identifier for the endpoint (such as card number, account number, or external reference).
      - `currency` string, nullable — The currency code (e.g., "USD") for the transfer.
      - `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.
      - `encryptedUserData` 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.
    - `targetTransferEndpoint` TransferEndpointSingleCommit — Represents the endpoint details for a single-commit funds transfer operation. Contains endpoint type, identifier, currency, and optionally encrypted card, bank account, and user data. Used to specify the source or target endpoint for a single-step transfer, supporting secure transmission of sensitive payment and user information.
      - `transferEndPointType` string, nullable — The type of transfer endpoint (e.g., "card", "account", "external").
      - `identifier` string, nullable — The unique identifier for the endpoint (such as card number, account number, or external reference).
      - `currency` string, nullable — The currency code (e.g., "USD") for the transfer.
      - `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.
      - `encryptedUserData` 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.
  - `transferIdentifier` string, nullable — Required. The unique identifier for the transfer. Used for tracking, idempotency, and reference.
  - `transferType` string, nullable — Required. The type of transfer (e.g., "ACH", "A2A", "Wire").
  - `transferAuthorizationType` string, nullable — Required. The type of authorization for the transfer (e.g., "execute", "hold").
  - `initiator` string, nullable — Required. The identifier of the entity or user initiating the transfer.
  - `transferDescription` string, nullable — An optional description for the transfer, such as the purpose or reference for the transaction.
  - `partnerReferenceData` string, nullable — Optional. Partner-specific reference data for the transfer.

## Response `201`

Created

- TransferResponse — Represents the response returned after processing a funds transfer request. Contains details about the created transfer, including its identifier and status, as well as any associated accounts and fraud data.
  - `transfer` CreateTransfers — Represents the details of a funds transfer created via the API. Contains the unique transfer identifier and the current status of the transfer. Used in transfer-related responses to provide tracking and status information for the initiated transaction.
    - `transferIdentifier` string, nullable — The unique identifier assigned to the transfer. This value is used for tracking, idempotency, and reference in subsequent operations.
    - `transferStatus` string, nullable — The current status of the transfer (e.g., "pending", "completed", "failed"). Indicates the processing state of the transfer.
    - `transferType` string, nullable — The current type of the transfer (e.g., "purse", "peerTransfer", "sccFunding", "IFTLoad"). Indicates the processing type of the transfer.
  - `accounts` Account[], nullable — A list of accounts involved in the transfer, such as the source and target accounts. Each account object contains identifiers, product information, status, and other relevant data.
    - `accountIdentifier` string, nullable — The unique identifier assigned to the account. Used for all account-related operations and references.
    - `accountReferenceNumber` string, nullable — The reference number associated with the account, typically used for display or reporting purposes.
    - `partnerConsumerId` string, nullable — Gets or sets the identifier for the partner's consumer.
    - `productCode` string, nullable — The product code that identifies the type of account or product (e.g., card program, account type).
    - `productTierKey` integer — The tier key for the product, indicating the account's product tier or level.
    - `cipLevel` string, nullable — The Customer Identification Program (CIP) level for the account, indicating the level of identity verification completed.
    - `productMaterialType` string, nullable — The material type of the product (e.g., "plastic", "virtual").
    - `currency` string, nullable — The ISO 4217 currency code for the account (e.g., "USD").
    - `status` string, nullable — The current status of the account.
    - `instantIssue` boolean — Indicates whether the account was issued instantly.
    - `statusReasons` string[], nullable — A list of reasons for the current account status, if any.
    - `statusCure` string, nullable — The action or process required to cure the current account status, if applicable.
    - `accountStatusChangedDateTime` string, nullable — The date and time when the account status last changed.
    - `activationDate` string, nullable — The date and time when the account was activated.
    - `directDepositInformation` DirectDepositInformation — Represents the direct deposit information for an account. Contains the account number and routing number required to receive ACH direct deposits. Used to provide customers and partners with the necessary banking details for setting up direct deposit transactions.
      - `accountNumber` string, nullable — The account number used for receiving direct deposits via ACH.
      - `routingNumber` string, nullable — The routing number of the financial institution for ACH direct deposits.
    - `purses` Purse[], nullable — The list of purses (sub-accounts or balances) associated with the account, including primary and additional purses.
      - `purseIdentifier` string, nullable — The unique identifier for the purse.
      - `purseType` string, nullable — The type of purse (e.g., "Savings", "Spending", "Goal").
      - `purseDescription` string, nullable — A human-readable description of the purse.
      - `availableBalance` number, double — The available balance in the purse, representing funds that can be spent or withdrawn.
      - `ledgerBalance` number, double — The ledger balance in the purse, representing the total balance including pending transactions.
      - `availableBalanceAsOfDateTime` string, nullable — The date and time when the available balance was last updated.
      - `ledgerBalanceAsOfDateTime` string, nullable — The date and time when the ledger balance was last updated.
      - `isHidden` boolean — Indicates whether the purse is hidden from the user interface.
      - `status` string, nullable — The current status of the purse.
      - `goalAmount` number, double, nullable — The goal amount set for the purse, if applicable (e.g., for savings goals).
      - `goalDate` string, nullable — The target date for achieving the goal amount.
      - `iconName` string, nullable — The name of the icon associated with the purse for display purposes.
      - `createDate` string, date-time, nullable — The date and time when the purse was created.
      - `changeDate` string, date-time, nullable — The date and time when the purse was last changed or updated.
      - `purseNumber` string, nullable — The purse number, which may be used for display or reference purposes.
      - `interestRateTierIdentifier` string, nullable — The identifier for the interest rate tier applied to the purse, if applicable.
      - `interestRateTier` string, nullable — The name or description of the interest rate tier applied to the purse.
      - `interestYieldStartDate` string, nullable — The start date for interest yield calculation.
      - `interestYieldEndDate` string, nullable — The end date for interest yield calculation.
      - `APY` number, double, nullable — The annual percentage yield (APY) for the purse, if applicable.
      - `purseSubType` string, nullable — The subtype of the purse, providing additional categorization (e.g., "RoundUp", "EmergencyFund").
      - `interestRate` number, double, nullable — The interest rate applied to the purse, if applicable.
      - `isRoundUp` boolean — Indicates whether the purse is configured for round-up savings functionality.
    - `additionalPurses` Purse[], nullable — Additional purses associated with the account, if any.
      - `purseIdentifier` string, nullable — The unique identifier for the purse.
      - `purseType` string, nullable — The type of purse (e.g., "Savings", "Spending", "Goal").
      - `purseDescription` string, nullable — A human-readable description of the purse.
      - `availableBalance` number, double — The available balance in the purse, representing funds that can be spent or withdrawn.
      - `ledgerBalance` number, double — The ledger balance in the purse, representing the total balance including pending transactions.
      - `availableBalanceAsOfDateTime` string, nullable — The date and time when the available balance was last updated.
      - `ledgerBalanceAsOfDateTime` string, nullable — The date and time when the ledger balance was last updated.
      - `isHidden` boolean — Indicates whether the purse is hidden from the user interface.
      - `status` string, nullable — The current status of the purse.
      - `goalAmount` number, double, nullable — The goal amount set for the purse, if applicable (e.g., for savings goals).
      - `goalDate` string, nullable — The target date for achieving the goal amount.
      - `iconName` string, nullable — The name of the icon associated with the purse for display purposes.
      - `createDate` string, date-time, nullable — The date and time when the purse was created.
      - `changeDate` string, date-time, nullable — The date and time when the purse was last changed or updated.
      - `purseNumber` string, nullable — The purse number, which may be used for display or reference purposes.
      - `interestRateTierIdentifier` string, nullable — The identifier for the interest rate tier applied to the purse, if applicable.
      - `interestRateTier` string, nullable — The name or description of the interest rate tier applied to the purse.
      - `interestYieldStartDate` string, nullable — The start date for interest yield calculation.
      - `interestYieldEndDate` string, nullable — The end date for interest yield calculation.
      - `APY` number, double, nullable — The annual percentage yield (APY) for the purse, if applicable.
      - `purseSubType` string, nullable — The subtype of the purse, providing additional categorization (e.g., "RoundUp", "EmergencyFund").
      - `interestRate` number, double, nullable — The interest rate applied to the purse, if applicable.
      - `isRoundUp` boolean — Indicates whether the purse is configured for round-up savings functionality.
    - `accountHolders` AccountHolder[], nullable — The list of account holders associated with the account, including primary and secondary users.
      - `paymentInstruments` PaymentInstrument[], nullable — A list of payment instruments (e.g., cards, payment methods) associated with the account holder.
        - `encryptedPrivatePaymentInstrumentData` 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.
        - `privatePaymentInstrumentData` PrivateCardData — Represents sensitive card data associated with a payment instrument. Contains the primary account number (PAN), card verification value (CVV), and expiration details. Used to securely store and transmit card information for payment processing, typically in encrypted or restricted contexts.
          - `pan` string, nullable — The primary account number (PAN) of the card, typically a 16-digit number.
          - `cvv` string, nullable — Card Verification Value (CVV) of the card.
          - `expiration` Expiration — Container for expiration details
            - `month` string, nullable — Represents the expiration details for a payment instrument, such as a card.
            - `year` string, nullable — The year of expiration in four-digit format (e.g., "2027").
        - `paymentIdentifier` string, nullable — Unique identifier for the payment (may be used for transaction tracking).
        - `paymentInstrumentIdentifier` string, nullable — Base class for payment instrument details.
        - `paymentInstrumentType` string, nullable — The type of payment instrument (e.g., "card", "virtualCard").
        - `status` string, nullable — The current status of the payment instrument (e.g., "active", "inactive", "blocked").
        - `statusReasons` string[], nullable — The list of reasons for the current status of the payment instrument.
        - `isPinSet` boolean — Indicates whether the PIN has been set for this payment instrument.
        - `last4Pan` string, nullable — The last four digits of the payment instrument's PAN (Primary Account Number).
        - `activatedDateTime` string, nullable — The date and time when the payment instrument was activated, if applicable.
        - `cardPausedDateTime` string, nullable — The date and time when the payment instrument was paused, if applicable.
        - `issuedDateTime` string, nullable — The date and time when the payment instrument was issued.
        - `isOverIssuedDaysLimit` boolean, nullable — Indicates if the instrument is over the allowed days since issuance.
        - `isPrivateDataViewable` boolean — Indicates if private card data is viewable in the response.
        - `embossedName` string, nullable — The name embossed on the card, if applicable.
        - `customCardImageIdentifier` string, nullable — Identifier for a custom card image, if used.
        - `paymentInstrumentLevel` 'personalized' | 'nonpersonalized', nullable — The level of the payment instrument (e.g., personalized, nonpersonalized).
        - `productMaterialType` string, nullable — The product material type (e.g., "plastic", "virtual").
        - `cardIssueSource` string, nullable — The source of card issuance (e.g., "online", "branch").
        - `paymentIdentifierBin` string, nullable — The BIN (Bank Identification Number) associated with the payment instrument.
      - `user` User — Represents user profile information associated with an account holder. Contains personal details, identity information, account status, and KYC (Know Your Customer) state data. Used to provide a comprehensive view of the user's identity, preferences, and compliance status within the system.
        - `firstName` string, nullable — The user's first name.
        - `lastName` string, nullable — The user's last name.
        - `dobStatus` string, nullable — The status of the user's date of birth verification.
        - `last4Identity` string, nullable — The last four digits of the user's identity number.
        - `identityType` string, nullable — The type of identity document or number provided (e.g., "SSN", "Passport", "DriverLicense").
        - `userIdentifier` string, nullable — The unique identifier assigned to the user within the system.
        - `peerTransferAcceptPreference` string, nullable — The user's preference for accepting peer-to-peer transfers (e.g., "AutoAccept", "ManualAccept").
        - `status` string, nullable — The current status of the user (e.g., "Active", "Inactive", "Suspended").
        - `isPrimaryAccountHolder` boolean — Indicates whether the user is the primary account holder.
        - `kycStateData` KycStateData — Represents the Know Your Customer (KYC) state data for a user. Contains information about OFAC (Office of Foreign Assets Control) screening status, overall KYC status, and any pending KYC gates. Used to track regulatory compliance and the current state of user verification during onboarding or account management.
          - `ofacStatus` string, nullable — The OFAC (Office of Foreign Assets Control) screening status for the user. Typical values: "Passed", "Failed", "Pending", or other business-specific status indicators.
          - `kycStatus` string, nullable — The overall KYC (Know Your Customer) status for the user. Typical values: "Verified", "Pending", "Failed", or other business-specific status indicators.
          - `kycPendingGate` string, nullable — The name or code of any pending KYC gate or step that must be completed for full verification. Example: "DocumentVerification", "AddressCheck", or null if no gates are pending.
        - `partnerConsumerId` string, nullable — The partner consumer identifier associated with the user.
      - `accountHolderIdentifier` string, nullable — The unique identifier for the account holder.
    - `termsAcceptances` TermsAcceptance[], nullable — The list of terms and conditions acceptances for the account.
      - `termsIdentifier` string, nullable — The unique identifier for the terms and conditions that were presented to the user.
      - `termsAcceptanceDateTime` string, nullable — The date and time when the user accepted the terms, typically in ISO 8601 format (e.g., "2023-07-01T12:34:56Z").
      - `termsAcceptanceFlag` boolean, nullable — Indicates whether the user accepted the terms (true) or declined (false).
    - `fraudData` object, nullable — Optional. A dictionary of key/value pairs containing fraud detection data associated with the account.
    - `accountType` string, nullable — The type of account (e.g., "personal", "business", "joint").
    - `language` string, nullable — The preferred language for the account (e.g., "en", "es").
    - `accountCycleDay` integer, nullable — The account cycle day, if applicable (e.g., billing or statement cycle day).
    - `accountEligibility` AccountEligibility — Represents the eligibility status of a Green Dot account for specific actions or changes. Contains information about whether the account is eligible to update contact details such as address, email, or phone number.
      - `contactChangeEligibility` ContactChangeEligibility — Represents the eligibility of a Green Dot account to update specific contact information. Contains lists of eligible or ineligible contact types (address, email, phone) that can be changed, based on business rules, account status, or regulatory requirements.
        - `address` string[], nullable — A list of address types (e.g., "home", "mailing") that are eligible for update on the account. If the list is empty or missing, address changes may not be allowed.
        - `email` string[], nullable — A list of email types (e.g., "primary", "secondary") that are eligible for update on the account. If the list is empty or missing, email changes may not be allowed.
        - `phone` string[], nullable — A list of phone types (e.g., "mobile", "home", "work") that are eligible for update on the account. If the list is empty or missing, phone number changes may not be allowed.
    - `upgradeKycStateData` KycStateData — Represents the Know Your Customer (KYC) state data for a user. Contains information about OFAC (Office of Foreign Assets Control) screening status, overall KYC status, and any pending KYC gates. Used to track regulatory compliance and the current state of user verification during onboarding or account management.
      - `ofacStatus` string, nullable — The OFAC (Office of Foreign Assets Control) screening status for the user. Typical values: "Passed", "Failed", "Pending", or other business-specific status indicators.
      - `kycStatus` string, nullable — The overall KYC (Know Your Customer) status for the user. Typical values: "Verified", "Pending", "Failed", or other business-specific status indicators.
      - `kycPendingGate` string, nullable — The name or code of any pending KYC gate or step that must be completed for full verification. Example: "DocumentVerification", "AddressCheck", or null if no gates are pending.
    - `targetUserType` string, nullable — The type of user targeted by the account (e.g., "primary", "secondary", "authorized user").
    - `partnerAccountId` string, nullable — The partner-specific account identifier, if the account is linked to a partner system.
    - `productClass` string, nullable — The product class for the account, indicating the broader product grouping or classification.
    - `enrollmentSource` string, nullable — The source of enrollment for the account (e.g., "web", "mobile", "partner").
  - `fraudData` object, nullable — Optional. A dictionary of key/value pairs containing fraud detection data associated with the transfer. This data may be returned if fraud checks were performed during the transfer 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/versions/666553766b78/schema)
