---
title: "OFAC2 Cure Gate for Enrollment"
method: POST
path: "/programs/{programCode}/users/{userIdentifier}/ofacGates/ofac2"
tags: ["Ofac"]
---

# OFAC2 Cure Gate for Enrollment

`POST /programs/{programCode}/users/{userIdentifier}/ofacGates/ofac2`

Update Consumer Information and perform OFAC checks.

## Path parameters

- `programCode` string, required
- `userIdentifier` string, required

## Headers

- `X-GD-RequestId` string, required
- `X-GD-Source` string
- `X-Gd-Bos-IgnoreMFA` string
- `X-GD-EnrollmentRequestIdentifier` string

## Request body

- Ofac2EnrollmentRequestEncrypted — Represents a request to enroll a new account or user using encrypted user validating to OFAC requirements. Inherits all properties from Gd.Bos.DataTransfer.Request.Ofac2EnrollmentRequest.
  - `user` EncryptedUser — Container for encrypted user information, including the encrypted user data payload and a list of terms and conditions acceptances. Used for secure transmission and processing of sensitive user data.
    - `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.
  - `encryptedFraudData` 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.
  - `accountIdentifier` string, nullable — The unique identifier of the Account for OFAC verification. Used internally for correlation and tracking; not serialized in the request payload.
  - `enrollmentRequestIdentifier` string, nullable — The enrollmentRequestIdenifier related with the initial Request for the Enrollment. .

## Response `200`

OK

- Ofac2EnrollmentResponse — Represents the response returned when retrieving a user's account enrollment details. Contains the enrolled account information, including account status, holders, purses, direct deposit info, and Ofac2 validation. Inherits standard response metadata from Gd.Bos.DataTransfer.Response.ResponseBase.
  - `account` Enrollment — Represents the enrolled account details for a user. Contains account identifiers, status, holders, purses, direct deposit information, account cycle, and KYC state data. Used in enrollment and account retrieval APIs to provide a comprehensive view of the user's account, its status, and related entities.
    - `accountIdentifier` string, nullable — The unique identifier for the enrolled account.
    - `accountReferenceNumber` string, nullable — The reference number for the account, typically used for display or partner integration.
    - `status` string, nullable — The current status of the account (e.g., "Active", "Suspended", "Closed").
    - `accountStatusChangedDateTime` string, nullable — The date and time when the account status last changed, in ISO 8601 format.
    - `statusReasons` string[], nullable — A list of reasons for the current account status, providing additional context for status changes.
    - `statusCure` string, nullable — The action or condition required to cure or resolve the current account status, if applicable.
    - `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 — A list of purses (sub-accounts or balances) associated with the account, including balances and status.
      - `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 — A list of account holders associated with the account, including user and payment instrument details.
      - `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.
    - `accountCycleDay` integer, nullable — The account cycle day, indicating the day of the month when the account cycle resets (e.g., for statements or billing).
    - `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.
    - `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.
    - `partnerAccountId` string, nullable — The partner-specific account identifier, if the account is linked to a partner system.
  - `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)
