Skip to content

Payment Processing - Product Requirements Document

Version: 2.0 | Status: Business Review | Date: 2026-01-15 Previous Version: 1.0 (Technical Draft) | Author: Product Team


Change Log

VersionDateChanges
2.02026-01-15Converted to business-focused format; added measurable outcomes and success metrics; consolidated 105 technical requirements to 18 business requirements
1.02026-01-09Initial technical draft

1. Executive Summary

1.1 Purpose

Enable rental companies to accept online payments, manage deposits, process refunds, and generate invoices through Stripe integration—all while maintaining PCI compliance and complete financial separation between companies.

1.2 Business Value

Value AreaMeasurable OutcomeTimeframe
Revenue CollectionIncrease online payment adoption from 0% to 70%+ of total transactionsWithin 6 months
Faster PaymentsReduce average collection time from 7+ days (bank transfer) to <24 hoursWithin 3 months
Reduced Manual WorkEliminate 90% of manual payment reconciliation through automated webhook updatesWithin 3 months
Payment SecurityMaintain zero PCI compliance violations or card data breachesOngoing
Platform RevenueGenerate $25K+/month in application fees from connected account transactionsWithin 12 months
Deposit EfficiencyReduce deposit return processing from 5-7 days to same-day releaseWithin 3 months
Invoice AccuracyAchieve 100% invoice numbering accuracy with zero duplicates or gapsImmediate

1.3 Target Users

User TypeBusiness Context
Company AdminsConfigure payment processing, manage Stripe integration, process refunds
Rental StaffCreate payment requests, record offline payments, generate invoices
CustomersPay via shareable payment links, view payment status
PartnersTrack payments and revenue for marketplace vehicle rentals

1.4 Scope

Included:

  • Stripe Connect integration for independent payment processing per company
  • Payment link generation for remote customer payments
  • Deposit pre-authorization with manual capture/release
  • Full and partial refund processing
  • Invoice generation with sequential numbering
  • Manual offline payment recording (cash, bank transfer)
  • Real-time payment status via webhook automation
  • Platform application fee collection

Excluded:

  • Alternative payment processors (PayPal API, crypto API)
  • Invoice email delivery (see Communication System PRD)
  • PDF invoice rendering (see PDF Documents PRD)
  • Subscription billing for platform plans
  • Multi-currency conversion
  • Fraud detection and chargeback management

2. Success Metrics

MetricDefinitionBaselineTargetMeasurement Method
Online Payment Adoption% of orders paid via Stripe vs. offline methods0% (new)70% within 6 monthsPayment method analysis
Payment Collection SpeedAverage hours from invoice to payment received168 hrs (est. bank transfer)<24 hrsTimestamp analysis
Payment Success Rate% of payment attempts completing successfullyN/A (new)>95%Stripe dashboard
Refund Processing TimeHours from refund request to customer receipt5-7 days manualSame-day initiationRefund timestamp logs
Reconciliation Automation% of payments updated via webhooks vs. manual0%>95%Webhook vs. manual update ratio
Invoice Numbering AccuracyInvoices with correct sequential numberingN/A (new)100%Invoice audit
Application Fee RevenueMonthly platform fees from connected accounts$0$25K/month within 12 monthsStripe reports
PCI ComplianceData breach or compliance violation incidents00 (maintain)Security audits
Payment Support TicketsMonthly support tickets related to payment issuesN/A (new)<10/month per 100 tenantsHelp desk categorization
Deposit Capture Rate% of pre-authorized deposits successfully capturedN/A (new)>98%Capture success logs

3. User Stories

Company Admins (P0 - Critical)

IDStoryAcceptance Criteria
US-01As an admin, I want to connect my company’s Stripe account so payments go directly to my bankGiven I complete OAuth flow, when connection succeeds, then my Stripe account is active and test payments work within 1 hour
US-02As an admin, I want to process refunds so I can resolve customer issues promptlyGiven a completed payment, when I request full/partial refund, then customer receives funds within Stripe’s standard timeline (5-10 days)
US-03As an admin, I want my payment records isolated from other companies so financial data remains confidentialGiven I’m logged in, when I view payments, then only my company’s transactions are visible

Company Admins (P1 - Important)

