cart.order.completed
Generated from COPE public event contracts. Do not edit this page by hand.Use this event to start fulfillment, grant access, or reconcile a successful purchase.
Delivery Contract
| Field | Value |
|---|---|
| Encoding | JSON: id, type, version, source, created_at, occurred_at, data |
| Delivery | At least once |
| Idempotency | Deduplicate on id: every retry and replay of this event repeats it, and X-Cope-Event-Id carries it. |
| Source | cope.cart |
| Category | Orders |
| Availability | Available in the public webhook reference. |
| Schema title | cart.order.completed webhook body |
| Schema ID | https://schemas.cope.com/webhooks/cart.order.completed/v1 |
Payload Fields
| Field | Required | Type | Allowed Values | Description | |
|---|---|---|---|---|---|
attribution | yes | `object | null` | - | - |
business | no | object | - | - | |
buyer | yes | object | - | The buyer as the checkout captured them. email is null when the checkout did not ask for one. | |
cart | no | `object | null` | - | The cart the order was bought from. An order no cart produced (a post-purchase upsell) names none, and the webhook leaves the key out. |
currency | yes | string | - | - | |
event_type | yes | const | cart.order.completed | - | |
first_click_ref | no | `string | null` | - | Raw, unvalidated affiliate reference captured from the inbound ?aff= parameter. It is not a resolved or validated affiliate ID; COPE resolves and validates attribution downstream. |
line_items | yes | array | - | - | |
metadata | no | object | - | The metadata you attached to the cart when you created it, returned to you so you can reconcile this order against your own system. Includes the reserved external_reference and intended_payment_method keys when you set them, and omits keys COPE reserves for its own use. An empty object when you attached none, and absent entirely on orders placed before this field shipped — treat absent and empty as the same thing. A post-purchase upsell is a separate order that repeats the originating order’s metadata, so external_reference is not unique per order; key on order.id and treat this as a grouping reference. | |
occurred_at | yes | string | - | - | |
order | no | object | - | - | |
payment | no | object | - | - | |
payment_chunk | no | object | - | The payment chunk this event concerns. Carries object (what it is) and id (which one); id is the public identifier a merchant addresses it by. | |
payment_method | yes | `object | null` | - | - |
phone_offer_id | no | `string | null` | - | Phone offer identifier associated with this sale, if any. Raw attribution signal only. |
promo | yes | `object | null` | - | - |
promo_code | no | `string | null` | - | Promo code applied to this sale, if any. Raw attribution signal only. |
rail | yes | string | - | - | |
schema_version | yes | const | 1.3 | - | |
seller_vat_info | no | `object | null` | - | Seller identity used for invoicing when the creator is the VAT-liable party. Null when COPE is the VAT-liable party. |
totals | yes | object | - | - | |
vat_mode | no | string | cope_vat, creator_vat | Which party is liable for VAT on this sale: COPE (cope_vat) or the creator (creator_vat). | |
vat_responsibility | no | string | cope, creator | Which party remits VAT to the tax authority. |
Example delivery
{
"created_at": "2026-05-05T12:00:00.000Z",
"data": {
"attribution": {
"fbclid": "example_fbclid",
"gclid": "example_gclid",
"msclkid": "example_msclkid",
"ttclid": "example_ttclid",
"utm_campaign": "example_utm_campaign",
"utm_content": "example_utm_content",
"utm_medium": "example_utm_medium",
"utm_source": "example_utm_source",
"utm_term": "example_utm_term"
},
"business": {
"id": "biz_g7-Jq2PxT_4mRvNa",
"name": "example_name",
"object": "business"
},
"buyer": {
"billing_address": {
"city": "example_city",
"country": "DE",
"line1": "example_line1",
"line2": "example_line2",
"postal_code": "example_postal_code",
"region": "example_region"
},
"company_name": "example_company_name",
"email": "ada@example.com",
"first_name": "example_first_name",
"full_name": "example_full_name",
"last_name": "example_last_name",
"locale": "de",
"phone": "example_phone",
"private_person": false,
"shipping_address": {
"city": "example_city",
"country": "DE",
"line1": "example_line1",
"line2": "example_line2",
"postal_code": "example_postal_code",
"region": "example_region"
},
"tax_id": "example_tax_id"
},
"cart": {
"id": "5b1f8c2e-7d4a-4e9b-a3c6-0f2d9e8b7a61",
"object": "cart"
},
"currency": "EUR",
"event_type": "cart.order.completed",
"first_click_ref": "example_first_click_ref",
"line_items": [
{
"amounts": {
"gross_cents": 4900,
"net_cents": 4900,
"tax_cents": 4900,
"tax_percentage": 19
},
"base_net_amount_cents": 4900,
"commission_notional_vat_bps": 4900,
"currency": "EUR",
"discount": {
"applied_cents": 4900,
"original_gross_cents": 4900
},
"is_trial": false,
"plan": {
"charge_shipping_once": false,
"display_name": "example_display_name",
"first_payment_gross_cents": 4900,
"interval": "day",
"interval_count": 1,
"next_payment_gross_cents": 4900,
"payments_count": 1,
"plan_type": "one_time",
"shipping_depend_on_quantity": false,
"shipping_price_cents": 4900
},
"platform_fee_amount_cents": 4900,
"product": {
"id": "prod_Hq2W8xLm",
"object": "product"
},
"promo_applies": false,
"quantity": 1,
"shipping": {
"gross_cents": 4900,
"net_cents": 4900,
"tax_cents": 4900,
"tax_percentage": 19
},
"subscription": {
"id": "ps_Gm3Tq8ZrW1bN",
"object": "subscription"
}
}
],
"metadata": {},
"mor_posture": "example_mor_posture",
"occurred_at": "2026-05-12T16:30:12Z",
"order": {
"created_at": "2026-05-12T16:30:12Z",
"currency": "EUR",
"id": "ord_V7kP2mQx9RtL",
"object": "order",
"source": "example_source"
},
"payment": {
"id": "py_4nHs8QwZ2pLk",
"object": "payment"
},
"payment_chunk": {
"id": "pc_Tz6Rb1Vc9KdQ",
"object": "payment_chunk"
},
"payment_method": {
"brand": "example_brand",
"last4": "example_last4",
"type": "example_type"
},
"phone_offer_id": "example_phone_offer_id",
"promo": {
"amount_discounted_cents": 1,
"code": "example_code",
"currency": "EUR"
},
"promo_code": "example_promo_code",
"rail": "example_rail",
"schema_version": "1.3",
"seller_vat_info": {
"address": "example_address",
"email": "ada@example.com",
"name": "example_name",
"phone": "example_phone",
"tax_id": "example_tax_id"
},
"totals": {
"product": {
"gross_cents": 4900,
"net_cents": 4900,
"tax_cents": 4900
},
"shipping": {
"gross_cents": 4900,
"net_cents": 4900,
"tax_cents": 4900
},
"total": {
"gross_cents": 4900,
"net_cents": 4900,
"tax_cents": 4900
}
},
"vat_mode": "cope_vat",
"vat_responsibility": "cope"
},
"id": "8d2f6c1a-4e7b-4a39-b5d0-2c9e1f7a3b64",
"occurred_at": "2026-05-05T11:59:58.500Z",
"source": "cope.cart",
"type": "cart.order.completed",
"version": "v1"
}