# COPE > Public COPE webhook documentation. - [COPE developer docs](https://docs.staging.cope-demo.com/index.md): Public COPE developer documentation for checkout SDK integrations, public API usage, and webhook events. - [Build a vendor integration](https://docs.staging.cope-demo.com/quickstart/build-an-integration.md): End-to-end quickstart for a vendor adding COPE checkout and webhook handling to an existing site, with a reference Next.js sample app. - [Consume webhooks](https://docs.staging.cope-demo.com/quickstart/consume-webhooks.md): The recommended first steps for receiving and processing COPE webhook events. - [Public API overview](https://docs.staging.cope-demo.com/api-reference/overview.md): COPE exposes a RESTful public API for vendor integrations. Authenticate with a Bearer API key or Clerk bearer token and call the endpoints described in this reference. - [Authentication](https://docs.staging.cope-demo.com/api-reference/authentication.md): Use a Bearer API key from the COPE vendor dashboard or a Clerk bearer token to authenticate every request. - [API key integrations](https://docs.staging.cope-demo.com/api-reference/api-key-integrations.md): Create, store, rotate, deactivate, and delete COPE public API keys safely. - [Errors](https://docs.staging.cope-demo.com/api-reference/errors.md): COPE public API errors use RFC 9457 application/problem+json envelopes with stable codes. - [List invoices](https://docs.staging.cope-demo.com/api-reference/invoices/list-invoices.md) - [Retrieve an invoice](https://docs.staging.cope-demo.com/api-reference/invoices/retrieve-an-invoice.md) - [List offers](https://docs.staging.cope-demo.com/api-reference/offers/list-offers.md) - [Create an offer](https://docs.staging.cope-demo.com/api-reference/offers/create-an-offer.md): Prices one product for one named buyer and returns a private checkout link made out to them. The price, the quantity and the buyer are settled here and are read-only on the offer page, so everything the order will need has to be supplied in this request. The offer accepts the payment methods the pro… - [Retrieve an offer](https://docs.staging.cope-demo.com/api-reference/offers/retrieve-an-offer.md) - [Cancel an offer](https://docs.staging.cope-demo.com/api-reference/offers/cancel-an-offer.md): Cancels an `active` offer and returns it. The buyer's link stops offering checkout and shows a cancelled offer instead, so a cancelled offer can no longer be paid. - [Resend an offer to its buyer](https://docs.staging.cope-demo.com/api-reference/offers/resend-an-offer-to-its-buyer.md): Delivers the same private checkout link to the buyer again, and returns the offer. The offer must already have been sent once — use send for the first delivery — and must still be `active` and unlapsed. - [Send an offer to its buyer](https://docs.staging.cope-demo.com/api-reference/offers/send-an-offer-to-its-buyer.md): Delivers this offer's private checkout link to its buyer for the first time, and returns the offer. Only an `active` offer that has not lapsed and that carries a buyer email and name can be sent. - [List orders](https://docs.staging.cope-demo.com/api-reference/orders/list-orders.md) - [Retrieve an order](https://docs.staging.cope-demo.com/api-reference/orders/retrieve-an-order.md) - [List payments](https://docs.staging.cope-demo.com/api-reference/payments/list-payments.md): Lists settled, succeeded sale payments for the business. Refunds and chargebacks are not included here — see the refunds list. - [Retrieve a payment](https://docs.staging.cope-demo.com/api-reference/payments/retrieve-a-payment.md) - [Refund a payment](https://docs.staging.cope-demo.com/api-reference/refunds/refund-a-payment.md): Refunds a settled sale and returns the refund it created. Only a sale can be refunded — passing a refund's own id answers 404, exactly as reading it through `GET /v1/commerce/payments/{id}` does. - [List refunds](https://docs.staging.cope-demo.com/api-reference/refunds/list-refunds.md) - [Retrieve a refund](https://docs.staging.cope-demo.com/api-reference/refunds/retrieve-a-refund.md) - [List products](https://docs.staging.cope-demo.com/api-reference/products/list-products.md) - [Create a product](https://docs.staging.cope-demo.com/api-reference/products/create-a-product.md) - [Retrieve a product](https://docs.staging.cope-demo.com/api-reference/products/retrieve-a-product.md) - [Update a product](https://docs.staging.cope-demo.com/api-reference/products/update-a-product.md) - [Attach a downloadable file](https://docs.staging.cope-demo.com/api-reference/products/attach-a-downloadable-file.md): Step three of three. A product holds at most 5 downloadable files. The content type is checked again here against the file allow-list. Attaching media returns an approved product to review, taking it off sale until it is approved again. - [Attach a product image](https://docs.staging.cope-demo.com/api-reference/products/attach-a-product-image.md): Step three of three. A product holds at most 5 images. The content type is checked again here, so a file uploaded as a document is rejected by this endpoint even though the upload session accepted it. Attaching media returns an approved product to review, taking it off sale until it is approved agai… - [Create a media upload session](https://docs.staging.cope-demo.com/api-reference/products/create-a-media-upload-session.md): Step one of three. Returns an upload token and a direct upload URL; send the file bytes to that URL with the returned headers, then attach the token to a product. The URL points at object storage, not at this API. A token is consumed by a successful attach and cannot be reused; a rejected attach lea… - [Retrieve a subscription](https://docs.staging.cope-demo.com/api-reference/subscriptions/retrieve-a-subscription.md) - [Cancel a subscription](https://docs.staging.cope-demo.com/api-reference/subscriptions/cancel-a-subscription.md): Cancels a subscription and returns the attempt this request recorded. `mode` decides when it ends: `at_period_end` lets the period the buyer has already paid for run out, `immediate` ends it now. A subscription in `trial` can only be cancelled `immediate`. - [List a subscription's price and plan change attempts](https://docs.staging.cope-demo.com/api-reference/subscriptions/list-a-subscriptions-price-and-plan-change-attempts.md): Every attempt to change this subscription's recurring amount (`price`) or to move it to another plan (`plan`), newest first, whether it was applied or refused. A refused attempt is recorded too and reads `status: failed` with a `failure` saying what stopped it, so an empty list means no amount or pl… - [Pause a subscription's renewals](https://docs.staging.cope-demo.com/api-reference/subscriptions/pause-a-subscriptions-renewals.md): Stops collecting renewals on an `active` subscription and returns the attempt this request recorded. There is no end date and no automatic resume: it stays paused until you resume it. - [Move a subscription to another plan](https://docs.staging.cope-demo.com/api-reference/subscriptions/move-a-subscription-to-another-plan.md) - [Change a subscription's recurring amount](https://docs.staging.cope-demo.com/api-reference/subscriptions/change-a-subscriptions-recurring-amount.md) - [Resume a paused subscription](https://docs.staging.cope-demo.com/api-reference/subscriptions/resume-a-paused-subscription.md): Starts collecting renewals again on a `paused` subscription and returns the attempt this request recorded. - [Checkout SDK overview](https://docs.staging.cope-demo.com/checkout-sdk/overview.md): Use the COPE Checkout SDK to build custom product and cart pages that hand buyers off to hosted checkout by redirect or iframe. - [Embedded hosted checkout](https://docs.staging.cope-demo.com/checkout-sdk/embedded-checkout.md): Mount COPE hosted checkout in an iframe with the Checkout SDK, registered embed origins, and trusted postMessage events. - [Changelog](https://docs.staging.cope-demo.com/changelog.md): Weekly COPE release notes for checkout integrations, webhook contracts, and developer documentation. - [Webhooks overview](https://docs.staging.cope-demo.com/webhooks/overview.md): COPE delivers public webhook events as CloudEvents 1.0 structured JSON with at-least-once delivery. - [Webhook endpoints](https://docs.staging.cope-demo.com/webhooks/endpoints.md): Manage where COPE sends webhook events and how endpoint secrets are handled. - [Webhook deliveries and replay](https://docs.staging.cope-demo.com/webhooks/deliveries.md): Inspect webhook delivery attempts, replay failed deliveries, and send test events. - [Event type discovery](https://docs.staging.cope-demo.com/webhooks/event-types.md): Discover COPE webhook event types and their payload schema availability. - [Webhook signing](https://docs.staging.cope-demo.com/webhooks/signing.md): Verify COPE webhook signatures before processing events. - [Webhook events](https://docs.staging.cope-demo.com/webhooks/events/index.md): Public COPE webhook events and payload schema availability. - [cart.product.created](https://docs.staging.cope-demo.com/webhooks/events/cart.product.created.md): A product has been created. - [cart.product.approval_status.changed](https://docs.staging.cope-demo.com/webhooks/events/cart.product.approval_status.changed.md): A product's approval status has changed. - [cart.cart.created](https://docs.staging.cope-demo.com/webhooks/events/cart.cart.created.md): A cart has been created. - [cart.cart_line.added](https://docs.staging.cope-demo.com/webhooks/events/cart.cart_line.added.md): A line item has been added to a cart. - [cart.cart_line.updated](https://docs.staging.cope-demo.com/webhooks/events/cart.cart_line.updated.md): A cart line item has changed. - [cart.cart_line.removed](https://docs.staging.cope-demo.com/webhooks/events/cart.cart_line.removed.md): A line item has been removed from a cart. - [cart.buyer_identity.updated](https://docs.staging.cope-demo.com/webhooks/events/cart.buyer_identity.updated.md): The buyer identity on a cart has changed. - [cart.currency.changed](https://docs.staging.cope-demo.com/webhooks/events/cart.currency.changed.md): The cart currency has changed. - [cart.cart.abandoned](https://docs.staging.cope-demo.com/webhooks/events/cart.cart.abandoned.md): A cart has been abandoned. - [cart.checkout.created](https://docs.staging.cope-demo.com/webhooks/events/cart.checkout.created.md): A checkout has been created. - [cart.checkout.cancelled](https://docs.staging.cope-demo.com/webhooks/events/cart.checkout.cancelled.md): A checkout has been cancelled. - [cart.checkout.expired](https://docs.staging.cope-demo.com/webhooks/events/cart.checkout.expired.md): A checkout has expired. - [cart.order.created](https://docs.staging.cope-demo.com/webhooks/events/cart.order.created.md): An order has been created. - [cart.order.completed](https://docs.staging.cope-demo.com/webhooks/events/cart.order.completed.md): An order has completed successfully. - [cart.order.failed](https://docs.staging.cope-demo.com/webhooks/events/cart.order.failed.md): An order has failed. - [payment.sale.succeeded](https://docs.staging.cope-demo.com/webhooks/events/payment.sale.succeeded.md): A payment sale has succeeded. - [payment.failed](https://docs.staging.cope-demo.com/webhooks/events/payment.failed.md): A payment sale has failed. - [payment.refund.created](https://docs.staging.cope-demo.com/webhooks/events/payment.refund.created.md): A refund has been created. - [payment.refund.reversed](https://docs.staging.cope-demo.com/webhooks/events/payment.refund.reversed.md): A previously created refund has been reversed. - [subscription.amount_changed](https://docs.staging.cope-demo.com/webhooks/events/subscription.amount_changed.md): The recurring amount on a live subscription has changed. - [subscription.plan_changed](https://docs.staging.cope-demo.com/webhooks/events/subscription.plan_changed.md): A live subscription has been moved onto a different payment plan. - [subscription.paused](https://docs.staging.cope-demo.com/webhooks/events/subscription.paused.md): A subscription has stopped collecting renewals. - [subscription.resumed](https://docs.staging.cope-demo.com/webhooks/events/subscription.resumed.md): A subscription you paused is collecting renewals again. - [subscription.cancelled](https://docs.staging.cope-demo.com/webhooks/events/subscription.cancelled.md): A subscription has been cancelled, and `cancellation_reason` says why. - [payment.dispute.opened](https://docs.staging.cope-demo.com/webhooks/events/payment.dispute.opened.md): A payment dispute has opened. - [payment.dispute.won](https://docs.staging.cope-demo.com/webhooks/events/payment.dispute.won.md): A payment dispute has been won. - [payment.dispute.lost](https://docs.staging.cope-demo.com/webhooks/events/payment.dispute.lost.md): A payment dispute has been lost. - [payment.dispute.counter_fee.created](https://docs.staging.cope-demo.com/webhooks/events/payment.dispute.counter_fee.created.md): A dispute counter fee has been created. - [payment.chargeback.created](https://docs.staging.cope-demo.com/webhooks/events/payment.chargeback.created.md): A chargeback has been created. - [payment.chargeback.reversed](https://docs.staging.cope-demo.com/webhooks/events/payment.chargeback.reversed.md): A chargeback has been reversed. - [payouts.transfer.initiated](https://docs.staging.cope-demo.com/webhooks/events/payouts.transfer.initiated.md): A payout transfer has been initiated. - [payouts.transfer.completed](https://docs.staging.cope-demo.com/webhooks/events/payouts.transfer.completed.md): A payout transfer has completed. - [Cart, checkout, and order lifecycle](https://docs.staging.cope-demo.com/reference/cart-checkout-order-lifecycle.md): Public cart, checkout, and order states and the webhook events that announce lifecycle transitions. - [Payment lifecycle](https://docs.staging.cope-demo.com/reference/payment-lifecycle.md): Public payment states and the webhook events that announce terminal payment, refund, and dispute transitions. - [CloudEvents envelope](https://docs.staging.cope-demo.com/reference/event-envelope.md): Shared CloudEvents 1.0 envelope fields used by COPE webhook deliveries. ## OpenAPI Specs - [account-platform-webhooks-v1.openapi](/api-reference/account-platform-webhooks-v1.openapi.json) - [commerce-v1.openapi](/api-reference/commerce-v1.openapi.json)