Paybyte
DevelopersPBE Core 0.0.1 · Protocol 1.0
PBE-PAY v1

Non-custodial merchant payments.

PBE-PAY binds an order reference to an exact transfer. Merchants verify all three payment dimensions: signed reference, recipient address and amount.

GET/rpc/commerce/info

Commerce capabilities

Public

Returns PBE-PAY version, chain/network IDs, default confirmation policy, settlement model and whether webhooks are enabled on this node.

cURL

Shell
curl https://paybyte.org/rpc/commerce/info

Example response

JSON
{"ok":true,"commerce":{"protocol":"PBE-PAY","version":1,"networkId":1,"chainId":"PBE-MAINNET","defaultConfirmations":12,"highValueConfirmations":30,"hardFinality":false,"settlementModel":"canonical-chain-depth"}}
POST/rpc/commerce/payment-request

Create payment request

Public

Creates a stateless request. The node does not create a merchant order record.

Parameters

NameLocation / TypeRequiredDescription
recipientJSON stringyesMainnet PBE recipient address.
amountJSON decimal stringone of amount / amountBaseUnitsPBE amount with up to 8 decimal places.
amountBaseUnitsJSON unsigned integer stringone of amount / amountBaseUnitsExact base-unit amount.
referenceJSON stringnoMerchant order reference; generated if omitted.
labelJSON stringnoDisplay label, max 80 bytes.
confirmationsJSON integernoRequired canonical confirmations; default 12, max 1000.

Request body

JSON
{"recipient":"pbe1...","amount":"25","reference":"order_8f42d1","label":"Golden Sword","confirmations":12}

cURL

Shell
curl -X POST https://paybyte.org/rpc/commerce/payment-request -H "Content-Type: application/json" -d @request.json

Example response

JSON
{"ok":true,"payment":{"protocol":"PBE-PAY","version":1,"networkId":1,"recipient":"pbe1...","amount":"2500000000","amountPbe":"25","reference":"order_8f42d1","label":"Golden Sword","requiredConfirmations":12,"paymentUri":"pbe:pbe1...?amount=25&ref=order_8f42d1&confirmations=12&label=Golden%20Sword","walletPath":"/wallet/?pay=...","statusPath":"/rpc/commerce/payment/order_8f42d1?..."}}
GET/rpc/commerce/payment/{reference}

Verify exact payment

Public

Looks up a transfer by the signed reference and requires the caller to supply the expected recipient and exact amount.

Parameters

NameLocation / TypeRequiredDescription
referencepath stringyesSigned payment reference.
recipientquery addressyesExpected merchant address.
amountquery decimalone of amount / amountBaseUnitsExpected PBE amount.
amountBaseUnitsquery unsigned integerone of amount / amountBaseUnitsExpected base-unit amount.
confirmationsquery integernoConfirmation target.

cURL

Shell
curl "https://paybyte.org/rpc/commerce/payment/order_8f42d1?recipient=pbe1...&amount=25&confirmations=12"

Example response

JSON
{"ok":true,"payment":{"state":"confirming","canonical":true,"txid":"...","recipient":"pbe1...","amount":"2500000000","reference":"order_8f42d1","confirmations":5,"requiredConfirmations":12,"hardFinality":false}}
Do not trust reference aloneA payment is valid only when reference, recipient and exact amount all match the merchant order.

Payment states

StateMeaning
unpaidNo matching mempool or canonical transaction is currently visible.
pendingMatching signed transaction is in the node mempool.
confirmingMatching transaction is canonical but below the requested confirmation depth.
confirmedMatching transaction is canonical and meets the requested confirmation depth.

PBE payment URI

URI
pbe:pbe1MERCHANT...?amount=25&ref=order_8f42d1&confirmations=12&label=Golden%20Sword

The URI is a transport format. The signed transaction remains the authoritative proof. The wallet re-validates the recipient for the connected network and signs the exact tuple from the parsed request.