Checking access…

Skip to main content
Version: v2

Optum Wallet v0

Optum Wallet v0 introduces user-tagged HSA card payment methods for internal merchants. It displays an informational HSA balance banner when an authorized user's Optum Bank balance is available, and lets that user tag or untag a saved CARD payment method as their Optum Bank HSA card through UI Widget v3.

Get Started

For implementation guidance, see the UI Widget integration guide.

Key Benefits​

A customer opens their wallet at an internal merchant and sees their available Optum Bank HSA balance in an informational banner. They tap Add HSA Card CTA from the banner,the add payment method screen opens up with the "Optum Bank HSA" checkbox selected by default. They enter the card details and the card is saved as Optum Bank HSA card. The next time they pay, that card appears second in their wallet, right after their default payment method, with the Optum Bank HSA icon and label.

Without OW v0 HSA capabilitiesWith OW v0 HSA capabilities
Customers do not see their available Optum Bank HSA balance in the wallet experience.Eligible authorized users see an informational HSA balance banner.
Authorized users cannot apply an HSA designation through Widget v3 flows.Authorized users can apply an HSA designation through supported Widget v3 flows.
HSA usage is not identified in the merchant payout output.Applicable payments and refunds carry the captured HSA designation into the Individual Merchant Payout Report.

How It Works​

Standard Flow​

Tagging a Card via Add Payment Method​


Business Rules​

Pre-Conditions​

  • HSA balance banner and HSA tagging are two independent, product-level feature flags; either can be ON or OFF without affecting the other.
  • Merchant has CARD payment method type configured.
  • An HSID is available for the authorized user β€” the merchant provides it directly or obtains it from EIMP through an MCID exchange (HSID authentication itself is out of scope).
  • Session runs on UI Widget v3 for an authorized user β€” not a guest, not an agent.
  • Mode is PAYMENT_WITH_WALLET, WALLET, or PAYMENT_METHOD_SELECT for the banner; tagging additionally supports PAYMENT_METHOD_ENTRY.

Post-Conditions​

OutcomeBehaviour
βœ… Banner eligibility fully metBanner displays the highest-balance eligible Optum Bank HSA account; the value is not refreshed again in that session.
❌ Balance retrieval fails or balance is negative/unavailableBanner is not displayed; the payment-method experience is not blocked.
βœ… Wallet has no HSA-tagged card and banner is displayedAdd HSA Card CTA opens the existing Add Payment Method experience with Optum Bank HSA Card preselected.
βœ… User confirms a new HSA card while one is already taggedThe HSA tag moves to the newly selected card; the previously tagged card no longer displays as HSA.
βœ… Payment completes with a stored HSA-tagged cardExisting Stripe processing is used unchanged; the captured HSA value is stored for reporting.
❌ Merchant-exposed API submits an HSA tag changeSupported card fields are saved; the HSA designation change is ignored with no error or warning.

Constraints​

ConstraintDetail
Single designation per cardA card can be only one of default, MANUFACTURER_CARD, or HSA-tagged β€” never more than one.
Single HSA card per walletOnly one HSA-tagged card is allowed per wallet; tagging a new card automatically untags the prior one.
No balance refreshThe HSA balance is fetched once at session start and held for the session's duration β€” no retry or refresh.
No cross-session refreshA designation change made in one widget session is not reflected in another widget already open; a new session is required.
User-managed, not verifiedCCG persists the user's selection as-is and does not validate that the card is actually an HSA/FSA-eligible card.

Out of Scope​

  • External merchants.
  • Guest users and agents for HSA tagging and untagging.
  • Merchant-exposed API support for changing the HSA tag.
  • HSA-specific actions in UI Widget v2, including for authorized users.
  • HSID authentication implementation.

Unchanged Behavior​

  • Payment and refund transactions remain undistributed.
  • HSA-tagged card payments and refunds continue through the existing Stripe processing flow.
  • HSA card deletion remains available across UI Widget v2/v3 and merchant-exposed API v1/v2, regardless of the tagging flag state.

Payment Method Sorting​

Saved payment methods are returned in a consistent order from every payment-method search endpoint used by UI Widgets or merchant-exposed APIs:

PriorityPayment-method group
1Default payment method
2HSA-tagged card
3Remaining payment methods, sorted by most recent add/update activity (creation time when no update exists)

Widget v2 and merchant API v1 inherit this sorting because they share the customer service.

HSA Payment Method Tile Presentation​

ConditionExpected outcome
Nickname existsDisplay the nickname.
No nickname existsDisplay Optum Bank HSA (localized for English and Spanish).
HSA-tagged tile renders in Widget v3Use the approved HSA icon and preserve the masked card-number presentation.
Widget v2 displays the cardUse the existing v2 label and icon logic, unmodified.

Reporting​

