Payment Providers¶
Payment providers allow users to settle debts directly through external payment apps like Revolut, Cash App, etc.
Overview¶
The system has two parts:
- Payment Providers (
/paymentProviders/<providerId>/) — a server-managed registry of supported payment services. Each provider defines how to construct a payment link, which platforms and regions it's available in, and how amounts should be formatted. - Payment Handles — user-specific handles stored on both
Member(paymentHandles) andUser(defaultPaymentHandles). These are key-value pairs where the key is the provider ID and the value is the user's handle for that provider (e.g.{ "revolut": "bezy" }).
Payment link construction¶
Each provider has a link template with placeholders:
{handle}— the member's handle for this provider{amount}— the debt amount, formatted according toamountFormat(minor= smallest currency unit like cents,decimal= standard decimal notation){currency}— the currency code{purpose}— the transaction purpose/note
Example: https://revolut.me/{handle}?amount={amount}¤cy={currency}¬e={purpose}
Provider configuration¶
| Field | Description |
|---|---|
name |
Display name |
icon |
URL to the provider's icon |
link |
Payment link template with placeholders |
handlePrefix |
Optional prefix shown before the handle (e.g. @) |
amountFormat |
minor (cents) or decimal |
platforms |
List of supported platforms (ios, android, web), or null for all |
currencies |
List of supported currency codes, or null for no limit |
regions |
List of supported region codes, or null for no limit |
androidPackageName |
Android package name for deep linking |
Default payment handles¶
Users can set defaultPaymentHandles on their User profile. When a new member is created for that user in a group, these defaults are copied to the member's paymentHandles.