←back to thread

194 points strnisa | 2 comments | | HN request time: 0s | source

Hi HN,

I built Small Transfers, a payments platform for SaaS / API makers who want to bill customers per request instead of pushing them into subscriptions or pre-buy packages.

*Why?*

  - Many customers hate subscriptions and/or want to use a service occasionally.
  - Traditional payment processors add a fixed fee to every charge, making charges below 1 USD impractical.
  - Stripe UBB tracks usage, but you still need to write your own auth, add spending limits, and each merchant charges cards separately (extra fees for customers).
*How it works?*

  - Each merchant has a Small Transfers account linked to their Stripe account via Stripe Connect, which is used to transfer payouts to merchants.
  - Each customer has a Small Transfers account where we verify them using Google Sign-In, 3-D Secure, and Stripe Radar to minimise the chances of a customer not paying their balance.
  - Customers allow your service to identify and charge them via platform's own OAuth. This also removes the need for your service to implement its own auth. (Simple services don't even need their own database.)
  - Merchants call a simple REST API to authorize and capture a charge with a minimum amount of 0.000001 USD. Note that you can authorize more than you capture, allowing you to authorize the max amount your request might use, and then capture your actual cost plus margin (great for many use cases, e.g., AI).
  - The platform takes care of charging customers and sending payouts to merchants.
  - Merchants pay a flat 3% fee. Customers pay payment processing fees when they pay for their balance.
There's a Next.js Starter project (https://github.com/smalltransfers/nextjs-starter) and a live demo (https://nextjs-starter.smalltransfers.com/).

I've been dog-fooding the platform with my own service (https://unattach.com/) and would love your feedback, specifically:

  - The general approach and whether there is anything I should do differently.
  - Any concerns and how I could mitigate them.
  - Any other feedback.
I'm also looking for more merchants to try out the platform, and can help you with the integration.

Thank you for your time! Happy to answer questions here.

Show context
huem0n ◴[] No.45197623[source]
I've been wanting something like this for a long time. There's a lot of ways this could go wrong, but I hope it works.

I'd especially love a video platform using this model. I can't afford patreon for every YouTube channel, but I'd love to pay 10¢ per hour of video watched.

replies(3): >>45197821 #>>45208485 #>>45218855 #
strnisa ◴[] No.45197821[source]
Yes, Small Transfers can be used for pay-per-view or pay-per-minute billing models.

The platform's biggest risk that I see is a customer defaulting after using a merchant's service. The platform currently mitigates that with Stripe Radar, 3-D Secure, and spending caps, but I'm keen to hear anything specific you're thinking about.

replies(2): >>45207954 #>>45231727 #
cedws ◴[] No.45207954[source]
I don’t know if it defeats the purpose but you could require an upfront, refundable deposit.
replies(1): >>45208906 #
strnisa ◴[] No.45208906{3}[source]
Requiring money upfront would classify the platform as an e-money institution, which is highly problematic from the legal perspective.
replies(2): >>45211283 #>>45220236 #
namibj ◴[] No.45220236{4}[source]
> Requiring money upfront would classify the platform as an e-money institution, which is highly problematic from the legal perspective.

What if you just reserve it on the card?

replies(1): >>45220352 #
strnisa ◴[] No.45220352{5}[source]
Online card holds typically expire in ~7 days (often sooner, depending on the issuer), which is too short for our use case.
replies(1): >>45233304 #
1. namibj ◴[] No.45233304{6}[source]
I thought 30 days are an option at least when you can explain the reason/necessity to stripe?

Could be an option to funnel default-risky (as distinct from chargeback-risky!) customers to a customer-selectable hold amount rolling the per-transaction flat fee into basically a per-bill flat fee thus indirectly giving volume/commitment discounts to those that select 30-day intervals with large holds?

I guess ideally offer an option to force a billing (transaction finalization) to release the hold if a customer changes their mind (or just happened to use a debit card)...

Though even with 7 day holds it'd allow you to offer service to poor people (which mostly overlaps "people with bad credit") without the APIs having to maintain revenue margins large enough to just eat that default risk, and without having to hold onto any funds yourself.

replies(1): >>45233594 #
2. strnisa ◴[] No.45233594[source]
Authorization hold periods are set by the card networks/issuers and by merchant category, not Stripe.

Even if longer holds were possible, using authorization holds as a prepayment proxy can raise regulatory/consumer-protection issues similar to holding customer funds.