Skip to content

Port QuickPay daily spend limit from Android #670

Description

@ovitrif

Summary

Port the QuickPay daily spend limit behavior from Android bitkit-android#1159 to iOS.

Android deliberately keeps QuickPay PIN-free under limits (that is the point of QuickPay) and bounds auto-pay with a configurable daily spend multiplier instead of hard-skipping QuickPay whenever PIN-for-payments is on.

Related: iOS #668 currently skips QuickPay when PIN-for-payments is enabled. Align iOS with the Android product model when porting this.

Product behavior (match Android)

  • QuickPay stays confirmation-free and PIN-free while under:
    • per-tx threshold (quickPayAmount USD), and
    • daily cap: threshold × dailyLimitMultiplier USD
  • Daily multiplier steps: 1, 3, 5, 10, 50 (default 5)
  • Spend resets on the local calendar day
  • Record QuickPay USD spend on Success/Pending only (not Error)
  • Over the daily cap → Confirm (payment PIN only if that setting is on)
  • Keep existing lock/auth deferral behavior as already implemented on iOS
flowchart TD
  incoming[Payment request]
  locked{App unlocked?}
  qpOn{QuickPay on and amount at or under per-tx threshold?}
  daily{spentTodayUsd plus amountUsd at or under dailyCapUsd?}
  quickpay[QuickPay auto-pay no PIN]
  confirm[Confirm then payment PIN if enabled]
  queue[Defer until unlock]

  incoming --> locked
  locked -->|no| queue
  queue --> locked
  locked -->|yes| qpOn
  qpOn -->|no| confirm
  qpOn -->|yes| daily
  daily -->|yes| quickpay
  daily -->|no| confirm
Loading

UI

  • QuickPay settings: second step slider for the daily multiplier (50×)
  • Copy should show the resolved daily $ cap from threshold × multiplier

Reference

Acceptance

  • Settings expose daily multiplier with the same steps/default as Android
  • Under per-tx + daily cap, QuickPay runs without payment PIN
  • Over daily cap → Confirm; payment PIN honored if enabled
  • Spend is day-keyed and recorded only on QuickPay Success/Pending

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions