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 | CloudEvents 1.0 structured JSON |
| Delivery | At least once |
| Idempotency | Use the CloudEvents source + id tuple, or COPE idempotency_key when available. |
| Source | cope.cart |
| Subject pattern | order:<identifier> |
| Category | Orders |
| Availability | Available in the public webhook reference. |
| Schema title | cart.order.completed v1 payload |
| Schema ID | https://schemas.cope.com/events/cart.order.completed/v1 |
Payload Fields
| Field | Required | Type | Allowed Values | Description | |
|---|---|---|---|---|---|
business | yes | object | - | - | |
buyer | yes | object | - | - | |
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 | yes | object | - | - | |
order_overview_url | yes | string | - | - | |
payment | yes | object | - | - | |
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 CloudEvent
{
"data": {
"business": {},
"buyer": {},
"currency": "EUR",
"event_type": "cart.order.completed",
"line_items": [
{
"amounts": {
"gross_cents": 1000,
"net_cents": 1000,
"tax_cents": 1000,
"tax_percentage": 19
},
"is_trial": true,
"product": {},
"quantity": 1000
}
],
"occurred_at": "2026-05-05T12:00:00.000Z",
"order": {
"created_at": "2026-05-05T12:00:00.000Z",
"currency": "EUR",
"source": "example_source"
},
"order_overview_url": "https://example.com",
"payment": {},
"payment_method": {},
"promo": {},
"rail": "example_rail",
"schema_version": "1.3",
"totals": {
"product": {
"gross_cents": 1000,
"net_cents": 1000,
"tax_cents": 1000
},
"total": {
"gross_cents": 1000,
"net_cents": 1000,
"tax_cents": 1000
}
}
},
"datacontenttype": "application/json",
"dataschema": "https://schemas.cope.com/events/cart.order.completed/v1",
"id": "cart.order.completed:example",
"idempotency_key": "cart.order.completed:example",
"source": "cope.cart",
"specversion": "1.0",
"subject": "order:example",
"time": "2026-05-05T12:00:00.000Z",
"type": "cart.order.completed"
}