Guide · Payments

Subscribe to a payment: paid webhook + free AML

Subscribe to a payment. When the customer pays, we send a signed paid webhook — and a free AML screen on the same flow. Score, risk_level, detail_list, and risk_detail land on event=paid. No second AML vendor.

The lifecycle

Create a payment with an order_id, amount, and network (cabinet or Public API). The customer sends funds to the deposit address. RpcNode emits HMAC-signed POSTs to your webhook URL.

  • seen — deposit observed on-chain
  • aml_check — funds arrived, free AML screen in progress
  • paid — success webhook + AML result (score, risk_level, detail_list, risk_detail)
  • failed / underpaid / expired — terminal non-success states

Do not confuse this with Address Watch

Payments product payloads always have product="payments" and type="payment_order". Address Watch wallet hits use type=payment|payout|block and a direction field. If you mix the two in one handler, branch on product or type first.

event=paid (AML included)

{
  "product": "payments",
  "type": "payment_order",
  "event": "paid",
  "order_id": "your-order-id",
  "network": "ethereum",
  "amount": "100.00",
  "aml": {
    "score": 0,
    "risk_level": "Low",
    "hacking_event": "",
    "detail_list": [],
    "risk_detail": [],
    "address_label": "",
    "checked_at": "2026-08-16T10:00:00+00:00"
  }
}

Verify HMAC, then update your order

Every delivery includes X-Timestamp and X-Signature. Verify before you mark an invoice paid. Allowlist egress IPs from GET /v1/address-watch/webhook (egress_ips). Delivery is async — a cabinet Test enqueues work; it does not wait for your HTTP response.

Payments slots are on paid plans (Starter and up). Free includes RPC credits only. Pricing: rpcnode.dev/pricing. API: docs.rpcnode.dev/public-api/webhooks.

FAQ

Is AML a separate paid add-on?

No. AML screening is included with the payment — no extra AML fee. The paid webhook carries the result.

Can I use payment webhooks on the Free plan?

No. Free has no payment slots. Start RPC on Free, upgrade to Starter ($19) when you need paid+AML webhooks.

Is type=payment a payment order?

No. type=payment is an Address Watch incoming hit. Payment orders use type=payment_order and product=payments.