Command-line tool to verify CertNode receipts with 3-layer timestamp verification (CertNode, RFC 3161, Bitcoin)
npm install @certnode/verifyCommand-line tool to verify CertNode receipts with 3-layer cryptographic timestamp verification.
- ā
CertNode Timestamp - HMAC-SHA256, instant verification (<100ms)
- ā
RFC 3161 Timestamp - Court-admissible Time Stamp Authority proof
- ā
Bitcoin Anchor - Immutable blockchain proof via OpenTimestamps
- šØ Color-coded output - Easy-to-read verification results
- š Multiple output formats - Human-readable or JSON
- ā” Fast - Typically completes in <2 seconds
``bashRun directly with npx (no installation needed)
npx @certnode/verify receipt_abc123
Usage
$3
`bash
npx @certnode/verify receipt_abc123
`Output:
`
ā Receipt Verification Completeš Receipt Information
ID: receipt_abc123
Type: transaction
Created: 11/10/2025, 12:34:56 PM
š Cryptographic Timestamps
ā CertNode Timestamp
11/10/2025, 12:34:56 PM
Verified
ā RFC 3161 Timestamp
11/10/2025, 12:34:58 PM
Verified
ā Bitcoin Blockchain Anchor
Block 870234 (6 confirmations)
š Overall Status
ā Fully Verified
`$3
`bash
npx @certnode/verify receipt_abc123 --json
`Output:
`json
{
"receipt_id": "receipt_abc123",
"valid": true,
"layers": {
"certnode": {
"present": true,
"valid": true,
"timestamp": "2025-11-10T12:34:56.789Z"
},
"rfc3161": {
"present": true,
"valid": true,
"timestamp": "2025-11-10T12:34:58.123Z"
},
"bitcoin": {
"present": true,
"valid": true,
"status": "confirmed",
"block_height": 870234,
"confirmations": 6
}
},
"summary": {
"total_layers": 3,
"verified_layers": 3,
"status": "fully_verified"
}
}
`$3
`bash
npx @certnode/verify receipt_abc123 --api-url https://api.certnode.com
`Options
| Option | Description | Default |
|--------|-------------|---------|
|
--json | Output results as JSON | false |
| --api-url | Custom API endpoint | https://certnode.com |
| --help | Show help message | |
| --version | Show version number | |Verification Levels
$3
All three timestamp layers verified successfully:
- CertNode timestamp valid
- RFC 3161 timestamp valid
- Bitcoin anchor confirmed$3
Core timestamps verified, Bitcoin pending:
- CertNode timestamp valid
- RFC 3161 timestamp valid
- Bitcoin anchor pending confirmation$3
Only CertNode timestamp verified:
- CertNode timestamp valid
- Other layers pending or not present$3
Verification failed:
- Timestamp signatures invalid
- Receipt not found
- Network errorsExit Codes
| Code | Meaning |
|------|---------|
|
0 | Verification successful |
| 1 | Verification failed |
| 2 | Receipt not found |
| 3 | Network error |
| 4 | Invalid arguments |Examples
$3
`bash
Basic verification
npx @certnode/verify receipt_abc123Get JSON output for scripting
npx @certnode/verify receipt_abc123 --jsonUse in CI/CD pipeline
npx @certnode/verify $RECEIPT_ID --json > verification.json
`$3
`bash
Verify multiple receipts
for receipt_id in receipt_1 receipt_2 receipt_3; do
npx @certnode/verify $receipt_id --json >> verifications.json
done
`$3
`bash
Extract only the verification status
npx @certnode/verify receipt_abc123 --json | jq '.summary.status'Check if Bitcoin anchor is confirmed
npx @certnode/verify receipt_abc123 --json | jq '.layers.bitcoin.status'Get block height
npx @certnode/verify receipt_abc123 --json | jq '.layers.bitcoin.block_height'
`Programmatic Usage
You can also use the verification library in your Node.js code:
`typescript
import { verifyReceipt } from '@certnode/verify'const result = await verifyReceipt('receipt_abc123', {
apiUrl: 'https://certnode.com'
})
console.log(result.valid) // true
console.log(result.summary.status) // 'fully_verified'
console.log(result.layers.bitcoin.block_height) // 870234
`How It Works
CertNode uses a 3-layer timestamp system for maximum proof strength:
$3
- HMAC-SHA256 signature
- Server signs receipt with secret key
- Verified in <100ms
- Proves receipt existed at specific time$3
- Time Stamp Authority (TSA) signature
- Court-admissible legal proof
- Third-party verification
- TSA: freetsa.org$3
- OpenTimestamps proof
- Anchored to Bitcoin block
- Immutable and permanent
- Independently verifiableTroubleshooting
$3
`
Error: Receipt not found: receipt_abc123
`Solution: Verify the receipt ID is correct
$3
`
Error: Network error: ECONNREFUSED
`Solution: Check your internet connection or API endpoint
$3
`
ā³ Bitcoin Blockchain Anchor
Pending confirmation...
`Solution: Bitcoin anchoring takes 1-2 hours. Check back later.
API
The CLI uses the CertNode verification API:
`
GET https://certnode.com/api/timestamps/verify?receipt_id={id}
``See full API documentation at: https://docs.certnode.com/api/timestamps
- Documentation: https://docs.certnode.com
- API Reference: https://docs.certnode.com/api
- Issues: https://github.com/srbryant86/certnode/issues
- Email: support@certnode.com
MIT Ā© CertNode
- CertNode Core - Receipt verification platform
- OpenTimestamps - Bitcoin timestamp proof
- RFC 3161 - Time-Stamp Protocol