Skip to main content
← Delivery Receipts

Quickstart

From zero to a sealed, verifiable delivery receipt in about a minute. All you need is an API key and one HTTP call when you deliver a digital good.

1

Get an API key

Create a key in your CertNode dashboard. It looks like cn_live_… (use cn_test_… while you wire things up). Keep it server-side.

2

Record a delivery

Call this from your delivery hook — when you serve a download, grant access, or activate a license. It seals the event the moment it happens. Hash any sensitive values (recipient, URL, license key); never send raw.

curl https://certnode.io/api/v1/access \
  -H "Authorization: Bearer cn_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "eventType": "download",
    "resourceId": "ebook-42",
    "externalOrderId": "order-1001",
    "contentHash": "<sha256 of the file, optional>",
    "recipientHash": "<sha256 of the buyer email, optional>",
    "source": "merchant"
  }'

Evidence-grade events: download, file_accessed, content_access, lesson_completed, course_completed, digital.delivery.granted, digital.delivery.accessed. A granted event is an assertion access was given; an accessed event records consumption.

3

Share the receipt

Fetch the buyer-facing receipt URL for the order and drop it into your order-confirmation email — the deterrent that prevents the dispute.

curl "https://certnode.io/api/v1/delivery-receipt?externalOrderId=order-1001" \
  -H "Authorization: Bearer cn_live_…"
# → { "receiptUrl": "https://certnode.io/r/<token>" }

That link opens a clean page showing Delivered / Accessed, sealed and timestamped, with a “verify independently” link.

4

Add the badge (optional)

Show buyers their delivery is recorded — on checkout, the download page, or the order email.

<a href="https://certnode.io/r" target="_blank" rel="noopener">
  <img src="https://certnode.io/badge/delivery-recorded.svg"
       alt="Delivery recorded by CertNode" height="40">
</a>
Delivery recorded by CertNode
Honest scope. “Delivered” reflects that you marked/reported delivery; “accessed” reflects access recorded by the named source. A receipt is a sealed, non-backdatable record of those events — strongest when the access signal is observed (a CertNode-served download link or a platform webhook) rather than self-reported. It is self-authenticating under FRE 902(13)/(14); it is not “court-admissible,” and it is not a guarantee of any dispute outcome.