Skip to content

Payments

Taxi & Private HireProductsPayment › Payments

Generally available

A captured payment — the money actually taken from the customer at trip-end. Created when a HELD TripPreAuth is converted on archive; or written directly for cash, in-app credit, or other non-preauth payment methods. Carries the method (CARD / CASH / CREDIT / ACCOUNT), amount, currency, processor reference, and status (PENDING / SUCCEEDED / FAILED / REFUNDED).

Fields

FieldTypeDescription
tripCharge TripCharge TripCharge this payment satisfies (or partially satisfies). A charge can have multiple payments — e.g. preauth-converted card + tip topup paid separately.
status TripPaymentStatus · CREATED | APPROVED | VOID Lifecycle status — PENDING / SUCCEEDED / FAILED / REFUNDED. Updated by processor webhooks for card payments; set directly for cash/credit/account methods.
total int Amount captured in cents. Sum of all SUCCEEDED payments on a charge should reconcile against `TripCharge.total`.
processorAuthCode string Authorization code returned by the card processor on successful capture. Used by support during chargeback / refund flows.
processorName string Name of the payment processor handling this transaction ("Stripe", "Adyen", "Square", etc.). Lets the same TripPayment table serve multi-processor tenants.
processorRecordId string Processor-side record ID (e.g. Stripe charge ID). Used to look up the transaction in the processor dashboard and to dedupe webhook deliveries.
method TripPaymentMethod · CASH | CARD | INVOICE | VOUCHER How the customer paid — CARD / CASH / CREDIT / ACCOUNT. Determines whether a preauth had to be converted (CARD) or the payment was captured directly (others).
tripPreAuth TripPreAuth The TripPreAuth (if any) that was converted to produce this payment. CARD payments typically have one; CASH / CREDIT / ACCOUNT payments do not.
clientId bigint Tenant scope. Every tenant-aware entity carries this; `ClientFilter` enforces row-level isolation on read; the multi-tenancy routing layer (`/client/{clientId}`) sets it at create time. Surfaced only under `admin` / `tripLog` groups — never to end users.
internalKey string Optional client-supplied external reference / idempotency key. When present, lets external systems correlate platform-side records back to their own source-of-truth ids. Not persisted to a column — populated by the request handler when the caller sets it.
__objectType string Discriminator string (entity class short-name) emitted alongside the id in serialized output. Resolved at read time by `getObjectType()`; lets the FE dispatch entity-specific rendering without inspecting the URL.
id bigint Snowflake-style primary key (unsigned BIGINT). Generated by `IdFactory` at create time; surfaced to the FE / API as a `G`-prefixed string and stripped back to plain bigint server-side before Doctrine lookup.
createdDate integer Unix timestamp the row was first persisted. Set in the entity's PrePersist hook; never rewritten on subsequent updates.
updatedDate integer Unix timestamp the row was last touched. Bumped on every commit that hits the Doctrine UoW for this entity; drives FE invalidation + the listing change cursor.
passiveUpdatedDate int Read-through alias for `updatedDate` exposed under different serializer groups. Lets the FE distinguish "real edit" from "background touch" projections without changing the underlying column.
listingUpdatedDate int Listing-projection timestamp surfaced only under the `listMode` group. Driven by `TripCache` and other listing-shape refreshers separately from `updatedDate` so a listing rebuild doesn't trigger detail-page invalidation.