Public Donations
Public donations let supporters give directly from your public shelter profile or full-profile embed. PawPlacer supports general donations from the profile support card and targeted funding for public wishlist items.
Requirements
To accept public donations:
- Your public profile must be enabled.
- Payments must be enabled in Profile Visibility settings.
- Donations must be enabled in Profile Visibility settings.
- At least one public payment method must be configured. Stripe Connect is required for card checkout; PayPal, Venmo, Cash App, Zelle, Bitcoin, and Ethereum can be used for tracked external payments.
PawPlacer does not automatically turn public donations on when you first enable your public profile. This keeps donation collection intentional. Owners can enable it from Settings > Profile Visibility.
What Visitors See
When public donations are enabled, visitors see a Support card on your public shelter profile. If Stripe is active, the card includes a Donate button that opens a checkout dialog. If external payment methods are configured, visitors can also start a tracked payment with that provider.
The dialog lets visitors:
- Pick one of your preset donation amounts
- Enter a custom amount
- Add their name and email
- Leave a message
- Mark the gift as anonymous
For Stripe, the visitor is sent to Stripe Checkout. For external payment methods, PawPlacer creates a pending donation with a reference first, then opens the best provider link available and keeps the reference visible for the supporter.
If the visitor funds a wishlist item, the dialog also includes quantity selection when the item has a price. PawPlacer validates the selected quantity against the current available quantity before creating the checkout or pending external payment.
Stripe Fees
PawPlacer keeps none of the donation. Stripe's processing fee is added as a separate checkout line item so the shelter receives the full donation amount.
The donation record stores the donation amount separately from the Stripe fee.
Automatic Fulfillment
When Stripe confirms payment, PawPlacer automatically:
- Marks the donation as Received
- Stores the Stripe payment intent
- Creates or links the donor profile when donor information was provided
- Applies wishlist quantities if the donation funded a wishlist item
If checkout expires or Stripe reports a failure, the donation is marked cancelled or failed.
For wishlist funding, open Stripe checkouts reserve the selected item quantity until payment succeeds or the checkout expires. External payment starts also reserve the selected quantity while the donation is pending, so staff should reconcile or cancel stale pending records from the Donations page.
Abuse Protection
Public donation checkout creation and public wishlist item pledges are rate limited by visitor IP address and by shelter account. PawPlacer also validates that a public checkout or pledge can only target an enabled public shelter and one available public target at a time.
External payment starts use the same rate limit and validation path. They are stored as Pending until staff match the provider transaction and mark the donation Received. Public wishlist item pledges are also rate limited and require a supporter message with enough detail to match the pledge to an order, tracking number, drop-off plan, or note.
Refunds
Issue Stripe refunds from your Stripe Dashboard. PawPlacer listens for refund webhooks and marks fully refunded public donations as Refunded. If the donation funded a wishlist quantity, the quantity is reversed so the wishlist need reopens correctly.
Other Payment Methods
If you have saved non-Stripe payment methods, the support card can start tracked payments for PayPal, Venmo, Cash App, Zelle, Bitcoin, or Ethereum.
Provider behavior varies:
- PayPal: opens a PayPal.Me amount link.
- Venmo: opens the web pay flow with recipient, amount, and reference note.
- Cash App: opens the configured Cash App profile or amount link from the saved Cash App username.
- Zelle: opens a best-effort banking-app link and shows the recipient/reference because banks do not provide one universal prefilled payment URL.
- Bitcoin and Ethereum: show the wallet address and reference for manual reconciliation.
External payments still require staff reconciliation. Open the pending donation from Donations, confirm the provider payment, and mark it Received.