Enhanced RTP Tracking Webhook

Overview

The Enhanced RTP Payment Tracking webhook provides customers with near-real-time, event-driven updates for RTP payment lifecycle changes. It allows customer ERP, treasury, reconciliation, customer service, and payment operations systems to receive authoritative payment status changes without polling MassPay.

Webhook events are delivered when material RTP lifecycle changes occur, including submission, network acknowledgement, settlement, returns, and notices of change. Customers should treat webhook payloads as system-to-system notifications and process them idempotently because delivery is at-least-once.

Webhook Endpoint & Customer Configuration

  • Delivery method: POST
  • Customer endpoint: Customer-provided HTTPS URL registered with Convera during onboarding.
  • Event family: RTP payment tracking events.
  • Supported event types: rtp.payment.status.changed, rtp.payment.returned, and rtp.payment.notice_of_change.
  • Content type: application/json
  • Delivery model: At-least-once delivery with retry for failed or timed-out attempts.

Customers must provide an externally reachable HTTPS endpoint, configure any required allow listing, and store the signing secret or certificate information provided during implementation. Production webhook delivery should be enabled only after successful sandbox validation.

Request Headers Sent by Convera

HeaderRequiredDescription
Content-TypeYesAlways application/json.
X-Correlation-IdYesIdentifier used for tracing the event across Convera and customer systems.
X-Webhook-Event-IdYesUnique event identifier. Use this value for idempotency and duplicate detection.
X-Webhook-TimestampYesUTC timestamp when the webhook request was generated.
X-Webhook-SignatureYesRequest signature generated using the configured signing method. Customers must validate this before processing the event.
User-AgentRecommendedIdentifies Convera webhook delivery infrastructure.

Webhook Payload Specification

All RTP tracking webhooks follow a common envelope containing event metadata, customer identifiers, payment identifiers, status information, amount details, and RTP network context. Event-specific objects provide additional details for returns and notices of change.

FieldTypeDescription
eventIdstringUnique event identifier. Matches X-Webhook-Event-Id.
eventTypestringWebhook event type, for example rtp.payment.status.changed.
eventVersionstringPayload contract version.
occurredAtstringUTC timestamp when the underlying RTP lifecycle event occurred.
customerIdstringConvera-assigned customer identifier.
paymentIdstringConvera MassPay payment identifier.
customerPaymentIdstringCustomer-supplied payment reference where available.
batchIdstringMassPay batch identifier where the RTP payment was submitted as part of a batch.
sequencenumberMonotonic sequence number per payment used to handle out-of-order delivery.
status.previousstringPrevious canonical RTP status.
status.currentstringCurrent canonical RTP status.
amountobjectPayment amount and currency.
rtpobjectRTP network context, including standard entry class, trace number, effective entry date, settlement date, and raw network status where available.
returnobjectPresent for rtp.payment.returned events. Includes return code, reason, return date, and related references.
noticeOfChangeobjectPresent for rtp.payment.notice_of_change events. Includes correction code and corrected fields.

Example Webhook Payloads

Example RTP Status Change Event

{
  "eventId": "evt_rtp_01J8Y9X7Q2V6M5N4P3R2T1S0A9",
  "eventType": "rtp.payment.status.changed",
  "eventVersion": "1.0",
  "occurredAt": "2026-09-17T10:15:30Z",
  "customerId": "cust_123456",
  "paymentId": "pay_95a147ec986a4c25b569a96955340d9b",
  "customerPaymentId": "ERP-RTP-20260917-001",
  "batchId": "batch_NTR7865170",
  "sequence": 4,
  "status": {
    "previous": "ACCEPTED_BY_NETWORK",
    "current": "SETTLED",
    "description": "RTP payment settled successfully"
  },
  "amount": {
    "currency": "USD",
    "value": 1250.75
  },
  "payer": {
    "name": "ACME INC",
    "accountMasked": "******6655"
  },
  "beneficiary": {
    "name": "ACME SUPPLIER LLC",
    "accountMasked": "******6789"
  },
  "rtp": {
    "standardEntryClass": "CCD",
    "companyEntryDescription": "PAYMENT",
    "traceNumber": "091000019123456",
    "effectiveEntryDate": "2026-09-17",
    "settlementDate": "2026-09-18",
    "rawNetworkStatus": "SETTLED"
  },
  "metadata": {
    "correlationId": "corr_6d7f9f0a2b4c",
    "source": "RTP_NETWORK",
    "environment": "production"
  }
}