ConditionExpected outcome
Payment completes successfully with a stored HSA-tagged cardStore the captured value in payment_metadata[hsaTagged] and include it in the Individual Merchant Payout Report.
Refund is processed against that paymentStore the original payment's captured value in refund_metadata[hsaTagged].
Pay & Save matches an existing HSA-tagged methodUse the saved method; preserve Default, MF, and hsaTagged settings; report the preserved HSA value.
HSA tagging flag is later disabledContinue reporting the previously captured HSA designation.

Reporting scope is limited to the Individual Merchant Payout Report for single and split payments and their refunds, initiated through merchant API v1/v2 or any Widget version. It does not apply to the Combined Payout Report, the Transaction-Level Fee Report, or disputes.

API and Webhook Exposure​

hsaTagged is exposed through existing paymentMethodDetails structures without changing request contracts:

AreaOperationsResponse field
Customer servicePATCH/GET /payment-methods/{id}, POST /payment-methods/search, GET/POST /customers/{customerId}/payment-method(s)[/search]paymentMethodDetails.hsaTagged (and card.hsaTagged where the legacy card object exists)
V1 paymentPOST/GET /payments, GET /payments/{paymentId}, PATCH .../capture|cancel|confirmdata.paymentMethod.paymentMethodDetails.hsaTagged
V2 paymentPOST/GET /v2/payments, GET /v2/payments/{paymentId}, PATCH .../capture|cancel|allocations/{id}/confirmdata.paymentAllocations[].paymentMethod.paymentMethodDetails.hsaTagged
V2 refundPOST /v2/refunds, GET /v2/refunds/{refundId}data.refundAllocations[].paymentAllocation.paymentMethod.paymentMethodDetails.hsaTagged

hsaTagged is not added to: POST/GET /refunds (v1), /customers/{customerId}/setup-payment-methods endpoints, or any payment/refund request payload.

Documentation and Localization​

  • OpenAPI specs, webhook docs, feature overview, and integration guides are updated to cover hsaTagged.
  • Reporting field definitions and the sample report file are updated to include the HSA Tagged column.
  • Banner and HSA tile text are localized in English and Spanish.

Scenarios​

βœ… Standard Scenarios
#ScenarioStarting conditionExpected outcome
1Eligible balance bannerBanner flag ON, CARD configured, HSID available, authorized Widget v3 session, valid non-negative balanceDisplay the informational banner using the highest eligible balance.
2Add first HSA cardEligible banner is displayed and wallet has no HSA-tagged cardShow CTA; open Add Payment Method with HSA preselected; hide CTA after save.
3Replace HSA designationWallet already contains an HSA-tagged cardShow the replacement warning and, after confirmation, move the designation to the newly selected card.
4Use stored HSA card for paymentSupported payment uses an HSA-tagged stored cardProcess through the existing flow and capture hsaTagged for reporting after successful completion.
5Balance retrieval failureEligibility is otherwise met but retrieval failsHide the banner and leave the payment-method experience unchanged.
6Unsupported API tag changeMerchant API submits an HSA tag changeIgnore the designation change, apply supported card updates, and return no HSA-specific warning.

Edge Cases​

The probability of these edge cases occurring in production is low. Most are inherent to session-scoped state rather than transient failures.

Edge Cases
#ScenarioOutcomeRecovery
1Parallel widgets open at onceEach widget keeps the HSA-tagging state loaded at session start.Start a new session to retrieve the updated state.
2Pay & Save matches a duplicate cardUse the existing saved method and preserve Default, MF, and hsaTagged settings.Regression testing verifies webhook and report propagation.
3HSA-tagged card deleted while tagging flag is OFFDeletion remains available.If the banner is eligible and the flag is later ON, CTA behavior follows the current wallet state.
4Multiple HSA accounts at Optum BankUse only the account with the highest balance.Balances are not aggregated.
5V1 refund responsehsaTagged is not exposed because paymentMethodDetails is absent on this response.No new response object is introduced.

:::


Notifications​

CCG includes hsaTagged in the applicable existing payment-method, payment, and refund webhook payloads β€” no new webhook events are introduced for this capability:

Webhook groupEvents carrying hsaTagged
Payment methodPAYMENT_METHOD_CREATED, PAYMENT_METHOD_UPDATED, PAYMENT_METHOD_DELETED, PAYMENT_METHOD_REPLACED
PaymentPAYMENT_SUCCEEDED, PAYMENT_FAILED, PAYMENT_AUTHORIZED, PAYMENT_CANCELED, PAYMENT_ACCEPTED, PAYMENT_PARTIALLY_SUCCEEDED
RefundREFUND_SUCCESS, REFUND_FAILED, REFUND_PENDING, REFUND_PARTIAL_SUCCESS
note

Dispute webhooks (DISPUTE_INITIATED, DISPUTE_FUNDS_WITHDRAWN, DISPUTE_WON, DISPUTE_CLOSED) do not carry hsaTagged β€” their payload only includes paymentMethodType.