Qashmere is an experimental Qt 6 desktop application for exploring and learning Stripe’s REST APIs and event model.
It was built as a developer tool to better understand how Stripe’s request/response APIs interact with asynchronous events, and to evaluate the ergonomics of Qt 6’s newer REST-related APIs in a real-world scenario.
⚠️ Status: Experimental / learning project Qashmere is not intended for production use.
Stripe’s API is more than a collection of REST endpoints. Many Stripe objects (such as Payment Intents) evolve over time and emit events when their state changes. Understanding how REST calls and events relate to each other is key to building correct integrations.
While tools like Postman and Bruno are excellent for crafting REST requests and workflows, they do not model Stripe’s object lifecycle or event-driven behavior particularly well.
Qashmere was created to:
- Explore Stripe’s REST APIs and object model
- Observe how REST requests and webhook events relate to each other
- Experiment with Qt 6’s REST APIs, networking, and concurrency primitives
- Build intuition by visualizing requests, responses, and events together
- Browse API collection
- Browse and edit parameters of REST endpoints
- Browse and edit query data for request
- Browse and edit POST data for request
- Browse and edit headers for request
- Browse events sent by Stripe
- Verify cryptographic signature of all Stripe events
- Display all output from
stripe listenprocess - Store and view all requests, responses and events in the session
- Stripe hierarchical parameters presented as tree
- UI indication of required parameters
- Configurable workflows
At a high level, Qashmere consists of:
- Qt Widgets UI for displaying REST APIs, building requests and displaying responses and events
- Qt REST APIs for making Stripe REST calls
- QHttpServer to receive webhook events relayed from the Stripe CLI
Stripe events are delivered via the Stripe CLI, which maintains a WebSocket connection to Stripe and forwards events to a local HTTP server. This avoids the need for a publicly reachable webhook endpoint.
Qashmere only works with Stripe sandbox (test mode) environments.
No real payments are processed, and no live Stripe credentials should be used. The application is intended purely as a learning and development aid.
- Learn Stripe’s REST and event model
- Experiment with Qt 6 REST APIs in practice
- Explore promise-like patterns using
QFuture - Build a developer-oriented exploratory tool
- Production readiness
- Complete Stripe API coverage
- Stable or polished UX
- Long-term API compatibility guarantees
This project accompanies a blog post describing the design decisions, experiments, and lessons learned while building Qashmere.
If you’re interested in the why as much as the how, the post provides much more context.



