How in-app payments work
Balances, transfers, refunds, what the customer sees, and what approval means before an app can charge.
In-app payments are transfers between AppHandle accounts. Real money enters the platform through top-ups; when someone pays your app, part of their prepaid balance moves to yours. Nothing leaves AppHandle at the moment of payment, and the amount is available to you as balance. A charge is instant because it moves balance between two AppHandle accounts. A payout — taking your balance out to you — is a separate request, handled on demand; see Getting your money out below.
One balance per account
Every AppHandle account has a single prepaid balance, shown in the Desk at the bottom of the sidebar, above your account name. Your app's users fund that balance the same way you do, by adding credits. Balances are held in US dollars.
When your app charges someone, their balance goes down by the amount and yours goes up by the same amount. A payment can briefly show as Pending rather than finished; when that happens the platform completes it within a day. A single payment never charges the buyer twice, and the money is never lost.
An app must be approved before it can charge
This is the rule that matters most. A new app cannot take payments. AppHandle must approve the app first, and until then every charge the app attempts is refused and no money moves.
What that means for you as the owner:
- You request approval from the Payments card on the app's page. A person reviews the request, so it is not instant.
- Do not ask for the payment screen, and do not tell your users they can pay, until the card shows Approved. The builder will not build a charging screen before then, and an early attempt is refused and charges nobody.
- If approval is revoked later, charges stop immediately.
Charge for something in your app walks through the same steps in order.
What a charge does
A charge has a fixed amount in US dollars, between $0.50 and $500, and an optional short description. The person paying must be signed in to your app with their AppHandle account. If their balance covers the amount, the transfer completes; if it does not, the charge fails and nothing moves.
A charge that is sent again — because it failed, or because the app asked for a retry — must carry the same reference as the first attempt. A new reference on a retry is a new charge, and the same purchase can be paid for twice. This matters most when a charge reports that it is being processed and asks to be tried again.
A person cannot pay an app they own. Self-payments are refused. Customers also cannot pay in a private app, because a private app only opens for you and the people you invite; taking payments from customers needs the app to be public, and new apps start private.
What the customer sees
- They must be signed in with their AppHandle account. Anonymous visitors cannot pay.
- If their balance is too low, the app can offer them a top-up without leaving it. Inside an app the top-up is by card, or by crypto; the bank-transfer option that appears in the Desk is not offered there. The smallest in-app top-up is $5, in $1 steps.
- The charge never asks them for card details: the amount comes out of their balance. A card is only involved if they choose to add credits.
- After paying, the charge appears in their own Recent activity — open the Credits dialog and select Activity. It shows as a payment for the amount, with the date. It does not show your app's name or what the charge was for.
- A refund arrives in the same list as a credit, labelled Refund reversed.
- There is no receipt or invoice for an in-app charge. Receipts are issued for top-ups only; see Invoices and receipts.
Refunds
Refunds are started by the app owner, apply to a settled payment, and return the full amount from your balance to the person's balance. Your balance has to cover the refund, or it does not go through, and partial refunds are not available.
There is no refund control in the Desk. A refund is only possible if the app itself was built with one, or by asking support.
Where the owner sees the money
- The Payments card on the app's page shows whether the app is approved.
- While the app is approved, the Monitoring & Telemetry card shows a payments section: Today's revenue, Lifetime revenue, Refunded, and Pending (marked in flight), followed by a list of Recent payments with the amount, description, status and how long ago.
- The totals count settled payments. A refunded payment is no longer part of Lifetime revenue; it is counted under Refunded instead, and the small count under a total includes payments that failed or were refunded.
- The list does not show who paid, and it does not show a payment reference. Nothing is emailed to you when a payment arrives; this card is where you see it.
- Today's total uses the platform's own day, which can differ from your local date.
- These figures are only shown while the app is approved. If approval is revoked, the payments section disappears from the card; the record itself is not lost and returns with approval.
Getting your money out
Money your app receives arrives in your balance as soon as the charge completes. That is the instant part: a transfer between two AppHandle balances.
Taking money out of AppHandle is a payout, and it is handled on request. There is no self-service payout button yet.
- Select your account at the bottom of the Desk sidebar, open Support, and choose Payout or withdrawal in What is this about?.
- Say how much you want to take out and where it should go. Support replies to the email on your account to confirm the method and the details.
- Support confirms the amount, the method, and any fee or minimum before anything is sent. Nothing is deducted until you agree.
- When the payout is sent, your balance goes down by that amount. Support emails you a confirmation with the amount and a reference.
A payout is not a refund. A refund returns a customer's payment to their balance; a payout takes your balance out to you. If you are not sure which one you need, ask support and describe what happened.
Where to go next
To build a paid feature, start with Charge for something in your app.