IDStoryAcceptance Criteria
US-04As an admin, I want to see Stripe integration status so I know my payment system is operationalGiven Stripe is connected, when I view settings, then connection status, account ID, and enabled features are displayed
US-05As an admin, I want to disconnect Stripe if I change payment providersGiven I request disconnection, when confirmed, then integration is disabled and settings cleared within 1 minute

Rental Staff (P0 - Critical)

IDStoryAcceptance Criteria
US-06As an operator, I want to generate payment links so customers can pay remotelyGiven an order with amount, when I create payment link, then shareable URL is generated and can be sent to customer
US-07As an operator, I want to hold deposits without immediate charge so customers have funds reservedGiven deposit amount, when I create pre-authorization, then funds are held (not captured) and can be captured or released later
US-08As an operator, I want to see real-time payment status so I know when customers have paidGiven customer completes payment, when webhook is received, then order status updates within 30 seconds

Rental Staff (P1 - Important)

IDStoryAcceptance Criteria
US-09As an operator, I want to record cash/bank transfer payments so all transactions are trackedGiven offline payment received, when I record it manually, then payment appears in order history with method noted
US-10As an operator, I want to create invoices with proper numbering so documents are professionalGiven order details, when I create invoice, then sequential number is assigned with no gaps or duplicates in series
US-11As an operator, I want to charge saved cards for repeat customers so checkout is fasterGiven customer with saved card, when I create payment intent, then charge processes without customer re-entering details

Customers (P0 - Critical)

IDStoryAcceptance Criteria
US-12As a customer, I want to pay via a link without creating an account so payment is convenientGiven payment link URL, when I click and enter card, then payment processes and I see confirmation
US-13As a customer, I want to see my payment status so I know my reservation is confirmedGiven I’ve paid, when I view order details, then payment status shows “completed” and order shows “confirmed”

Customers (P1 - Important)

IDStoryAcceptance Criteria
US-14As a customer, I want my card saved for future rentals so I don’t re-enter detailsGiven I opt to save card, when I pay, then card is stored securely and available for future use
US-15As a customer, I want notification when deposits are refunded so I know funds are returningGiven deposit is released, when refund processes, then I receive notification

Partners (P1 - Important)

IDStoryAcceptance Criteria
US-16As a partner, I want to see payments for my marketplace vehicles so I can track revenueGiven my vehicle was rented, when payment completes, then I see payment details and profit calculation

4. Functional Requirements

IDRequirementPriorityBusiness Rationale
FR-01Companies connect their own Stripe accounts for independent payment processingP0Financial isolation, direct payouts to each business
FR-02Payment links are shareable URLs for remote customer paymentsP0Enables online payments without in-person card swipe
FR-03Pre-authorization holds funds without capture for up to 7 daysP0Enables damage deposits that can be released or captured
FR-04Instant payment captures funds immediately with application feeP0Standard payment flow for confirmed bookings
FR-05Full and partial refunds return funds to customersP0Resolves cancellations and customer disputes
FR-06Payment status updates automatically via Stripe webhooksP0Eliminates manual reconciliation, real-time accuracy
FR-07Manual payments (cash, bank transfer) can be recordedP0Tracks all revenue regardless of collection method
FR-08Invoices are created with sequential numbering per seriesP0Professional documents, audit compliance
FR-09Stripe customers are created to save payment methodsP1Enables repeat customer convenience
FR-10Order status updates to “confirmed” on successful paymentP1Automates confirmation workflow
FR-11Multiple payment methods supported per orderP1Flexibility for split payments, deposits + final payment
FR-12Vehicle-level profit/expense trackingP1Financial visibility per asset
FR-13Platform collects application fees on connected transactionsP1Platform revenue model
FR-14Payment variants configure order payment flowP1Business flexibility (no payment, pre-auth, instant)
FR-15Invoice series support multiple numbering formatsP2Supports different document types (invoice, proforma)
FR-16Card verification validates card without chargingP2Confirms card validity for no-payment reservations
FR-17Dispute events are tracked when chargebacks occurP2Visibility into payment disputes
FR-18Payment expiration dates limit payment link validityP2Controls payment window

5. Business Rules

