Provider: acknowledge the payment notice
Provider acknowledges a payment notice with a Task bundle (status completed, output paymentack), closing the payment lifecycle via NHCX.
Business purpose
The acknowledgement confirms to the payer that the provider has received and recorded the payment notice for a specific claim. It closes the payment lifecycle from the provider side and completes the audit trail from claim approval through settlement. Failure to acknowledge does not block the payer, but the acknowledgement is required for complete lifecycle tracking, which matters for reconciliation, dispute resolution and scheme reporting.
When to use
The provider calls it after receiving a payment notice, with the same correlation ID and x-hcx-status response.complete. It tells the payer the payment was received and recorded.
Preconditions
- A payment notice with this correlation ID has been received and answered with
202. - The provider has a valid access token and the payer's certificate, and encrypts the reply for the payer.
- The
Taskiscompletedand carriespaymentackand the claim number from the notice. - The provider is now the sender and requester. The payer is the recipient and owner.
Postconditions
- NHCX answers
202and forwards the acknowledgement to the payer. - On success the payment for that claim is closed on both sides.
Common mistakes
- Using other text such as
ACKNOWLEDGEDinstead ofpaymentack. - Keeping the notice's direction, with the payer still as requester.
- Creating a new correlation ID instead of reusing the notice's.
- Skipping the acknowledgement, which leaves the payment open.
Best practices
- Send the acknowledgement only after the UTR, TDS and net amount have been persisted against the claim.
- Echo the claim number from PaymentNotice.identifier (type CLN) into Task.output[1].valueString so the payer can match it without decrypting the original.
- Confirm with the payer during onboarding whether it expects the acknowledgement here or on /v1/task/submit, given the documented source conflict.
- Be idempotent: if the same notice is redelivered, acknowledge again with the same content rather than creating a second ledger entry.
- Log API_call_ID and correlation ID for the acknowledgement so the closed lifecycle can be evidenced.
Related scenario
The hospital finance team receives the settlement notice under workflow 33 for claim CL0000000001 with UTR UTR000000000001, net 2187 INR and TDS 243 INR. After matching the bank credit and persisting the UTR, the HMIS builds a Task with status completed, code status, output paymentack and claimNumber CL0000000001, encrypts it for the payer and posts it to /v1/paymentnotice/on_request under workflow 17 with the notice's correlation ID. NHCX returns 202 and delivers it to the payer's bridge, which acknowledges within 30 seconds; the claim is now closed on both ledgers.
Specification
Chapter Payment notice and acknowledgement of the NHCX integration specification. Every NHCX call carries the access token from the session call in a header named Example These fields go in the JWE protected header of Key management algorithm. Always Example Content encryption algorithm. Always Example Your participant code. Mandatory on the envelope. Example The recipient's. For a provider, the processor code from the policy lookup. Mandatory on the envelope. Example Fresh on every message, including responses. Mandatory on the envelope. Example One per originating request. The Open Protocol page marks it Mandatory; the Technical Specifications page marks it Optional. Optional on the envelope. Send it anyway, as a fresh UUID per originating request: it is cheap and satisfies both readings until NHA rules. Example The thread that ties a request to its answers. The correlation ID rule says when to reuse it. Mandatory on the envelope. Example Which step, or which case. The workflow code explains both readings. Optional on the envelope. Example The time the message was made. Timestamp gives the format. Mandatory on the envelope. Example Where this message stands. Status words lists the values. Mandatory on the envelope. Example The beneficiary's ABHA number. Optional: send it when the beneficiary has an ABHA number. Optional on the envelope. Example Example Always One of NHCX returns HTTP 202 Accepted with a StatusSuccessResponse acknowledgement (entity_type payment) and forwards the Task to the payer asynchronously; the payer's endpoint must acknowledge with 202 within 30 seconds or NHCX retries up to five times.Authorizations
bearer_authapiKeyRequiredbearer_auth, as the word Bearer, a space and the token. NHCX reads bearer_auth, not Authorization.Bearer <access token>Protected header
payload, not as HTTP headers. Building and sending a JWE shows how to prepare and encrypt the payload, and Receiving a callback how to decrypt one.algstringRequiredRSA-OAEP-256: the content key is wrapped with the recipient's RSA public key.RSA-OAEP-256encstringRequiredA256GCM.A256GCMx-hcx-sender_codestringRequired<provider participant code>x-hcx-recipient_codestringRequired<payer participant code>x-hcx-api_call_idstringRequired<uuid>x-hcx-request_idstring<uuid>x-hcx-correlation_idstringRequired<uuid>x-hcx-workflow_idstring17x-hcx-timestampstringRequired<iso timestamp>x-hcx-statusstringRequiredresponse.completex-hcx-ben-abha-idstring<14-digit ABHA number>x-hcx-debug_flagstringError, Info or Debug. A server may ignore it. Optional on the envelope.INFOBody
typestringRequiredJWEPayload. Every response (on_) call sends it beside payload.JWEPayloadpayloadstringRequiredResponses
202timestampstringapi_call_idstringcorrelation_idstringresultobjectresult.sender_codestringresult.recipient_codestringresult.entity_typestringresult.protocol_statusstringerrorobjecterror.codestringerror.messagestring
Callbacks
- NHCX delivers this call to the payer, on the payer's own
/v1/paymentnotice/on_request, not back to you. Payer receives the payment acknowledgement.