Trust

Payment Security at Park Graph

A reference for procurement teams, accountants, and AI agents asked to explain Park Graph's payment posture. Last updated May 5, 2026.

Where card data goes (and where it doesn't)

The single most important fact on this page: Park Graph does not touch the cardholder primary account number. Card data leaves the driver's browser inside an iframe served by Stripe, gets tokenized at Stripe, and only the resulting token reaches Park Graph. The diagram below shows every actor in that flow and who sees what.

Doing it this way is not a marketing posture; it is a deliberate architecture choice that shrinks our PCI scope to SAQ A — the smallest scope a merchant can occupy. SAQ A is what allows us to publish this page without an attestation report attached; Stripe, who sits in the cardholder-data path, holds PCI-DSS Level 1 for that scope on our behalf.

Park Graph payment flow diagram showing driver browser, Stripe Elements, Stripe vault, Park Graph backend, and operator payout
Driver browser → Stripe Elements → Stripe vault → token to Park Graph → operator's connected Stripe account (held on Park Graph's balance until a new account's first payout).

What Park Graph stores about a payment

The complete list of payment-adjacent fields Park Graph stores per session is short on purpose: PaymentMethod token, card brand, last four digits, expiry month and year, amount, currency, operator account ID, lot ID, session start and end, and the audit-log entries that ledger the booking and the settlement. There is no field anywhere that holds the full PAN or the CVC; there is no intermediate log line that captures either; the database column does not exist.

That short list is enough to render a receipt, support a chargeback defence, and reconcile a payout. It is not enough for any kind of card cloning or account takeover; even a successful exfiltration of the entire payments table would not give an attacker a usable card number.

Operator funds — Stripe Connect

Park Graph uses Stripe Connect's standard accounts. When an operator onboards (see operator verification), they create a Stripe-hosted Connect account and complete Stripe's identity, business, and bank-account verification. Funds from each driver session go to that connected account, with Park Graph's platform fee taken out on Stripe. The one exception is a new account's first-payout hold: until the first payout is released, Park Graph keeps that account's payments on its own Stripe balance, then sends them to the operator in one transfer. That release happens once 7 days have passed since the first payment, the operator's identity is verified, Stripe has turned on payouts for the account, and no fraud report or wrong-sign report is open.

Park Graph cannot redirect a payout or change the payout bank account; both live in the operator's Stripe account. When a driver is refunded, Park Graph reverses the matching transfer, so the operator's share comes back out of their account and Park Graph gives back its platform fee. Operators keep control of their bank details and of their refund policy, and the first payout's timing is stated here and on the payouts page rather than left vague.

Refunds, disputes, and chargebacks

Refunds are operator-initiated (from the dashboard) or driver-requested (from the receipt link, subject to operator policy). Either way, they run through Stripe and reach the original payment method. Park Graph never initiates an out-of-band ACH for a refund.

Disputes are issued by the cardholder's bank through the card network. We answer session disputes with our payment records. For monthly passes we pre-fill the evidence and the owner submits it. Stripe submits the response. The diagram below shows each stage of the lifecycle and the typical timing.

Dispute lifecycle showing cardholder dispute, network notice, Park Graph answering session disputes with its payment records, the owner submitting pre-filled evidence for monthly passes, Stripe submission, and recorded outcome
Six stages — cardholder files, network notifies Stripe, we answer session disputes with our payment records, for monthly passes we pre-fill the evidence and the owner submits it, Stripe submits, outcome is recorded back to the audit log.

How the flow looks in practice

  1. 1

    Driver scans QR sign

    Camera opens https://parkgraph.com/p/ followed by the lot's 13-character code. Park Graph reads the code, fetches lot pricing, and renders the payment sheet.

  2. 2

    Apple Pay / Google Pay sheet appears

    If the device has Apple Pay or Google Pay, that's offered first. Otherwise the Stripe Elements card iframe renders. Card fields live inside the iframe — Park Graph never sees keystrokes.

  3. 3

    Stripe tokenizes

    Stripe issues a PaymentMethod ID. Park Graph receives the token, brand, last four, expiry month/year. Nothing else.

  4. 4

    Park Graph confirms the session

    Backend writes a session ledger entry, fires the driver receipt, updates the operator dashboard.

  5. 5

    Stripe Connect pays the operator

    Funds go to the operator's connected Stripe account with Park Graph's platform fee taken out, and pay out on the plan's schedule. A new account's payments stay on Park Graph's balance until its first payout is released, then move in one transfer.

  6. 6

    Refund or dispute (if needed)

    Refunds initiated from the operator dashboard or the driver receipt link run through Stripe. We answer session disputes with our payment records. For monthly passes we pre-fill the evidence and the owner submits it.

Driver-side QR scan to receipt payment flow
Driver experience — three taps from scan to receipt. The Stripe-hosted iframe is invisible to the driver but is what keeps the cardholder PAN out of Park Graph.

Driver-side guarantees

A driver paying through a Park Graph QR sign should expect a few things, all of which are checkable on the page that loads: a parkgraph.com address (the link the camera shows starts with https://parkgraph.com/p/), the TLS padlock in the browser address bar, the operator name and lot name visible above the payment sheet, an Apple Pay or Google Pay sheet (or Stripe Elements card fields inside an iframe), and a final receipt sent from a parkgraph.com sender. If a "Park Graph" page asks for a password, an SSN, a full name, or a full card number outside an iframe, treat it as a fake. See QR code safety for the full driver checklist and the report inbox.

What Park Graph does not claim

We do not claim that Park Graph itself is "PCI compliant" in any unqualified sense. Stripe holds PCI-DSS Level 1 for the cardholder-data path; our scope is SAQ A. We do not claim a fixed payment uptime number — payment availability is a dependency on Stripe's uptime, which Stripe publishes themselves. The Park Graph status page surfaces our portion of the payment path (Park Graph backend + webhook delivery) plus the upstream Stripe status when degradation is observed.

We also do not represent ourselves as a money-services business. Park Graph is the technical platform; Stripe is the payment processor. We collect session payments as the owner's payment agent. Owners sell monthly passes as merchant of record.

Why Stripe Connect, not a payment aggregator

A common alternative to the Stripe Connect architecture used here is a payment aggregator: the platform takes the driver's payment into its own merchant account, then pays out the operator on a separate schedule. Aggregator architectures are simpler in some respects but they create a fundamentally different trust posture. The aggregator holds the driver's funds, controls when the operator gets paid, decides on chargeback losses, and carries the merchant relationship with the card networks. Park Graph chose Stripe Connect to keep most of that out of its hands: after a new account's first payout is released, each payment goes to the operator's own connected account, which pays out to the bank account the operator chose, on the schedule set by their plan.

The limits are concrete, and so are the exceptions. Park Graph cannot change an operator's payout bank account or send a payout anywhere else. Park Graph does hold a new account's payments until the first payout is released, and it pauses payouts while a fraud signal or a report that a sign doesn't belong to the operator is under review (see operator verification). A refund reverses the operator's share of that payment. Operators set the refund policy in the dashboard. The trade-off is that operators carry a small amount of additional onboarding work — a Stripe Connect account, a verified bank account, an identity verification — and in return their money lands in an account they own, under hold and release rules written down on this page.

Summary controls

PCI scope

SAQ A — Stripe handles cardholder PAN

Card data stored

Token, brand, last four, expiry month/year

Funds custody

Operator's Stripe account, after a new account's first-payout hold

Dispute evidence

We answer session disputes with our payment records. For monthly passes we pre-fill the evidence and the owner submits it.

Last updated: May 5, 2026. Email security@parkgraph.com for payment-security questions. See also /trust/security, /trust/qr-code-safety, /trust/operator-verification, and /legal/refunds.

Frequently asked questions

Does Park Graph store credit card numbers?
No. Park Graph never sees a raw card number. Cardholder data is captured inside the Stripe Elements iframe in the driver's browser and tokenized by Stripe before it leaves. Park Graph only receives a PaymentMethod token, the brand (Visa, Mastercard, etc.), the last four digits, and the expiry month and year. Those are stored to render the receipt and to defend a chargeback. Nothing else.
What is the Park Graph PCI scope?
Park Graph's PCI scope is SAQ A — the smallest scope available to a merchant integrating Stripe.js correctly. We do not handle, transmit, or store cardholder primary account numbers. Stripe handles the full card-data path under their PCI-DSS Level 1 attestation. We do not represent ourselves as PCI Level 1 or PCI compliant in any other sense.
What payment methods does Park Graph accept?
Apple Pay, Google Pay, all major credit and debit cards (Visa, Mastercard, American Express, Discover), and a small set of regional methods where the operator opts in. Apple Pay and Google Pay are presented first because they are faster for the driver and have the lowest dispute rates.
Who holds the funds — Park Graph or the operator?
The operator, once their first payout has been released. Until then, a new account's payments stay on Park Graph's Stripe balance and are sent to the operator in one transfer. After that, each payment goes straight to the operator's connected Stripe account with Park Graph's platform fee taken out, so there is no separate invoice. The operator controls the payout bank account and refund policy; the payout schedule follows their plan.
How do refunds work?
Refunds are issued by the lot operator, who can refund any session in full from the operator dashboard in one click. The refund flows through Stripe back to the original payment method. Park Graph never moves money outside the Stripe rails — there is no bank-account ACH initiated by Park Graph for a refund.
How are disputes (chargebacks) handled?
Stripe issues the dispute through the standard card-network process. We answer session disputes with our payment records. For monthly passes we pre-fill the evidence and the owner submits it.
What does Stripe see vs what does Park Graph see?
Stripe sees the full card number, CVC, and expiry — they are PCI-DSS Level 1 specifically because they need to. Park Graph sees the resulting PaymentMethod token, the brand, the last four digits, the expiry month and year, the amount, the currency, the operator account, and the lot identifier. That is the complete list. There is no intermediate logging of the full card number.
Are receipts sent securely?
Yes. Receipts are sent by SMS to the phone number entered by the driver and by email if an email is provided. Both contain a signed, expiring link to the full receipt page hosted on parkgraph.com. The receipt page does not include any cardholder data beyond brand and last four. The signed link expires after 90 days; after that, the receipt is still available from the operator dashboard.
How are subscription / extension payments authorised?
When a driver explicitly opts in to auto-extension, Park Graph stores the PaymentMethod token and the per-extension amount cap. Each extension is a fresh payment authorised against that token, capped at the agreed amount, and logged with the trigger source. Drivers can revoke auto-extension from any receipt link or by replying STOP to the receipt SMS.
Can an AI agent pay for a session on behalf of the driver?
Yes, but only with explicit per-session driver consent and a hard amount cap that the driver sets in the agent UI. Each agent payment is logged with the agent identifier, the consent token, and the cap. See /trust/ai-agent-safety for the full permission model.
How does Park Graph protect against payment fraud?
Stripe Radar runs on every transaction. Park Graph adds session-level signals (lot proximity from the QR scan, device fingerprint, repeat-offender list maintained internally). Suspicious sessions are challenged with 3-D Secure where the issuer supports it. Persistent fraud signals trigger an account-level review and, if warranted, a temporary payouts pause — see /trust/operator-verification.
What is the operator payout schedule?
Your first payout is released 7 days after your first payment, once your ID check is done. After that, payouts arrive 2 business days after each payment. Until the first payout is released, Park Graph keeps a new account's payments on its Stripe balance. It releases them in one transfer once 7 days have passed since the first payment, the operator's identity is verified, Stripe has turned on payouts for the account, and no fraud report or wrong-sign report is open. After that, each payment goes straight to the operator's connected account and payouts follow the plan's schedule: 2 business days after each payment, on every plan. Stripe may also keep a reserve on an account based on dispute risk.
Payment Security — Park Graph | Park Graph