Payment Flows
How Money Moves Through Amply
Amply uses Stripe Connect to handle payment processing. This document explains how donations flow from donors to organizations.
Overview
Why Stripe Connect?
Stripe Connect enables multi-party payments:
- Donors pay through Amply
- Amply orchestrates but doesn't hold funds
- Organizations receive payouts directly
- Stripe handles compliance and security
Key Concepts
Connected Accounts: Each organization has a Stripe Connected Account linked to Amply.
Direct Charges: Donations go directly to organization accounts (not through Amply's account).
Platform Fees: Amply takes no platform fee—only Stripe's processing fees apply.
Donation Flow
Standard Donation
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Donor │────▶│ Amply │────▶│ Stripe │────▶│ Org │
│ │ │ (routes) │ │(processes)│ │(receives)│
└──────────┘ └──────────┘ └──────────┘ └──────────┘
│ │ │ │
│ 1. Initiate │ 2. Create │ 3. Process │ 4. Settle
│ donation │ payment │ payment │ funds
│ │ intent │ │
Step by Step
1. Donation Initiated
POST /api/donations
{
"amount": 5000,
"currency": "USD",
"organization_id": "org_xyz",
"payment_method": "pm_card_..."
}
2. Payment Intent Created Amply creates a Stripe PaymentIntent on the organization's connected account:
stripe.paymentIntents.create({
amount: 5000,
currency: 'usd',
payment_method: 'pm_card_...',
on_behalf_of: 'acct_org_xyz',
transfer_data: {
destination: 'acct_org_xyz'
}
});
3. Payment Processed Stripe processes the payment:
- Card authorized
- Funds captured
- Receipt generated
4. Funds Settled Organization receives funds per their payout schedule:
- Daily, weekly, or monthly
- Direct to verified bank account
- Minus Stripe processing fees
Fee Handling
Processing Fees
Stripe charges per transaction:
- Cards: ~2.9% + $0.30 (varies by region)
- Bank transfers: Lower or no fees
- Currency conversion: Additional if applicable
Fee Coverage Options
Donor Covers Fees (Default):
Donation: $50.00
Fees: ~$1.75
Donor pays: $51.75
Org receives: $50.00
Fees Deducted:
Donation: $50.00
Fees: ~$1.75
Donor pays: $50.00
Org receives: ~$48.25
Account Types
Organizations (Connected Accounts)
Each organization has a Stripe Connected Account:
- Standard: Organization owns relationship with Stripe
- Verified: Identity and banking verified
- Payouts: Direct to org's bank account
Businesses (Collection)
Businesses collecting donations:
- Route customer donations to org accounts
- Never hold donated funds
- Separate from business payments
Fundraisers
Personal fundraising:
- Donations route to organization account
- Fundraiser never receives funds
- Attribution tracked for reporting
Multi-Party Scenarios
Business Checkout Donations
Customer donates at business checkout:
┌────────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Customer │───▶│ Business │───▶│ Amply │───▶│ Org │
│ │ │ (POS) │ │(routing) │ │ │
└────────────┘ └──────────┘ └──────────┘ └──────────┘
│ ▲
│ │
└──────────────────────────────┘
Donation funds flow
(separate from business payment)
Key Point: Donation is a separate transaction from the purchase. Business facilitates but doesn't touch the funds.
Corporate Matching
Company matches employee donations:
Employee Donation: $50 → Org
Company Match: $50 → Org (separate transaction)
Total to Org: $100
Both transactions tracked independently on ledger.
Fundraiser Campaigns
Fundraiser collects from multiple donors:
Donor 1: $25 ─┐
Donor 2: $50 ─┼──▶ Campaign ──▶ Organization
Donor 3: $100 ─┘
Each donation is a separate transaction to the org.
Payment Methods
Cards
- Visa, Mastercard, American Express
- Global acceptance
- Standard Stripe fees
Bank Transfers
US (ACH):
- Lower fees
- Longer processing (3-5 days)
- Higher limits
Europe (SEPA):
- Low/no fees for EUR
- 1-2 day settlement
- EUR only
Digital Wallets
- Apple Pay
- Google Pay
- Link (Stripe)
Recurring Payments
Subscription handling:
- Card-on-file storage
- Automatic retry logic
- Failed payment handling
- Cancellation processing
Payout Process
Organization Payouts
Funds reach organizations:
Schedule Options:
- Daily: Next business day
- Weekly: Every Monday
- Monthly: First of month
Process:
- Donation processed
- Funds settle in Stripe (2-3 days for cards)
- Payout initiated per schedule
- Bank transfer (1-2 days)
Payout Visibility
Organizations see:
- Pending funds
- Upcoming payouts
- Payout history
- Per-donation detail
All visible on Amply dashboard and ledger.
Error Handling
Payment Failures
Card Declined:
- Donor notified
- Retry option provided
- No ledger entry created
- Organization not affected
Insufficient Funds:
- For bank transfers
- Retry after delay
- Donor communication
Dispute/Chargeback
Process:
- Dispute received
- Organization notified
- Evidence collected
- Stripe handles resolution
Impact:
- Funds held during dispute
- Ledger shows pending status
- Resolution recorded
Refunds
When Applicable:
- Donor error
- Duplicate charge
- Fraud investigation
Process:
- Initiated by org or Amply
- Funds returned to donor
- Ledger shows refund entry
- Chain integrity maintained
Compliance
PCI DSS
Amply never handles raw card data:
- Stripe.js for card capture
- Tokenized payment methods
- PCI SAQ-A eligible
KYC/AML
Organizations verified:
- Identity verification
- Bank account verification
- Sanctions screening
- Ongoing monitoring
Tax Documentation
- 1099 reporting (US, where applicable)
- VAT handling (EU)
- Cross-border considerations
Webhooks
Stripe Events
Amply receives Stripe webhooks:
payment_intent.succeededpayout.paidcharge.dispute.createdaccount.updated
Event Processing
Stripe Event ──▶ Amply Webhook Handler ──▶ Ledger Update
│
▼
Notifications
(donor, org)
Reliability
- Idempotent processing
- Retry handling
- Event logging
- Reconciliation checks
Related: