Agent skill for integrating and debugging the Verify.et transaction verification API
SaferSkills independently audited verify-et-api (Agent Skill) and scored it 92/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 2 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 2 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This portable skill applies to backend integrations in Node.js, Python, PHP, Go, Java, Ruby, .NET, Rust, and mobile apps that proxy through a trusted backend.
references/api-endpoints.md for auth, endpoints, payloads, responses, permissions, and status flow.references/bank-specs.md for explicit bank payloads and universal-router disambiguators.references/error-codes.md for HTTP failures, verification error codes, retry decisions, credits, quotas, and idempotency conflicts.patterns/integration-methods.md for choosing sync, queued, webhook, polling, or SSE flows.patterns/webhooks.md for account webhook setup (dashboard or API), the signing secret, test delivery, signatures, and retries.patterns/image-processing.md for opt-in receipt photos, QR then OCR, image credits, and multipart upload.debugging/common-mistakes.md for production anti-patterns.debugging/production-checklist.md for pre-launch validation.VERIFY_ET_WEBHOOK_SECRET are stored, where POST /api/verify is called, whether an account webhook is active, whether a receipt photo is sent as multipart, how 202 is handled, whether duplicate submissions are possible, and whether Verify.et calls run server-side.fetch calls.Idempotency-Key for payment and checkout attempts, and persist the returned Verify.et requestId.200 as an inline terminal response and 202 as queued work. Register one account webhook, save its whsec_ secret, and prove the endpoint is active before relying on it. For 202, store requestId. Use polling or SSE only when a screen needs progress. Leave webhookUrl off once that endpoint is active. Details are in patterns/webhooks.md.confirmationHistory.confirmedBefore === true as a repeat-confirmation signal. Do not fulfill blindly without applying the product's duplicate-payment policy.POST /api/verify?waitMs=... only as a best-effort convenience. Production workflows must still work when Verify.et returns 202.POST /api/webhook-endpoints with their API key. Save the secret, prove the endpoint is active, then leave webhookUrl off the verify request.bank payloads when the product already knows the provider. Use universal reference payloads when the UI accepts mixed receipts or links. Optional settlementAccount checks that the receipt paid the expected receiver; details are in references/api-endpoints.md.image after Image Processing is enabled. QR and OCR are chosen by Verify.et. See patterns/image-processing.md.settlementAccountMatch when the product uses receiver matching.Before diagnosing, capture:
x-request-id, Retry-After, and X-Verify-Cache.requestId, processingStatus, status, error.code, and error.retryable.Idempotency-Key.x-api-key or whsec_ values in frontend code, mobile apps, logs, screenshots, or committed files.patterns/webhooks.md.VERIFY_ET_WEBHOOK_SECRET in the server environment that serves the receiver. The API returns that secret once.X-Webhook-Event-Id.Retry-After for rate limits and temporary unavailability.requestId, bank, status, and error code; omit API keys, cookies, receipt image bytes, and full authorization headers.Webhook registration can be done with the API key. Image Processing enablement and image-credit top-ups cannot. Other account settings may also exist only in the dashboard.
When one of those settings is missing:
patterns/webhooks.md. Image Processing proof is data.enabled: true and a positive data.balance from GET /api/image-processing.Use the current public docs when internet access is available:
https://verify.et/docs/get-startedhttps://verify.et/docs/apihttps://verify.et/docs/sdkIf working inside the Verify.et repository, prefer implementation source over stale docs. Relevant source paths are listed in references/api-endpoints.md.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.