IDRuleBusiness Rationale
BR-01Payment statuses follow lifecycle: pending → completed/pre_authorized → refunded/disputedAccurate financial reporting, audit trail
BR-02Pre-authorizations expire after 7 days if not capturedStripe limitation, prevents stale holds
BR-03Application fees only apply to automatic capture paymentsFair fee collection on completed transactions
BR-04Refunds cannot exceed original payment amountPrevents over-refunding errors
BR-05Invoice numbers are sequential within series, no gaps or duplicatesAudit compliance, professional standards
BR-06Payment links can be canceled if unpaid; completed payments are refundedDifferent workflows for different states
BR-07Currency is company-specific and consistent across order paymentsFinancial accuracy, no conversion complexity
BR-08Webhooks are processed idempotently to prevent duplicate updatesData integrity on network retries
BR-09Customer card data is never stored locally (Stripe only)PCI DSS compliance
BR-10Each company’s Stripe credentials are isolatedFinancial separation, regulatory compliance

6. Acceptance Criteria

AC-01: Stripe Account Connection

Given an admin with valid Stripe account
When OAuth connection completes
Then company can create payment links and intents
And test payment succeeds within 1 hour

Given an order with amount specified
When operator creates payment link
Then shareable URL is generated
And customer can complete payment without account creation

AC-03: Successful Payment Processing

Given customer completes payment link
When Stripe processes payment
Then payment status updates to “completed” within 30 seconds
And order status updates to “confirmed”

AC-04: Pre-Authorization Hold

Given deposit amount and manual capture selected
When payment is authorized
Then funds are held but not transferred
And operator can capture or release within 7 days

AC-05: Refund Processing

Given a completed payment
When admin requests full/partial refund
Then Stripe processes refund
And payment status reflects refund state

AC-06: Invoice Sequential Numbering

Given invoice series “INV-2024-” with last number 100
When new invoice is created
Then number is 101
And no gaps or duplicates exist in series

AC-07: Offline Payment Recording

Given cash payment received
When operator records manual payment
Then payment appears in order history
And payment method shows “cash”

AC-08: Saved Card Payment

Given customer with saved payment method
When operator charges saved card
Then payment processes without customer action
And confirmation is sent to customer

AC-09: Account Deauthorization

Given merchant deauthorizes app in Stripe dashboard
When webhook is received
Then integration is disabled within 5 minutes
And settings are cleared

AC-10: Data Isolation

Given user from Company A
When querying payment records
Then only Company A payments are visible
And Company B data returns “not found”


7. Dependencies

7.1 Depends On

DependencyRequirement
Multi-Tenant ArchitectureTenant isolation, company settings storage
AuthenticationUser identity for payment creator, role-based access
Customer ManagementCustomer data for Stripe customer creation
Order SystemOrder data, totals, status updates

7.2 Depended By

FeatureDependency
Communication SystemPayment confirmation emails, refund notifications
PDF DocumentsInvoice PDF generation
External IntegrationsMarketplace payment distribution

7.3 External Services

ServicePurposeImpact if Unavailable
Stripe APIAll payment processingPayments cannot be processed
Stripe WebhooksReal-time status updatesManual reconciliation required

8. Glossary

TermBusiness Definition
Payment LinkShareable URL where customers enter card details to pay
Pre-AuthorizationHolding funds on customer’s card without transferring (for deposits)
Instant PaymentImmediate fund capture and transfer
Application FeePlatform’s percentage of each transaction for revenue
Connected AccountRental company’s own Stripe account for receiving payments
Invoice SeriesNumbering format for invoices (e.g., “INV-2024-001”)
Payment VariantOrder setting determining payment flow (none, instant, deposit hold)
WebhookAutomatic notification from Stripe when payment events occur
ChargeCompleted money transfer that can be refunded
RefundReturn of funds to customer (full or partial)

9. Approval

RoleNameDateStatus
Product OwnerPending
Engineering LeadPending
Finance StakeholderPending

10. Unresolved Questions

  1. Application fee percentage? Current “defaultFee” value - confirm rate with finance
  2. Multi-currency timeline? When to support companies in different currencies?
  3. Chargeback handling? Process for disputed payments - manual or automated?
  4. Payment link expiry default? Standard expiration for unused payment links?
  5. Refund fee policy? Refund application fees by default or require opt-in?
  6. Alternative payment methods? PayPal/crypto integration priority and timeline?