Set up a payment address
Create an OPID
An Open Payment Address (OPID) is a canonical HTTPS URL people can use to pay you.
What you need
A stable HTTPS URL on a website you control, somewhere to receive payments, and permission to publish a file at the derived record URL. This page does not upload your details.
01 / RECEIVE PAYMENTS
Choose where each payment should go
02 / CHOOSE A DESTINATION
A URL you own, or hosting by us
03 / GO LIVE
Publish the file yourself, or let the app do it
Updating an address you already published?
Load what is published at your OPID and edit it here. The next revision number is worked out for you. Your record is read in this browser and nothing is uploaded.
Paste the record JSON instead
Reading your record over the web needs
Access-Control-Allow-Origin: * on your host. If it is not
set, download or copy the published file and paste it here.
Your payment file is ready
Publish this file on your website
Download the file and upload it to the exact web address below. This lets payment apps find where to send payments.
Publish it over HTTPS in three steps
-
1Upload the file to this derived record URL:
-
2Make it publicly available over HTTPS without a redirect. A static
host may serve it as
application/json,text/plainorapplication/octet-stream;application/opap+jsonandCache-Control: no-storeremain recommended. -
3For direct browser access, set
Access-Control-Allow-Origin: *. This is a browser capability, not a validity condition; native resolvers and relays can still resolve a record without it.
Recommended security
Add DNSSEC key binding
A signed record creates exact-host key continuity even through insecure DNS. DNSSEC independently strengthens the current key's domain binding.
- 1. Enable DNSSEC. Activate it at your DNS provider and publish its DS record through your domain registrar.
-
2. Publish an origin key.
Generate an Ed25519 signing key and put only its public key in the
DNSSEC-protected TXT record
_opap.your-domainasv=opap1;epoch=1;ed25519=<base64url-public-key>;rec=none. -
3. Sign the payment file.
Sign the exact decoded file bytes. On a configurable host, return
OPAP-Proof: v=1;sig=<signature>and expose it withAccess-Control-Expose-Headers: OPAP-Proof. On a file-only host, upload the same proof line as a UTF-8 sidecar at:
Never publish or upload the private signing key. This creator makes only the payment file; use OPAP-aware publishing software or hosting to create and manage the key and proof.
If a hosting provider holds this key, it controls publication and
every payment target under that hostname. Ask whether the origin key
is provider-held or publisher-held. For independent recovery, commit
to an offline recovery key instead of rec=none and keep
the epoch-0 public key plus exact rec value outside this
hostname.
Once you have uploaded it
When the file is publicly available at the address above, your OPID is
active as https/none. A valid origin key and header or
sidecar proof establish first-use continuity; DNSSEC is shown
independently as the stronger binding.
Share this canonical HTTPS OPID with anyone who needs to pay you:
Payment file
JSON