Create a receipt
POST /v1/iso/record-tip records a payment that already occurred. The endpoint requires a project API key with write access.
Request
POST /v1/iso/record-tip
X-API-Key: <server-side-key>
Content-Type: application/json
{
"tip_tx_hash": "0x...",
"chain": "flare",
"amount": "12.50",
"currency": "USD₮0",
"sender_wallet": "0x...",
"receiver_wallet": "0x...",
"reference": "order-1842",
"resource_hash": "0x...",
"callback_url": "https://merchant.example/proofrails/callback"
}
| Field | Required | Description |
|---|---|---|
tip_tx_hash |
Yes | Settlement transaction hash. |
chain |
Yes | Chain name used by your integration. |
amount |
Yes | Decimal string. Do not use floating-point arithmetic to create it. |
currency |
Yes | Asset or currency label stored with the receipt. |
sender_wallet |
Yes | Payer address. |
receiver_wallet |
Yes | Recipient address. |
reference |
Yes | Stable business identifier such as an order or invoice ID. |
resource_hash |
No | 0x-prefixed SHA-256 of delivered bytes. |
callback_url |
No | Endpoint notified by the receipt worker when configured. |
Response
{
"receipt_id": "dec5a106-3216-4543-bfb6-e669dc83f4d7",
"status": "pending"
}
Deduplication
ProofRails returns the existing receipt when either of these matches an earlier record:
- the same
chainandtip_tx_hash; - the same
reference.
Choose references that are unique within your business workflow. A retry should reuse the original values.
Completion
Poll GET /v1/iso/receipts/{receipt_id}. A hosted receipt is complete at anchored, when its current bundle_hash matches the EvidenceAnchor transaction in flare_txid.
The receipt response intentionally contains links and integrity fields rather than every business input. Use project receipt listings and the evidence bundle for the broader record.