Checkout response fields
Use the response fields selected by the operation. Numeric amounts use the integration’s stored or calculated units. These operations do not establish a shared minor-unit scale, currency conversion or timestamp timezone. Common response conventions apply.
Calculation
| Field | Type / presence | Meaning |
|---|---|---|
total_price | number | Sum of discounted item subtotals plus taxes. |
discount | number | Sum of applied item discounts; not subtracted again from total_price. |
total_taxes | number | Sum of item tax totals. |
currency | string / null | Last processed item's currency; not a converted mixed-currency total. |
purchases | array | Calculated items below, not saved purchases. |
taxes | object | Summed tax projection: total integer; fee_wallkit, fee_payment and vat objects, each with amount integer and is_applied boolean. Aggregate rate fields are omitted; interpret the flag as explained below. |
Aggregate is_applied becomes true when an item supplies an is_applied field, even when that item flag is false. It does not prove a nonzero tax was applied. Use the returned amounts when displaying tax.
Calculated item
| Field | Type / presence | Meaning |
|---|---|---|
item_type | string | Selected category; subscription means Pricing. |
item_key | integer / string | Selected numeric record ID, or resolved content key for content. |
item_title, item_description | stored string / nullable | Item's descriptive catalog fields. |
item_period | stored period / null | Pricing period where present; not a universal duration unit. |
promo | string / null | Code only when its discount applies to this item. |
price | number / stored numeric | Effective price after applicable trial/upgrade selection, before promotion and taxes. |
base_price | stored numeric | Original catalog price; falls back to price. |
discount | number | Applied promotion deduction. Percentage discount uses ceiling; amount discount uses configured amount. |
discounted_price | number | Subtotal after promotion, floored at zero. |
total_taxes | integer | Added tax/fee total; defaults zero if missing. |
currency | stored string | Selected item's currency. |
upgrade_price | object | is_applied_upgrade_price boolean (default false), price_margin integer (default zero). Conditional configured credit, not a refund. |
trial | object | is_applied boolean default false; price, period, iterations configured values or null, currency string/null. Configuration can be returned without application. |
taxes | object / null | total integer; nullable fee_wallkit, fee_payment, vat objects with amount integer, is_applied boolean, rate_percent numeric/null and rate_sum integer. These are item rates, unlike the aggregate projection. |
Trial eligibility and upgrade credit depend on member history/configuration. An allowed higher-priced same-currency upgrade can use remaining days from the current non-trial membership; its credit is floored and effective price cannot fall below zero. This is not a general proration/refund contract. Platform fee, payment fee and VAT calculation use ceiling and configured rates/country; caught missing/invalid base configuration can yield zero/default tax objects. Use the returned values, not a reconstructed client formula.
Payment transactions
Ordinary processed groups use the following fields. transactions is an array; no pagination. More than one currency/item-type group can yield multiple transactions.
| Field | Type / presence | Meaning |
|---|---|---|
id | integer | Local transaction ID. |
status | stored string | succeeded/free/manual are successful; requires_source_action needs authentication. No complete enum. |
user_card_id, payment_method_id, user_id | stored numeric / nullable | Saved-source/member IDs; no universal cast guarantee for these fields. |
pay_system | stored string | Selected provider/operator name. |
amount, amount_refunded, fee | integer | Transaction amount, recorded refund amount and fee. |
connect_fee | stored numeric / nullable | Recorded connection fee. |
currency | stored string | Group currency; no conversion. |
livemode | boolean | Recorded provider mode. |
processing_fee_wallkit, processing_fee_payment, processing_vat | stored numeric / nullable | Recorded fee/VAT amounts. |
error | string / null | Recorded transaction error; successful status alone does not guarantee local relationships. |
purchases | array | Base purchase projection below, possibly empty even after successful status. |
Base payment purchase
This differs from expanded account purchase/history projections. It does not add price, discount, currency, created_at or expanded item_title fields.
| Field | Type / presence | Meaning |
|---|---|---|
id, item_id, transaction_id | integer | Local purchase, purchased record and transaction IDs. |
item_type | string | Record category; ticket purchases can use ti_event_ticket_pass. |
item_key | string | Content key for content; string item_id otherwise. |
processing_fee_wallkit, processing_fee_payment, processing_vat | stored numeric / nullable | Recorded fee/VAT amounts. |
relation_model, relation_id | stored string / numeric, nullable | Applied relationship type/ID, if recorded. |
item | object / null | Content, general Pricing, bundle (id/title/price/currency/created_at stored fields), or event pass. Unrecognized/missing item yields null. |
relation | object / null | Membership relationship or sponsored relationship; missing/unrecognized relationship yields null. |
Authentication-required transaction
Payment returns the raw transaction model for requires_source_action, without the ordinary purchases projection. The model's public fields below are additional to the ordinary transaction fields. Their presence depends on raw model serialization rather than an explicit selected-field response. No purchases field is added in this branch.
| Additional field | Type / presence | Meaning / condition |
|---|---|---|
resource_id | integer after save/fetch | Header resource recorded on this local transaction. |
payment_customer_id | stored integer / null | Selected provider customer's local Wallkit record ID; not the provider customer string. |
transaction_id | stored string / null | Provider transaction/intent identifier, distinct from local id. |
json_data | decoded JSON / stored value / null | Internal calculated items for this group, not the public calculation projection. Uses the encoding rules below. |
data | decoded JSON / stored value / null | Provider answer using the encoding rules below; invalid encoded JSON can decode to null. No provider-neutral property schema. |
processing_taxes_json_data | decoded JSON / stored value / null | Recorded grouped taxes keyed by item type/ID, with tax-object arrays. Uses the encoding rules below; not the top-level aggregate tax projection. |
custom | boolean after save/fetch | Custom transaction flag, not evidence of payment completion. |
created_at | stored timestamp string / nullable | Creation time; before-create fills current server time unless a custom record supplies it. Timezone unspecified. |
updated_at | timestamp string | Current server time set during save/create; timezone unspecified. |
is_external | stored boolean / null (model annotation) | External-record flag; no explicit boolean conversion in afterFetch. |
For json_data, data and processing_taxes_json_data, object/array values are JSON-encoded before save. Stored strings are decoded after save/fetch only when they are neither empty nor "0". Empty strings and the string "0" remain unchanged; other stored representations can also remain unchanged. Invalid encoded JSON can decode to null. Keep decoded data, stored values and null distinct.
Dynamic provider answers and internal item data are not a portable schema. Treat status and local ID as the decision points and handle provider details through the already configured integration.
Single-Pricing calculation
Returns the calculated item fields at the top level with these differences/additions. The request uses a fresh user object, not member history, and does not create records.
| Field | Type / presence | Meaning / difference |
|---|---|---|
item_key | integer | Pricing ID. |
item_is_allowed_autorenew | stored boolean-like / nullable | Configured Pricing allowance, no explicit boolean cast here. |
item_is_allowed_next_subscription | boolean | Logical inverse of the configured autorenew allowance; not the member's chosen next Pricing. |
total_price | number | Discounted subtotal plus calculated taxes. |
taxes | null | Selected from an absent aggregate key in the helper's returned item list; this is not the item's actual tax object. total_taxes can still be nonzero. |
No purchases array or top-level aggregate discount/currency calculation is added. Other item fields keep their meanings above, but trial/upgrade choices do not use this member's history/context. Member eligibility and country-dependent taxes require the member calculation.