Deep dives on software engineering, architecture, and the real-world decisions

This blog runs on software I wrote. Here's everything I learned doing it.

Find a time to chat with me

Latest posts

// Make sure it won't end up in production!!! const TODO = "remove before production";
TypeScript

Syncing In-Store Card Payments Into Timelish: PayPal, Square, Stripe, and the Payments Inbox

June 16, 2026

Timelish already handled online deposits: a client books, pays through PayPal/Square/Stripe on your booking page, and the payment lands on the appointment. That path is straightforward because we create the payment intent, we own the metadata, and we know exactly which appointment the money belongs to.

In-store is different. A client taps a card on your PayPal reader, Square Terminal, or Stripe reader at the front desk. That transaction lives in the processor's world first. Your booking calendar does not automatically know about it unless you build a bridge.

This post is about that bridge: how we ingest in-store card payments into a Payments Inbox, auto-match them to appointments, and let staff confirm or reassign. PayPal was the first integration and the hardest one: PayPal does not send webhooks for in-store reader charges, so we had to build polling on top of Transaction Search. Square and Stripe followed with a simpler webhook-only model.


The problem we were solving

blogposttimeli.shpaymentspaypalstripesquare

Adding Booking Deposits to a Multi-Tenant SaaS with PayPal, Square, and Stripe - Including Apple Pay

May 9, 2026

Timeli.sh lets service businesses collect deposits, full prepayments, and in-person payments at the time of booking. Adding that feature meant integrating three payment processors - PayPal, Square, and Stripe - behind a single abstraction so each organization could connect whichever processor they already use. I also needed Apple Pay to work through both PayPal and Square, which turned out to be the most involved part of the whole thing.

This post covers the architecture, the per-processor specifics, and a detailed breakdown of how Apple Pay was added to each one.


The architecture: a pluggable payment processor interface

Timeli.sh uses an app store model where every external integration - email, SMS, calendar, payments - is a connected app. Each app implements a typed interface, and the booking system talks to whatever payment app the organization has installed.

blogposttimeli.shpaypalsquarestripepaymentsapple pay

Contact me

Email

dmytro@bondarchuk.me
© 2026 Dmytro BondarchukCreated usingTimeli.sh