Venmo payment step with deep link and QR code #7

Closed
opened 2026-07-07 21:38:45 -06:00 by jhodgkin · 0 comments
Owner

Goal

Step 6 — after signing the contract, client is shown the booking fee and a Venmo link/QR code to complete payment.

Tasks

  • Display booking summary: date, session type, length, price
  • Generate Venmo deep link: https://venmo.com/<username>?txn=pay&amount=<price>&note=<encoded-note>
    • Note format: LisiLou Booking - [SessionType] on [Date]
    • Amount pulled from pricing config based on session length
  • Render QR code of the Venmo link using qrcode npm package (generated server-side as SVG, served at GET /api/bookings/:id/venmo-qr)
  • "Open Venmo" button for mobile users (opens the Venmo app via deep link)
  • "I've sent payment" button — marks booking payment_status = "pending_confirmation" and advances to confirmation screen
  • Venmo username stored in config/site.json under booking.venmoUsername

Note on payment confirmation

Venmo has no webhook API for personal accounts. The photographer confirms receipt manually and can update status via the admin page (issue #8). This is documented clearly in the UI: "Your session is reserved once we confirm receipt — usually within 24 hours."

Acceptance

  • Correct amount shown based on session length selection
  • QR code renders and Venmo link opens correctly
  • Clicking "I've sent payment" updates booking record and shows confirmation screen
## Goal Step 6 — after signing the contract, client is shown the booking fee and a Venmo link/QR code to complete payment. ## Tasks - Display booking summary: date, session type, length, price - Generate Venmo deep link: `https://venmo.com/<username>?txn=pay&amount=<price>&note=<encoded-note>` - Note format: `LisiLou Booking - [SessionType] on [Date]` - Amount pulled from `pricing` config based on session length - Render QR code of the Venmo link using `qrcode` npm package (generated server-side as SVG, served at `GET /api/bookings/:id/venmo-qr`) - "Open Venmo" button for mobile users (opens the Venmo app via deep link) - "I've sent payment" button — marks booking `payment_status = "pending_confirmation"` and advances to confirmation screen - Venmo username stored in `config/site.json` under `booking.venmoUsername` ## Note on payment confirmation Venmo has no webhook API for personal accounts. The photographer confirms receipt manually and can update status via the admin page (issue #8). This is documented clearly in the UI: "Your session is reserved once we confirm receipt — usually within 24 hours." ## Acceptance - Correct amount shown based on session length selection - QR code renders and Venmo link opens correctly - Clicking "I've sent payment" updates booking record and shows confirmation screen
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jhodgkin/lisilou-portfolio#7