Skip to content

feat: add allowances for automatic paykit payments #1352

Description

@ovitrif

Twin: synonymdev/bitkit-ios#806
Refs:

Problem or use case

A payer has to approve every Paykit request from a contact by hand, even small recurring ones they would always pay.

Proposed solution

Add allowances to Bitkit on top of the Paykit allowances SDK:

  • Subscriptions gets an Allowances tab:
    • an empty state
    • the list, with each allowance's status, per-payment limit and monthly limit
    • Add Allowance → contact → Set Allowance, with per-payment stops $1–$50 and monthly stops $10–$500
  • The proposal is sent over the contact's private Paykit link. The receiver gets a review sheet with Accept and Decline, and either side can end the allowance from its detail sheet.
  • A request covered by an accepted, active allowance is reserved in the SDK's allowance accounting, paid over Lightning and recorded. The payer gets a "Payment Executed" notification, and the Payments tab tags the row "Auto-paid".
  • These requests follow the ordinary Payment Request flow:
    • above the per-payment limit
    • over the monthly cap, where the payer also gets a "Limit Reached" notification
    • sent before the allowance was accepted
    • sent after the allowance ended
  • An automatic payment waits for a usable Lightning channel and for the payee's next private payment list instead of falling back to manual.
  • Paykit state written by the current rc55 SDK stays readable after an upgrade to this build and after a downgrade back.

Done when:

  • Under both limits, a request is paid with no prompt on the payer's phone.
  • Above the per-payment limit, the payer gets the normal Payment Request sheet.
  • Over the monthly cap, the request asks and the payer is notified.
  • After either side ends the allowance, every request asks again.
  • Killing the payer's app right after the payment is handed to the node never leads to a second payment after relaunch.

Alternatives considered

See the epic.

Additional context

  • The Paykit dependency in the refs above must be published first. Until then the implementation builds against a local build of it.
  • Design, Figma "Bitkit - Experimental New". The receiver's review sheet and the detail sheet have no frame yet:

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions