API reference · Types
OrderAdditionOfferEventData
Part of the payload of order.addition_offer.updated.
Type: object
Example
{
"offer_ref": "oao_9e2b7c4d1a6f43b8a5c0d3e7f1b8a264",
"status": "sent",
"lines": [
{
"sku_id": 14602,
"product_id": 86,
"quantity": 2,
"reference_unit_price_cents": 450,
"unit_price_cents": 400,
"name": "Abyssal Nightstalker",
"set_name": "Portal Second Age",
"condition": "Near Mint",
"category_name": "Magic: The Gathering",
"language": "English",
"finish": "Normal",
"collector_number": null,
"rarity": "Uncommon"
}
],
"money": {
"currency": "CAD",
"merchandise_cents": 800,
"reference_merchandise_cents": 900,
"shipping_cents": 0,
"purchase_fee_cents": 28,
"tax_cents": 104,
"total_cents": 932,
"tax_lines": [
{
"label": "HST",
"rate": 0.13,
"amount": 104
}
]
},
"shipping_upgrade": null,
"note": "Two more, at the price you paid",
"request_ref": "oar_5c1e9a7f3b2d48e6a0f4c8d1b7e3a925",
"support_case_id": null,
"replaces_offer_ref": null,
"sent_at": "2026-09-04T19:14:03.000Z",
"expires_at": "2026-09-05T19:14:03.000Z",
"resolved_by_party": null,
"resolved_at": null,
"resolution_note": null,
"payment": null,
"seller_fees": {
"commission_cents": 40,
"processing_fee_cents": 57,
"platform_collected_tax_cents": 0,
"fee_terms": {
"marketplace_fee_rate_basis_points": 500,
"marketplace_fee_per_item_cap_cents": 2500,
"purchase_fee_rate_basis_points": 350,
"processing_fee_rate_basis_points": 290,
"processing_fee_fixed_cents": 30
}
},
"order_id": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW",
"seller_id": 42,
"reason": "sent"
}Fields
offer_refstring requiredThe opaque public offer id (
oao_…) - the{offerRef}of the withdraw and decline paths.Example
oao_9e2b7c4d1a6f43b8a5c0d3e7f1b8a264statusstring requiredsentandacceptedare the two OUTSTANDING states:acceptedmeans the buyer approved the exact amount and a payment is in flight, which is why the offer can no longer be withdrawn, replaced or expired.withdrawnis the seller taking it back;declinedis the buyer’s answer;expiredis the 24 hours running out;replacedis a different offer sent in its place;paidmeans the payment succeeded and the cards are now purchases on the order;payment_blockedmeans a captured payment was screened out and returned. Every ending is one-way, and every one butpaidfrees the stock the offer held -paidconverts it into the purchase.Constraints: allowed values:
sent,accepted,withdrawn,declined,expired,replaced,paid,payment_blockedExamplesentlinesOrderrequiredAddition Offer Line[] The line items in this request, response, or event.
Show child fieldsHide child fields
lines[].integer requiredsku_id The exact printing offered. Everything beside it is frozen from it.
Example
14602lines[].integer requiredproduct_id See Canonical catalog in Core concepts.
Example
86lines[].integer requiredquantity The number of units.
Example
2lines[].integer requiredreference_unit_price_cents The seller’s live listing price when the offer was authored: the ceiling this offer was allowed to charge up to, and the “was” price a discount reads against.
Example
450lines[].integer requiredunit_price_cents What this offer charges per unit; at or below the reference.
Example
400lines[].string or null requiredname Example
Abyssal Nightstalkerlines[].string or null requiredset_name Example
Portal Second Agelines[].string or null requiredcondition The normalized condition assigned to the card.
Example
Near Mintlines[].string or null requiredcategory_name Example
Magic: The Gatheringlines[].string or null requiredlanguage The language of the card printing.
Example
Englishlines[].string or null requiredfinish The catalog’s printing, under the name the order line snapshot uses.
Example
Normallines[].string or null requiredcollector_number Example
nulllines[].string or null requiredrarity The rarity assigned to the card printing.
Example
Uncommon
moneyOrderrequiredAddition Offer Money Show child fieldsHide child fields
money.string requiredcurrency The ISO 4217 currency code used for monetary amounts.
Example
CADmoney.integer requiredmerchandise_cents The offered cards, AFTER any seller discount.
Example
800money.integer requiredreference_merchandise_cents The same cards at the seller’s listing prices; above
merchandise_centsby the discount.Example
900money.integer requiredshipping_cents The shipping DIFFERENCE over shipping already paid for this parcel. EXACTLY 0 when the combined remaining quantities still fit the shipping option already paid for - nothing extra is charged for carriage the buyer has. Otherwise it is the
shipping_upgradeoption’s price less every shipping amount this parcel has already collected, including earlier paid upgrades, so a second upgrade never re-charges the first.Example
0money.integer requiredpurchase_fee_cents The buyer purchase fee at the ORIGINAL order’s frozen rate, on the discounted merchandise.
Example
28money.integer requiredtax_cents Example
104money.integer requiredtotal_cents The EXACT amount the buyer would pay - the sum of the four components above, frozen for the offer’s whole validity period. Nothing may accept for a different figure.
Example
932money.array of object requiredtax_lines Show child fieldsHide child fields
money.string requiredtax_lines[]. label Example
HSTmoney.number requiredtax_lines[]. rate The decimal tax rate applied to the taxable amount.
Example
0.13money.integer requiredtax_lines[]. amount The monetary amount in minor currency units.
Example
104
shipping_upgradeOrderor null requiredAddition Offer Shipping Upgrade The shipping option this addition would UPGRADE the parcel to, or null when it rides the one already paid for. All purchased additions share the original parcel: there is never a second shipment. The upgrade becomes the order’s effective option and tracking requirement only when the payment succeeds, and the historical shipping charges are not rewritten - each stays on the payment that collected it. The amount is
money.shipping_cents.Show child fieldsHide child fields
shipping_upgrade.string requiredmethod The upgraded option’s label, in the wording an order’s shipping method uses.
shipping_upgrade.boolean requiredis_tracked Whether the upgraded option requires tracking when the order is marked shipped.
notestring or null requiredThe seller’s own words beside the quote; null when none was given.
Example
Two more, at the price you paidrequest_refstring or null requiredThe buyer request this offer answered, or null when the seller offered directly.
Example
oar_5c1e9a7f3b2d48e6a0f4c8d1b7e3a925support_case_idinteger or null requiredExample
nullreplaces_offer_refstring or null requiredThe offer this one replaced, or null when it replaced none.
Example
nullsent_atstring requiredExample
2026-09-04T19:14:03.000Zexpires_atstring requiredWhen the offer and its stock hold stop being valid: 24 hours after
sent_at. Show it.Example
2026-09-05T19:14:03.000Zresolved_by_partystring or null requiredWho ended it -
buyeron a decline,selleron a withdrawal or replacement,systemon expiry, which belongs to nobody. Null while outstanding.Constraints: allowed values:
buyer,seller,operator,system,nullExamplenullresolved_atstring or null requiredExample
nullresolution_notestring or null requiredExample
nullpaymentOrderor null requiredAddition Payment The buyer’s payment for this offer, or null until one accepts it.
Show child fieldsHide child fields
payment.string requiredpayment_ref The opaque public payment id (
oap_…).payment.string requiredstatus processingmeans the answer is not in yet - a browser redirect does not prove a payment succeeded, so keep asking.succeededmeans the cards are on the order.failedmeans the attempt collected nothing and the offer can be accepted again.blockedmeans a captured payment was screened out and returned; this offer is over.Constraints: allowed values:
processing,succeeded,failed,blockedpayment.string requiredcurrency The ISO 4217 currency code used for monetary amounts.
payment.integer requiredamount_cents The exact amount the buyer approved, frozen from the offer.
payment.string requiredaccepted_at payment.string requiredcompletes_at When this attempt’s 15-minute completion window closes - distinct from the offer’s own 24 hours. Past it a
processingpayment is UNKNOWN rather than failed, and is reconciled against the provider.payment.string or null requiredresolved_at payment.string or null requiredfailure_reason payment.integer requiredattempts Above 1 when a declined card was retried on the same payment.
seller_feesOrderrequiredAddition Offer Seller Fees Show child fieldsHide child fields
seller_fees.integer requiredcommission_cents Commission on the discounted merchandise, capped per UNIT at the order’s frozen cap.
Example
40seller_fees.integer requiredprocessing_fee_cents Processing on the WHOLE additional payment - purchase fee and tax included - plus one fixed component for this one payment. It is never reapplied to the original capture.
Example
57seller_fees.integer requiredplatform_collected_tax_cents Example
0seller_fees.object requiredfee_terms The five terms this quote was priced at: the ORDER’s frozen terms as captured, never today’s Marketplace settings. An order that cannot prove all five cannot carry an addition at all.
Show child fieldsHide child fields
seller_fees.integer requiredfee_terms. marketplace_fee_rate_basis_points Example
500seller_fees.integer requiredfee_terms. marketplace_fee_per_item_cap_cents Example
2500seller_fees.integer requiredfee_terms. purchase_fee_rate_basis_points Example
350seller_fees.integer requiredfee_terms. processing_fee_rate_basis_points Example
290seller_fees.integer requiredfee_terms. processing_fee_fixed_cents Example
30
order_idstring requiredThe order the add-on is for (STABLE).
Example
ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VWseller_idinteger requiredThe seller that owns the order. Use this id to route the event to the right store (STABLE).
Example
42reasonstring requiredWhat happened to the offer.
sent: the seller sent it and its units are reserved.replaced: a newer offer named inreplaces_offer_refof its successor took its place and its reservation.withdrawn: the seller took it back.declined: the buyer refused it.expired: its 24 hours ran out. In each of those four endings its units are released.accepted: the buyer started paying, and the units stay reserved until the payment resolves.paid: the payment succeeded;order.updatedwith reasonitems_addedannounces the new lines.payment_failed: the attempt collected nothing and the offer is payable again untilexpires_at.payment_blocked: a captured payment was screened out and returned, and the offer is over (STABLE).Constraints: allowed values:
sent,replaced,withdrawn,declined,expired,accepted,paid,payment_failed,payment_blockedExamplesent