Example RTP Return Event

{
  "eventId": "evt_rtp_return_01J8Y9X7Q2V6M5N4P3R2T1S0B1",
  "eventType": "rtp.payment.returned",
  "eventVersion": "1.0",
  "occurredAt": "2026-09-19T14:22:10Z",
  "customerId": "cust_123456",
  "paymentId": "pay_95a147ec986a4c25b569a96955340d9b",
  "customerPaymentId": "ERP-RTP-20260917-001",
  "batchId": "batch_NTR7865170",
  "sequence": 5,
  "status": {
    "previous": "SETTLED",
    "current": "RETURNED",
    "description": "RTP payment returned by receiving bank"
  },
  "amount": {
    "currency": "USD",
    "value": 1250.75
  },
  "return": {
    "code": "R03",
    "reason": "No account / unable to locate account",
    "returnDate": "2026-09-19",
    "originalTraceNumber": "091000019123456",
    "rawReturnCode": "R03"
  },
  "rtp": {
    "standardEntryClass": "CCD",
    "traceNumber": "091000019123456",
    "effectiveEntryDate": "2026-09-17",
    "settlementDate": "2026-09-18"
  },
  "metadata": {
    "correlationId": "corr_6d7f9f0a2b4c",
    "source": "RTP_RETURN_FILE",
    "environment": "production"
  }
}

Status Outcomes & Customer Handling Matrix

Canonical StatusDescriptionRecommended Customer Action
CREATEDPayment has been created in MassPay but not yet submitted to the RTP network.Record initial state. Do not treat as submitted or settled.
PENDING_SUBMISSIONPayment is awaiting RTP file generation or submission window.Display as pending. Avoid duplicate submissions unless explicitly cancelled and recreated.
SUBMITTED_TO_NETWORKPayment has been included in an RTP submission.Update ERP or treasury system to submitted. Continue monitoring for acceptance, settlement, or return.
ACCEPTED_BY_NETWORKRTP network or processing bank has accepted the item for processing.Mark as accepted but not yet final. Continue monitoring for settlement and returns.
SETTLEDPayment has settled through the RTP process.Reconcile payment as settled, while retaining monitoring for potential post-settlement returns.
RETURNEDPayment was returned by the receiving bank or RTP network.Reverse or exception the payment in downstream systems. Review return code and contact beneficiary if needed.
CANCELLEDPayment was cancelled before submission where cancellation is supported.Mark as cancelled and ensure no beneficiary credit is expected.
FAILEDPayment failed before successful RTP submission due to validation, processing, or technical error.Route to repair or operational exception handling. Do not treat as sent or settled.

Delivery, Retries & Idempotency

  • Acknowledge quickly: Customer endpoints should return a 2xx response only after the event has been safely persisted or queued.
  • Deduplicate events: Store and check eventId or X-Webhook-Event-Id. Duplicate deliveries of the same event must not create duplicate ledger entries, notifications, or workflow actions.
  • Handle out-of-order delivery: Use paymentId, sequence, and occurredAt to apply events in the correct lifecycle order.
  • Retry behaviour: Convera retries delivery for timeouts and non-2xx responses using exponential backoff within the configured retry window.
  • Do not block processing: Webhook receivers should enqueue events for asynchronous processing and avoid long-running synchronous work inside the HTTP request.

Security, Validation & Best Practices

  • Transport security: Expose only HTTPS endpoints using TLS 1.2 or later. Mutual TLS may be configured where required.
  • Signature validation: Validate X-Webhook-Signature and X-Webhook-Timestamp before trusting or processing payloads.
  • Replay protection: Reject requests with timestamps outside the agreed tolerance window and ignore duplicate eventId values already processed.
  • Data protection: Do not log full account numbers or sensitive beneficiary information. Store masked payloads where possible and apply customer data retention policies.
  • Operational monitoring: Track webhook ingestion success, processing latency, duplicate rates, failed signature validations, return-code distribution, and notice-of-change frequency.
  • Fallback process: If webhook processing is unavailable, queue incoming events and reconcile against MassPay records once service is restored.

Did this page help you?
Convera Logo

© 2022 All Rights Reserved