Coinbase Commerce Webhooks API
Checkout lifecycle event notifications
Checkout lifecycle event notifications
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/commerce-coinbase-webhooks-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Coinbase Business Checkouts Webhooks API
description: 'Current-generation REST API replacing the legacy Charges API for creating and managing single-use hosted payment checkouts. Merchants create a checkout object with a fixed USDC amount on the Base network; customers complete payment through a hosted URL. Uses JWT bearer token authentication and idempotency keys. Provides simplified status model and webhook events for the payment lifecycle.
'
version: '1'
termsOfService: https://commerce.coinbase.com/legal/user-agreement
contact:
name: Coinbase Developer Platform Support
url: https://docs.cdp.coinbase.com
license:
name: Proprietary
servers:
- url: https://business.coinbase.com/api/v1
description: Coinbase Business production server
security:
- BearerAuth: []
tags:
- name: Webhooks
description: Checkout lifecycle event notifications
paths: {}
webhooks:
checkoutPaymentSuccess:
post:
summary: checkout.payment.success
description: Emitted when a checkout payment is successfully completed.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CheckoutWebhookPayload'
responses:
'200':
description: Webhook received successfully
checkoutPaymentFailed:
post:
summary: checkout.payment.failed
description: Emitted when a checkout payment fails.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CheckoutWebhookPayload'
responses:
'200':
description: Webhook received successfully
checkoutPaymentExpired:
post:
summary: checkout.payment.expired
description: Emitted when a checkout expires without a completed payment.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CheckoutWebhookPayload'
responses:
'200':
description: Webhook received successfully
checkoutRefundSuccess:
post:
summary: checkout.refund.success
description: Emitted when a refund is completed successfully.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CheckoutWebhookPayload'
responses:
'200':
description: Webhook received successfully
checkoutRefundFailed:
post:
summary: checkout.refund.failed
description: Emitted when a refund fails.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CheckoutWebhookPayload'
responses:
'200':
description: Webhook received successfully
components:
schemas:
CheckoutStatus:
type: string
description: Payment lifecycle status of a checkout
enum:
- ACTIVE
- PROCESSING
- DEACTIVATED
- EXPIRED
- COMPLETED
- FAILED
- REFUNDED
- PARTIALLY_REFUNDED
CheckoutWebhookPayload:
type: object
description: Webhook event payload for checkout lifecycle events
properties:
id:
type: string
description: Checkout unique identifier
url:
type: string
format: uri
description: Hosted payment page URL
amount:
type: string
description: Checkout payment amount
currency:
type: string
description: Currency code
network:
type: string
description: Blockchain network
address:
type: string
description: Blockchain payment address
status:
$ref: '#/components/schemas/CheckoutStatus'
description:
type: string
description: Payment description
eventType:
type: string
description: The event type that triggered the webhook
enum:
- checkout.payment.success
- checkout.payment.failed
- checkout.payment.expired
- checkout.refund.success
- checkout.refund.failed
metadata:
type: object
additionalProperties:
type: string
successRedirectUrl:
type: string
format: uri
failRedirectUrl:
type: string
format: uri
transactionHash:
type: string
description: Blockchain transaction hash (present for payment.success and refund.success)
settlement:
$ref: '#/components/schemas/Settlement'
refundedAmount:
type: string
description: Total refunded amount
refunds:
type: array
items:
$ref: '#/components/schemas/Refund'
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
expiresAt:
type: string
format: date-time
Settlement:
type: object
description: Fee breakdown for a completed payment settlement
properties:
totalAmount:
type: string
description: Gross received amount
example: '50.00'
feeAmount:
type: string
description: Coinbase transaction fee
example: '0.50'
netAmount:
type: string
description: Net amount after fees
example: '49.50'
currency:
type: string
description: Settlement currency code
example: USDC
Refund:
type: object
description: An individual refund record associated with a checkout
properties:
id:
type: string
description: Unique refund identifier
checkoutId:
type: string
description: Parent checkout ID
amount:
type: string
description: Refunded amount
example: '25.00'
currency:
type: string
description: Refund currency
example: USDC
status:
type: string
description: Refund processing status
enum:
- PENDING
- COMPLETED
- FAILED
reason:
type: string
description: Optional merchant-supplied refund reason
maxLength: 500
transactionHash:
type: string
description: Blockchain transaction hash when the refund is completed
completedAt:
type: string
format: date-time
fiatAmount:
type: string
description: Fiat equivalent of the refund amount
fiatCurrency:
type: string
description: Fiat currency code (e.g. USD)
exchangeRate:
type: string
description: Exchange rate applied at time of refund
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'JWT signed with your CDP API Key Secret. See https://docs.cdp.coinbase.com/coinbase-business/authentication-authorization/api-key-authentication
'