Accept payments with Tap to Pay on iPhone. Enter an amount, add an optional tip or note, and let your customer pay. No additional hardware needed. Your phone is your card reader.
TEAM PAYMENTS
Invite team members to accept payments into your Stripe account on their own devices. Share an access link without sharing your Stripe login. Team members can collect payments without access to your balances, payouts, or financial reports. Revoke their access whenever needed.
PAYMENT LINKS
Let customers pay remotely through a Stripe-hosted payment page. Show a QR code or send the link by email. The account owner can deactivate a reusable link at any time.
CUSTOMIZABLE TIPS
Choose three tip percentages, enter a custom tip amount, or hide the tip options. Payment amounts and tips are recorded separately for your records.
PAYMENT ALERTS
Receive notifications for successful and failed payments on the device that started the payment or created the Payment Link.
STRIPE READERS
Connect a supported Stripe Terminal reader via Bluetooth or the internet for payments with an external reader.
PAYMENT HISTORY
Review payments and their status in the app. See payments associated with your Payment Links and open payment details in the Stripe Dashboard.
SECURE PAYMENTS
Payments are securely processed by Stripe through your connected account. Stripe manages your balance and payouts. You retain control through your Stripe Dashboard.
SIMPLE PRICING
No monthly app fees or subscriptions. The app fee is 1% per successful payment, including any tip, with a minimum of $0.10 for USD payments. Stripe processing fees apply separately.
How-to Guide
Help
App Support
We help with the app, its settings, and the app fee. Stripe processes payments and holds your funds. Payouts are handled by Stripe through the embedded Payouts screen.
Stripe Support
Contact Stripe about account verification, payments, processing fees, balances, payouts, refunds, disputes, or account restrictions.
Getting Started
Where do I find each feature?
Use Terminal to enter an amount and accept a payment. In Settings, the second section contains Payments, Payouts and Payment Links for the account owner. Payments and Payouts open Stripe fullscreen; Payment Links opens your existing active links. Team members can open Payment Links here. Switching tabs keeps your checkout entries.
Do I need a Stripe account?
Tap Continue on the Welcome screen to connect an existing Stripe account or create a new one with Stripe. Stripe handles sign-in, verification and payment eligibility. Team members join through a Team Access link and do not need their own Stripe login.
I can’t find my Stripe account
This feature is available in Tap to Pay 1.06 and later. On the Welcome screen, tap “I can’t find my Stripe account”. Check that you’re signing in with the email address for that account. The guide explains how to check in Stripe whether another platform manages the account and what to do if you can’t revoke its access.
Which payment option should I choose?
Use the payment-method menu at the top of Terminal or Settings. Both show the same selection. Tap to Pay accepts contactless cards and mobile wallets on a supported iPhone. Stripe Reader uses a connected external reader. Card Payment opens Stripe's payment form. Payment Link creates a hosted page that customers can open on their own device.
Do I need an internet connection?
Yes. You need a connection to sign in, start payments, create links, load Stripe data and request refunds. A customer can pay through a link you have already shared while your app is closed. If the connection drops during a payment, check its status before trying to charge again.
Does the app store card numbers?
No. Stripe handles card entry and reader transactions. The app does not store full card numbers or card security codes. Stripe’s payment details can show the card brand and last four digits.
Payouts
When will I receive my first payout?
After a successful payment, the money appears in your Stripe account before it reaches your bank account. A payout is Stripe's transfer from your Stripe balance to your bank account.
Stripe typically schedules your first payout to arrive within 7–14 days after your first successful live payment. Timing depends on your country, business, account requirements, and bank. Later payouts follow your Stripe account's schedule and the time it takes each payment to settle. The app does not hold your funds; Stripe processes payouts.
As the account owner, open Settings > Payouts to view your balance, payout history and schedule, manage your bank account and request a standard payout. Stripe may ask you to sign in. Manual payouts require a manual payout schedule, available funds and an eligible, verified account. This screen covers your entire connected Stripe account, including activity outside this app.
Disputes
What do dispute statuses mean?
A dispute occurs when a customer challenges a payment through their bank. It is separate from the original payment status: a successful payment can later be disputed. As the account owner, open Settings > Payments and select the payment to review the case, its deadline and the actions available in Stripe. The explanations below describe the stages; Stripe supplies the displayed labels.
Dispute: Response Required: A formal dispute needs your response.
Dispute Under Review: Submitted evidence is being reviewed.
Dispute Won: The case was decided in the merchant's favor.
Dispute Lost: The case was decided in the customer's favor.
Inquiry: Response Required: The issuer is requesting information before a formal dispute.
Inquiry Under Review: Your inquiry response is being reviewed.
Inquiry Closed: The inquiry closed without becoming a formal dispute.
Dispute Prevented: The case was prevented from becoming a formal chargeback.
Payments and Stripe
Who processes my payments?
The app lets you accept payments using your connected Stripe account, including payments through Payment Links. Stripe processes payments and manages your Stripe balance, payouts, refunds, and disputes. The app does not hold your funds or decide whether a payment is approved.
Open Settings > Payments for payment details and Settings > Payouts for your Stripe balance and bank payouts. For a problem with the app itself, contact App Support above.
What if I close the app during a payment?
Allow notifications when prompted to receive success and failure alerts on the device that started the payment or created the Payment Link. While the app is open, these notifications show no banner and play no sound. Merchants can tap a notification to open Stripe’s payment list through Settings > Payments; team members can ask the merchant to check the payment. Notifications can be delayed or unavailable, so use Settings > Payments or the Stripe Dashboard to confirm the outcome. A cancellation alone does not trigger a payment notification.
What if a payment's status is unknown?
A timeout or lost connection does not prove that a payment failed. The app shows that the status is unknown and asks you to check Payments. Starting with Tap to Pay 1.07, closing the status screen keeps your checkout entries. The app does not automatically retry the charge. Before starting another payment, the merchant should check Settings > Payments or the Stripe Dashboard. Team members should ask the merchant to check.
Where can I find my payments?
As the account owner, open Settings > Payments. Stripe’s payment list opens fullscreen for your connected account, including payments created outside this app. Select a payment to review its details and the available refund, capture or dispute actions. Stripe controls the filters, statuses and actions in this view. Stripe may ask you to sign in.
Why does Stripe ask me to sign in again?
Connecting your account lets the app accept payments. Stripe can require its own authentication when you open Payments or Payouts to manage account information or funds. Follow the sign-in steps shown by Stripe. These account-wide views are available only to the account owner.
What do the payment statuses mean?
Stripe supplies the status labels in Settings > Payments. The main stages are:
A payment method is needed: No payment method is attached, or a failed attempt needs another method. The payment is not complete.
Confirmation is needed: The payment is waiting to be confirmed.
Customer action is needed: The customer must complete an additional step, such as card authentication.
Processing: Stripe is still processing the payment. It is not yet confirmed as successful.
Capture is needed: Funds are authorized but have not yet been captured.
Succeeded: The payment completed successfully.
Canceled: The payment was canceled and cannot be completed.
A failed or declined attempt is not a successful payment. A successful payment can later be partially or fully refunded, or disputed. Refunds and disputes have their own statuses.
If the app cannot confirm a result, check the payment in Settings > Payments before charging again.
Closing the Tap to Pay screen before the customer presents a card or mobile wallet does not charge them. If you close it after that and the result is unclear, have the account owner check Settings > Payments before trying again.
What are the payment limits?
For USD, the app accepts a total from $0.50 up to $50,000 per payment or Payment Link, including any tip. Limits for other currencies differ and are shown in the app.
Stripe or the card issuer can apply additional limits or decline a payment. The app's maximum is not a guarantee that a payment will be approved.
How do I stop using one device?
Use Log Out in Settings to remove this device's sign-in or team access, reset its app settings, and return to the Welcome screen. Logout happens locally and does not require an internet connection. It does not delete a Team Access entry or revoke its access link. Your other devices and team members stay connected, and your Stripe account and payment history remain in Stripe. To revoke a team member's access, the merchant must delete their entry in Team Access.
How do I delete my app account?
This feature is available in Tap to Pay 1.06 and later. As the account owner, open Settings, tap Delete Account, and confirm. You need an internet connection.
Deleting your app account removes your and your team’s access to the app on all devices.
We delete your app account data from our active database, including team access, settings and notification registrations. Your Stripe account, payments, invoices and payouts stay in Stripe.
To revoke the app’s Stripe access as well, open Installed Apps in your Stripe Dashboard. If Stripe doesn’t offer that option, contact app support.
Which currency does the app use?
The app uses the payment currency associated with your connected Stripe account's country, for example USD for a US account. This applies to payments started in the app and Payment Links created with it. The currency is not based on your iPhone's region and cannot be changed in Settings. For Tap to Pay on iPhone and external readers, the reader's Terminal Location must also be in the same country as the Stripe account.
Refunds
How do I make a full or partial refund?
As the account owner, open Settings > Payments, select the payment and use Stripe’s refund action. Choose the amount and confirm in Stripe. Refunds go to the original payment method.
Why is Refund unavailable?
Stripe determines whether a payment can be refunded and which actions are available. Open the payment in Settings > Payments to check its current status and remaining refundable amount.
Where can I see a refund's progress?
Open Settings > Payments and select the original payment to review its refunds in Stripe. A refund can take several business days to reach the customer’s original payment method.
What do refund statuses mean?
Succeeded: Stripe completed the refund; it can still take time to appear with the customer’s payment provider.
Pending: The refund has not completed yet.
Requires Action: Stripe needs an additional step to complete the refund. Review the instructions on the payment.
Failed: The refund could not be completed. Check Stripe’s explanation before trying again.
Canceled: The refund was canceled.
What if a refund cannot be confirmed?
Check the payment and its refunds in Settings > Payments before submitting another refund. An interrupted connection does not prove that Stripe failed to receive the request.
Are fees returned when I refund a payment?
The app fee is retained for both full and partial refunds, including refunds made through the Stripe Dashboard. Stripe's processing fees follow your separate agreement with Stripe. Refunding a payment does not return the app fee to your Stripe balance.
How do I share a receipt after a refund?
Open Settings > Payments and select the original payment to review Stripe’s receipt and refund information. The app does not create a separate refund PDF.
Payment Links
How do I create a Payment Link?
In Terminal, choose Payment Link. Enter the amount and the required Product or Service description, then confirm. Show the QR code or tap Send Payment Link to send the link by email. Your customer pays on Stripe’s page. Find existing links under Settings > Payment Links.
Which payment methods can customers use?
New Payment Links let Stripe automatically offer the payment methods enabled for this app on your connected Stripe account. The options shown to each customer depend on the payment amount, currency, location, device, and Stripe's eligibility rules. An enabled method may not be available for every payment.
Manage payment methods in your Stripe Dashboard. Where Stripe offers a choice of configurations, select the one associated with this app. Some methods require additional activation or approval.
Can a Payment Link be used more than once?
Payment Links can be paid any number of times while active. Deactivate a link in Settings > Payment Links when you no longer want to accept payments through it. Each completed checkout creates its own payment. Check it in Settings > Payments.
Where can I see a link's payments?
The merchant can open Settings > Payments to see payments made through links created with this app. Open a payment to see its available customer details and status. Use the Stripe Dashboard for a specific link's full payment history. Processing means Stripe is still confirming the payment; it is not yet a successful payment. The green checkmark means the link accepts new checkouts; it does not mean a customer has paid. Settings > Payment Links shows active links from all dates. Deactivated links are hidden. Pull down to refresh and use Load More to find older links.
Can I send a link again or deactivate it?
Open an active link in Settings > Payment Links to show its QR code or send it by email. The merchant can swipe left and choose Deactivate to stop new checkouts. Existing payments and checkouts already in progress are unaffected.
What customer details are collected?
Payment Links created with this app ask for the customer's full name and email at checkout. Stripe may require more details for the payment method. The link is not assigned to a customer selected in the app. Checkout contact details do not necessarily create a saved Stripe Customer, so they may be available in Stripe without appearing as a saved entry in the app’s Customers list.
Customers and Receipts
How do I add or select a customer?
Open Customers in Settings to add or edit Stripe customers. In Terminal, tap Customer to select or create one before checkout. If the customer has an email address, it’s filled in when you send a receipt. For payment links, enter the recipient’s email address manually.
Why are customer details missing from a payment?
Open Settings > Payments and select the payment to review the customer information available in Stripe. A saved Stripe Customer, receipt email and payment-method billing details are separate records; not every payment has a saved Customer attached.
What happens when I delete a customer?
Deleting a customer in Settings permanently deletes that customer from the connected Stripe account and immediately cancels any active subscriptions for them. It does not refund or remove existing payments. Both merchants and team members can manage customers, so check the confirmation carefully.
How do I share a receipt?
When a receipt is available, the customer can scan its QR code or you can tap Send Receipt to email the link. The account owner can review earlier payments in Settings > Payments.
How do I set a customer's language?
Open Settings > Customers and add or edit a customer. Choose Language and save. The preference is stored with the customer in Stripe. Default lets the account's default customer language apply when no preference is set.
The merchant sets the default under Customer Language in Settings. New customers start with this language. Customers without a preference receive it when used for a payment; existing preferences are preserved.
Which language is used for receipts?
Declined-payment receipts and receipt emails use a supported customer language first, then a supported default Customer Language, then the app language.
English, German, Spanish, French and Italian are supported, including regional variants. Missing or unsupported languages use the next supported choice without overwriting a saved customer preference.
Stripe controls the language of the receipt and checkout pages it hosts.
Does selecting a customer send a receipt email?
Selecting a customer fills in their saved email address, if available. Tap Send Receipt to send the link from the app. Stripe may also send automatic emails according to the merchant’s Stripe email settings.
Does the app create invoices or tax reports?
The app shares payment receipts and Payment Links. Enter the final payment amount, including any applicable tax. The app does not calculate tax or create invoices or tax reports. Payment activity can be exported from the Stripe Dashboard.
Fees and Tips
What fees will I pay?
For new merchants, the app fee is 1% of each successful payment initiated through this app, including any tip, with a minimum of 10 minor units of the payment currency (for example, $0.10 for USD). It is deducted from your Stripe proceeds, not added to the amount your customer pays.
Stripe's processing fees apply separately under your agreement with Stripe.
There is no monthly app fee or subscription. Creating a Payment Link does not itself charge the app fee; the fee applies to successful payments through it.
How do I change or hide tips?
Use Show Tips in Settings to offer tips before Tap to Pay, Stripe Reader and Card Payment. Set three percentages between 1% and 100% under Tips. On the tip screen, choose a percentage, enter a Custom Amount or tap No Tip.
How do I export tips separately?
Each payment made with this app includes the fields base_amount and tip_amount in its Stripe payment metadata. The tip is part of the total charge; it is not a separate payout.
In the Stripe Dashboard, open Payments, choose Export, select the date range and CSV, then include all available columns. Look for columns containing base_amount and tip_amount. Stripe normally includes custom payment metadata in this export even when those fields are not listed as selectable columns.
These values use the currency's smallest unit: for USD, 580 means $5.80. Use the currency column when interpreting them. The exported tip amount is a bookkeeping breakdown, not a tax calculation. For fees, refunds, and payout reconciliation, use Stripe's financial reports alongside the payment export.
Team Access
How do I invite a team member?
As the merchant, open Settings > Team Access. Tap Add or the plus button, enter a unique name and confirm. Tap Invite to show the QR code. The team member can scan it with their iPhone camera, or you can enter their email address and tap Send Invitation. On the iPhone they will use to accept payments, they open the link and tap Join Team. Each link can be activated on one app installation.
QR codes and in-app email for team invitations are available in Tap to Pay 1.07 and later. Earlier versions use Share Link.
What can team members do?
Team members can accept payments into the merchant's Stripe account, manage customers, create and view Payment Links, share active links, choose an existing Terminal Location and share receipts for their own payments. They cannot open account-wide Payments or Payouts, issue refunds, manage Team Access, create or change Terminal Locations, or deactivate links. Team Access does not provide a Stripe Dashboard login.
Who accepts Apple’s terms?
The account owner must accept Apple’s Tap to Pay on iPhone terms for the Stripe account. Team members cannot accept these terms. Once the owner has accepted them, team members can set up Tap to Pay on iPhone on their supported devices.
How do I remove a team member?
Open Team Access in Settings, swipe left on the entry, and choose Delete. This removes the entry and invalidates its active app session and access link. Existing payments remain in Stripe. To grant access again, add a new entry and share its new access link. Team members can find their access name at the bottom of Settings so you can identify the correct entry.
Can a team member move to another device?
In Team Access, swipe left on the team member’s entry and tap Delete. Add a new entry with the same name and tap Invite. The team member scans the new QR code or opens the emailed link on their new iPhone.
Deleting the entry revokes access on the old device. To use both devices, create a separate entry with a different name. Signing out on the old device does not make its link usable on another device.
Stripe Readers
How do I switch between Tap to Pay and a Stripe Reader?
Choose Tap to Pay or Stripe Reader from the payment-method menu at the top of Terminal or Settings. The new selection appears immediately, then the app disconnects the current reader before connecting the selected type. With any required Terminal Location already selected, the app tries to reconnect to a saved Stripe Reader. If no reader is saved, the reader sheet opens so you can choose the connection type and select a reader.
Choosing Card Payment or Payment Link keeps an existing reader connection. Both options remain available while a reader connects. Switching between Tap to Pay and Stripe Reader cancels the current connection attempt before connecting the selected type. The app remembers your last payment-method selection when you reopen it. If Stripe Reader was selected, the app tries to reconnect to the saved reader.
Where can I see the reader's battery level?
The connected reader's battery percentage appears in parentheses after Stripe Reader in the payment-method menu in Terminal and Settings. The percentage is shown only when the reader reports a battery level.
Where can I see connection progress?
When Stripe reports setup or update progress for Tap to Pay or a Stripe Reader, a green bar grows from left to right directly below the line above the tabs. It appears in Terminal and Settings while the tab bar is visible.
Stripe does not report a percentage for every connection, so a connection can complete without a bar. A green dot beside Tap to Pay or Stripe Reader means it is connected.
The bar disappears when preparation completes or is canceled, or when you choose Card Payment or Payment Link. To cancel preparation, open the payment-method menu and choose Cancel when offered.
Why is Tap to Pay orange after setup?
Orange means Tap to Pay is not connected yet. If you close Apple's terms dialog without accepting, setup cannot finish.
As the account owner, choose Tap to Pay again in Terminal or Settings and complete the terms with a valid Apple Account. Follow any error message shown; the absence of a progress bar alone is not an error.
Can I change tabs while Tap to Pay prepares?
Yes. Tap to Pay preparation continues when you switch tabs, including Settings. You can also open Tap to Pay Guide in Settings while preparation continues. Wait until the selected reader is connected before taking a payment with it. Card Payment and Payment Link remain available while a reader connects. Logging out or changing the account, payment mode or reader configuration can require a new connection.
Why is Tap to Pay unavailable on my iPhone?
Tap to Pay requires a compatible iPhone, a supported iOS version and an eligible Stripe account in a supported country. Update the app and iOS, check your Stripe account requirements and complete setup. Tap to Pay is not supported on beta versions of iOS. If it is unavailable, use another payment option offered in checkout.
Which readers can I use?
The app connects to supported Stripe Terminal readers by Bluetooth or over the internet. US models include the Bluetooth Stripe Reader M2 and internet-connected BBPOS WisePOS E, Stripe Reader S700, and Stripe Reader S710. Reader availability and supported connection types vary by country and model.
Check Stripe's current availability for your country before buying a reader. Choose Stripe Reader from the payment-method menu in Terminal or Settings. If no reader is saved, choose the connection type and tap Find Readers in the reader sheet. To choose a different reader while disconnected, select Stripe Reader again. Internet-connected readers must first be registered to a Terminal Location in your Stripe Dashboard.
Do I need an external reader?
No. On a supported iPhone, Tap to Pay accepts contactless payments without a separate reader. You can also choose Card Payment or Payment Link from the payment-method menu in Terminal or Settings. To use an external Stripe reader, choose Stripe Reader in the same menu and follow the connection steps.
Do I need a Terminal Location?
Tap to Pay and Bluetooth readers need a Terminal Location in the same country as your Stripe account. Select one during onboarding or later in Settings > Terminal Locations. Swipe a location and choose Default; a checkmark identifies the selection. If no default exists, a newly created location becomes the default. The selection is saved per Stripe account and payment mode.
The merchant can create, edit or delete locations. Team members can select an existing one. If a location is missing or no longer valid, the connection attempt from the payment-method menu stops without opening location setup. Select a location in Settings > Terminal Locations, then choose Tap to Pay or Stripe Reader in Terminal or Settings to try again. Internet-connected readers use the location assigned to their hardware in Stripe.
You can skip the location step during onboarding. Card Payment and Payment Link do not require a Terminal Location.
If you take payments on the go, you can use your business address for the Terminal Location.
Legal Notice
Dr.-Ing. Stefan Hoppe
Merzstr. 7a
92224 Amberg
Germany
Phone: +49 151 50887777
Email: support@taptopayonphone.app
VAT ID: DE312238079
Terms of Use and End User License Agreement
1. Parties And Business Use
These Terms are an agreement between you and Dr.-Ing. Stefan Hoppe, Merzstr. 7a, 92224 Amberg, Germany (“we” or “us”), not Apple. We, not Apple, are responsible for the App and its content.
The App is intended for merchants and their authorized team members acting for business purposes. If you use the App for a business, you confirm that you are authorized to act for that business.
2. The App And Your Stripe Account
The App lets eligible merchants initiate payments through their own connected Stripe account. By connecting your account, you authorize us to carry out requests made through the App on that account, including payment initiation, customer and Terminal-location management, payment-link creation and deactivation, retrieval of account, payment and receipt information, and creation of restricted sessions for Stripe’s embedded components. The account owner can use these components for account-wide payment details and available refund, capture and dispute actions, and for balances, bank-account management, payout schedules and eligible standard payouts. These components can include activity created outside the App. You authorize us to share information needed for these features with Stripe and instruct Stripe to collect the App fee described below for payments initiated through the App. Authorized team members can use the features described in section 5.
Stripe provides payment processing, account verification, balances, payouts, refunds, and dispute handling under its separate agreements with you. We do not hold your payment funds. Stripe’s records govern payment status and settlement if information shown in the App differs from Stripe’s records.
3. Your Responsibilities
You are responsible for the amounts, currency, tips, descriptions and customer details you enter; your sales, taxes, customer disclosures, refunds, and disputes; and the actions of team members you authorize. Enter and share customer information only when you are entitled to do so. Check customer changes and deletion requests carefully: they affect the connected Stripe account, and deleting a customer does not erase historical payments.
Use the App only with an eligible Stripe account, on supported devices and in supported locations, and in compliance with applicable law and Stripe’s terms. If a payment result is unclear, check its status in Stripe before attempting the charge again or treating it as paid.
4. Payment Amount Limits And App Fee
The App limits the amount entered for each payment or payment link, including any tip. The current App limit for USD is US$50,000. The applicable limit for another currency depends on the selected currency and is shown in the App. Stripe may impose additional limits.
For each successful payment initiated through the App, including a payment made through a link created with the App, we charge an App fee of 1% of the total payment amount, including any tip, subject to a minimum of 10 minor units of the payment currency (for example, US$0.10 for a USD payment). Percentage fees are rounded to the nearest Stripe minor unit before applying the minimum. The App fee will never exceed the payment amount. Stripe deducts it from the merchant’s proceeds; it is not an additional amount charged to the customer. The 1% rate applies to newly connected merchants; existing merchants retain their agreed rate, as shown in the App.
Stripe’s processing and other applicable Stripe fees are separate. Existing merchants retain their agreed App fee. We will disclose any proposed change in advance and obtain the account owner's agreement before applying the new pricing.
The account owner can open Settings > Payments and use Stripe’s available refund actions for eligible payments. Stripe processes refunds to the original payment method, subject to its rules and availability. For payments initiated through the App, the App fee is retained when the payment is fully or partially refunded; Stripe processing fees are separate. A refund can remain pending, require action, fail or be canceled. Check its current status in Stripe. Any applicable statutory rights remain unaffected.
5. Team Access
The account owner can assign access names and share access links. Team members can accept payments, create and view payment links and share active links, create, view, edit and delete customers on the connected Stripe account, select existing Terminal locations, and retrieve receipts for payments belonging to their connection. They cannot manage Team Access or Terminal locations, deactivate payment links, or view account-wide Payments, balances or payouts through the App.
Each team entry has one active App session. An activated access link can be used again on the same installation. To move access to a different installation, the owner deletes the entry and creates a new one with a new link. Create a separate entry for each additional installation. Keep access links confidential. The owner can delete an entry in Team Access to invalidate its link and current session. Local logout by a team member does not revoke the entry or link. Revocation does not undo payments or customer changes already made.
6. Third-Party Services And Availability
Payment features depend on compatible devices, network access, account eligibility, and services supplied by Stripe and Apple. We do not guarantee that a particular payment will be authorized, completed, or settled, or that the App and third-party services will be available without interruption.
Stripe and Apple are responsible for their respective services and decisions. We are not responsible for failures or restrictions of those services unless and to the extent that our own breach of duty caused the loss. You must comply with the applicable terms of Stripe, Apple, and any other third-party service you use with the App.
Payment notifications are informational and depend on Stripe events, network access and Apple Push Notification service. They can be delayed or unavailable. A notification is not a guarantee of settlement or a substitute for checking Stripe, especially before retrying a payment with an unclear result. Notifications may show amounts and currency on the lock screen according to your device settings.
7. Privacy
Our Privacy Policy explains how we handle information used by the App:
https://taptopayonphone.app/privacy
8. License
We grant you a personal, non-transferable license to use the App on Apple-branded devices you own or control, as permitted by the Apple Media Services Terms and Conditions, including their Usage Rules and any applicable Family Sharing or volume-purchase provisions. You may not copy, modify, or redistribute the App except as permitted by law.
9. Support, Warranty, And Claims
We provide maintenance and support for the App. Apple has no obligation to provide maintenance or support.
We are responsible for any warranties that apply to the App under law. If the App fails to conform to an applicable warranty, you may notify Apple, and Apple will refund any purchase price you paid for the App. To the maximum extent permitted by law, Apple has no other warranty obligation for the App.
We, not Apple, are responsible for addressing claims concerning the App or your use of it, including product liability, legal or regulatory compliance, and consumer protection or privacy claims. If a third party claims that the App infringes its intellectual property rights, we, not Apple, are responsible for investigating, defending, settling, and resolving that claim.
10. Limitation Of Our Liability
Nothing in these Terms excludes or limits our liability for intentional misconduct, gross negligence, injury to life, body, or health, fraud, liability under mandatory product liability law, or any other liability that cannot lawfully be excluded or limited.
For ordinary negligence, we are liable for breach of a material contractual obligation only up to the loss that was typical and reasonably foreseeable when these Terms were agreed. A material obligation is one whose performance is necessary to provide the App as agreed and on which you may reasonably rely. To the extent permitted by applicable law, we are not liable for ordinary negligence in relation to other obligations.
To the extent permitted by applicable law, we are not liable for lost profits, lost business opportunities, or indirect or consequential losses, except where such loss is a typical and reasonably foreseeable result of our breach of a material contractual obligation. These limitations do not reduce any non-excludable statutory rights or remedies.
11. Logout And Removal Of Access
Log Out removes the sign-in from this device and resets its account and payment settings. It does not revoke the Stripe connection or a team access link, delete customers or payments, deactivate payment links, or sign out other devices. The service’s push registration may remain, so results for earlier payments or payment links may still arrive. You can disable notifications in iOS settings.
You can separately revoke the App’s access through Stripe. After our service receives and verifies Stripe’s deauthorization event and confirms that access has ended, it deletes the associated merchant and team-access records as described in the Privacy Policy. This does not close your Stripe account, reverse earlier payments, delete Stripe’s records or automatically deactivate existing payment links. Manage existing links and any refunds in Stripe.
12. Legal Compliance
You confirm that you are not located in a country subject to a U.S. Government embargo or designated by the U.S. Government as a “terrorist supporting” country, and that you are not on any U.S. Government list of prohibited or restricted parties.
13. Apple As Third-Party Beneficiary
Apple and its subsidiaries are third-party beneficiaries of these Terms and may enforce them against you upon your acceptance.
14. Payment Links, Receipts And Records
Creating or sharing a payment link does not mean that a payment has been made. Links created by the App have no limit on the number of completed checkouts and can accept repeated payments while active. Completing Checkout or seeing a link become inactive does not by itself confirm successful payment: some payment methods are confirmed later. Deactivation stops new checkouts but does not refund earlier payments or necessarily cancel checkouts already in progress. Check each payment separately in Stripe.
Successful-payment receipt links are supplied by Stripe. A decline receipt generated by the App records a declined attempt and is not proof of payment. You choose the recipient and service when sharing links, QR codes or receipts. The App does not issue invoices or calculate your tax obligations. Stripe supplies the records and any exports available in its embedded Payments component or Dashboard. Use Stripe’s records for reconciliation and retain the records your business requires.
15. Contact
Questions, complaints, or claims about the App:
Dr.-Ing. Stefan Hoppe
Merzstr. 7a
92224 Amberg
Germany
+49 151 50887777
support@taptopayonphone.app
Privacy Policy
Who is responsible
Dr.-Ing. Stefan Hoppe, Merzstr. 7a, 92224 Amberg, Germany. Email: support@taptopayonphone.app.
This policy covers the App, its supporting service, and this website. It explains the information we process when providing the App. Stripe and Apple also process information to provide their respective services; their own privacy policies explain that processing in detail.
Connecting a Stripe account
Stripe handles account sign-in and authorization through Stripe Connect with read and write access. Our service exchanges the authorization code with Stripe and issues an App session token. Cloudflare D1 stores the connected Stripe account ID, the App token hash and token-generation material, creation time and App fee terms. We do not store your Stripe password or Stripe OAuth access token in D1. Our service retrieves the connected account from Stripe to check access and return its ID, country and stored App fee terms to the App; it does not copy the full profile or identity documents into D1. Connect access nevertheless allows our platform to access information made available by Stripe. The App caches its fee terms locally, separately for each connected account and payment mode, and clears this cache on logout.
A random App installation identifier is used for sign-in, team access and payment-notification routing. It is not an advertising identifier. Sign-in state is valid for thirty minutes, and the installation-bound exchange code for five minutes. D1 stores the state and installation ID, and the exchange-code hash with the account and installation IDs. Used states are removed during the callback; expired records are cleared on new sign-in starts and by a scheduled daily cleanup. Expiry prevents use but does not mean immediate physical deletion.
Team Access
The account owner creates a staff access name. Team members can scan the invitation QR code on the owner’s device, or the owner can send the invitation by email. Earlier app versions can share the link through the device share sheet. Invitation links contain the access name and invitation token. For email delivery, our service passes the recipient address and invitation message to Cloudflare Email Service. D1 stores the access name, Stripe account ID, status, invitation hash and generation material, activation and creation dates, and the active installation ID, session ID and session-token hash. Access names can contain personal information.
Each staff entry has one active session. An activated link can be used again on the same installation. To move access to a different installation, the owner deletes the entry and creates a new one with a new link. Links have no time-based expiry in the current implementation. The owner can view access names, status and the active installation identifier and delete an entry to revoke access. Team members can create, view, edit and delete customers on the connected Stripe account, accept payments, create and view payment links, select existing Terminal locations, and retrieve receipts for their own connection. Account-wide Payments and Payouts, link deactivation and Terminal-location changes are restricted to the owner. Stripe supplies the available account-wide payment, payout and reporting views.
Customers and Terminal locations
The App lets the owner and team members manage customer names, email addresses, telephone numbers and postal addresses. Customer descriptions can also be returned from Stripe, and the service accepts a description when creating a customer. These details pass through our Cloudflare Worker to and from Stripe, where the customer record is stored on the connected account. We do not maintain a customer database in D1. A selected customer ID can be attached to a payment. Deleting a customer sends a deletion request to Stripe; it does not erase existing payment records or all information Stripe must retain.
Terminal-location names and postal addresses also pass through the Worker and are stored at Stripe. Owners can create, edit and delete locations. Team members can select existing locations; the service returns their identifier, name and country without the full address. Default location selections are saved on the device.
Payments and payment links
The App sends the total amount including any tip, currency, base amount, tip amount, optional note and customer ID, and request, connection and installation identifiers to our service. The Worker creates payments on the connected Stripe account. Stripe stores the payment, App fee, note as a description, and routing and base/tip metadata. A connection ID can link a payment to a team member, and the installation ID identifies the initiating App installation. Stripe SDKs handle card entry, reader transactions and Tap to Pay. Our server does not receive full card numbers or security codes.
For payment links, the service sends Stripe the amount, currency, optional description and routing metadata. Links created by the App have no limit on the number of completed checkouts and remain reusable while active. The description can appear as the payment description and product name on Stripe-hosted Checkout. Customers enter their details on Stripe’s page, where collection of their name and email is enabled. For payment links, you enter the recipient’s email address in the App. Stripe holds the link, Checkout and resulting payment records. Link URLs and locally generated QR codes can be shared with the recipient and service you choose.
The Worker processes requests and Stripe responses temporarily; D1 does not contain a separate customer or financial transaction history. It does hold the operational payment-notification records described below. Information stored at Stripe remains accessible to our platform through its Connect permissions. Stripe's own retention and processing are described in Stripe's Privacy Policy.
Payment history and receipts
The account owner can open Stripe’s embedded Payments and Payouts views in the App. Our service authenticates the App session and requests a short-lived Stripe AccountSession restricted to the connected account and the selected component. The App receives its client secret and Stripe publishable key to load the component. Our service does not store these AccountSession secrets in D1; JSON responses are marked not to be cached. Stripe handles the embedded account-wide information, authentication and management actions, including payment details, refunds, captures and disputes, or balances, payout history, payout schedules, external bank accounts and eligible standard payouts. These views can include activity created outside the App. The enabled actions remain subject to Stripe’s rules and account eligibility. Stripe processes the information you enter and any records or exports it makes available in these views under its own privacy policy. Team members cannot open these account-wide components.
Our service also retrieves payment-link details and receipts from Stripe for App features, including team members’ receipts for their own connection. Checkout-status checks and receipt responses can include amounts, currency, tips, descriptions, payment status and error details, customer information, card brand and last four digits, payment identifiers and receipt URLs. The App holds loaded data for display. D1 does not store a separate financial transaction history.
Stripe hosts successful-payment receipts. For confirmed declines, our service generates a receipt page when someone opens the encrypted link. The page can show the merchant, attempted amount, currency and date. People with the link can open it while the receipt remains available. Older app versions can generate and share a temporary decline PDF on the device.
If you send a payment link or receipt by email, our service gives Cloudflare Email Service the recipient address and the message containing the link. For receipts, a selected customer’s saved email address can be prefilled for you to review and change. D1 stores the merchant account, request and payload hashes, and timestamps to prevent duplicate sends. The table contains no plaintext recipient addresses or email bodies. Scheduled cleanup removes delivery records older than seven days.
Payment notifications
To localize payment notifications, newer App versions also send the App language and device formatting region. D1 stores this locale with the device registration; older registrations use English.
With notification permission, the App registers with Apple Push Notification service (APNs) and sends the device token and delivery environment to our service. D1 associates them with the installation, Stripe account and connection IDs and a registration timestamp. Stripe webhooks trigger separate success and failure notifications routed to the installation that initiated the payment or created the payment link. The Worker uses the payment's total amount, including any tip, and currency from Stripe.
Apple receives the APNs token and notification payload: result text including amount and currency, payment and event identifiers, event and payment creation times, installation ID and test/live mode. The payload also includes the amount in Stripe minor units and the currency code. It contains no customer name, email, full card details or payment note. Notifications can display the amount on the lock screen according to your iOS settings. Banners and sound are suppressed while the App is in the foreground.
D1 notification records contain payment, account, connection, installation and event identifiers, event type, timestamps and queue, delivery and claim state. They do not contain the amount or currency, customer contact details, card details or note. Cloudflare Queues holds payment and event IDs, notification type and test/live mode for delivery and retries. Pending notifications are eligible for delivery for twenty-four hours after the event; this delivery window is not a retention guarantee.
You can disable notifications in iOS settings. When the App next synchronizes registration with a valid signed-in session and network access, it attempts to remove the registration from our service. Local logout does not remove the server registration, so pending or later results for earlier payments or payment links may still arrive while that connection remains active.
Device storage and features
The App stores its session credential in the device Keychain using this-device-only protection after the first unlock. Updated App versions store the installation identifier and review-mode preference in local preferences alongside account ID and country, merchant/team role, team access name, reader and location selections, tip preferences and onboarding state. During an upgrade, the existing installation identifier is retained and older non-credential Keychain entries are removed after migration. The identifier survives logout; a fresh installation does not reuse an identifier or review preference left in the Keychain. Older App versions can keep those settings in the Keychain until updated. The current APNs token is held in App memory and registered with our service; it is not separately saved in App preferences.
The App does not retain unfinished form or checkout requests for automatic resubmission. It attempts to remove recovery records from earlier versions on startup. Historical service recovery records may remain until the merchant record is deleted; they contain request fingerprints, identifiers, processing state and timestamps, not full customer-form payloads or card details.
The App uses device and Stripe features for reader connections, Tap to Pay and card entry, including Bluetooth, the local network, location access and supported camera-based card scanning. Our service receives no Face ID biometric data or camera images. Authentication offered by iOS or a payment provider is handled by that provider. Stripe's payment components process payment information and product-interaction data for payment functionality and analytics. The Terminal SDK also declares approximate location data for payment functionality. Stripe uses device and payment information to provide and secure its services, including fraud prevention. Our Worker does not receive raw device-location coordinates. See Stripe's mobile SDK privacy details and Apple's Privacy Policy.
Website, diagnostics and support
The website and API run on Cloudflare Workers, with operational records in D1 and push jobs in Queues. Cloudflare processes connection and request information such as IP address, time, URL, browser or device information and security metadata. The service uses hashed session tokens for authenticated rate limiting and a hash derived from the IP address for anonymous team-invitation rate limiting. These are not anonymous when they can be linked to other records.
Worker observability logs and sampled traces are enabled in the service configuration. Explicit error logs include Stripe request IDs, error types or codes, error messages and, for unexpected failures, request method and path. Request URLs can contain OAuth codes, invitation tokens, access names or resource identifiers. The App also writes device diagnostic logs about authentication, readers and payment errors, sometimes including location IDs and error details. The App has no separate upload endpoint for those device logs; operating-system and SDK diagnostics are subject to their respective services.
We use operational information to deliver and secure the service and diagnose failures. Cloudflare log, trace, queue and backup retention is governed by the applicable service plan and configuration, separately from the database cleanup periods described below. Database cleanup does not guarantee immediate removal from logs or backups. See Cloudflare's Privacy Policy and Data Processing Addendum for its processing and transfer safeguards. These providers may process information outside your country, including outside the European Economic Area.
We set no website cookies of our own and load no advertising or website analytics scripts. Cloudflare security features may use necessary cookies where enabled. We do not use App or website data for advertising or cross-app tracking. If you contact support, we process your message and contact details to respond; the code does not define a fixed retention period for support correspondence.
Retention, logout and deletion
Scheduled cleanup targets D1 payment-notification rows older than seven days from row creation and device registrations older than ninety days from their last update. Invalid APNs tokens are also removed when Apple reports them as invalid. Cleanup depends on successful execution of the scheduled service; these are deletion thresholds, not guarantees about backups or exact deletion times.
Merchant and team records have no automatic age-based deletion in the code. Deleting a team entry removes that entry and its current connection's notification and device records. On a verified Stripe deauthorization webhook, the service checks that Stripe access is no longer available before deleting the merchant and cascading deletion to associated staff, exchange-code, device and notification records. This depends on successful webhook delivery and processing; it does not delete Stripe's payment or customer records, Apple records or already queued job identifiers.
Log Out removes the device's session credential, resets account and payment settings, clears displayed and pending notifications and the shared URL cache, and starts reader disconnection. It works locally without contacting Stripe to revoke access. It retains the installation identifier and some local lifecycle flags, and does not delete the merchant or staff entry, access link, server-side push registration, or Stripe history. Uninstalling the App likewise does not request server-side deletion. Contact us to request access, correction or deletion of information under our control; for customer and payment information managed by the merchant or independently held by Stripe or Apple, the relevant merchant or provider also handles those requests.
Legal basis and your rights
Where the GDPR applies, we process merchant connection, payment-request, customer-management and Team Access information to provide the service requested by the merchant (Article 6(1)(b) GDPR). We process operational security data and support correspondence for our legitimate interests in running and protecting the service and responding to enquiries (Article 6(1)(f) GDPR). Merchants determine which customer details they enter and how they use them for their business, and are responsible for the lawful basis and privacy information for their customers. Legal obligations may require additional retention or disclosure (Article 6(1)(c) GDPR).
Subject to applicable conditions, you may request access, correction, deletion, restriction, portability, or object to processing. You may complain to a data protection authority, including the Bavarian Data Protection Authority. Contact us at support@taptopayonphone.app. For data Stripe or Apple controls independently, use their privacy channels.