> For the complete documentation index, see [llms.txt](https://docs.emudhradigital.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.emudhradigital.com/api-reference/esign-v3-api-ca-ekyc-account/esign-v3-signing-response-and-callback.md).

# eSign v3 Signing Response and Callback

When the signer completes, cancels or times out, eMudhra POSTs the final signed `<EsignResp>` to `responseUrl`.

```xml
<EsignResp ver="3.3" status="1" ts="…" txn="ASP-20261012-000456" resCode="…" error="">
  <UserX509Certificate>…</UserX509Certificate>
  <Signatures>
    <DocSignature id="1" sigHashAlgorithm="SHA256" error="">…</DocSignature>
    <DocSignature id="2" sigHashAlgorithm="SHA256" error="206"></DocSignature>
  </Signatures>
  <Signature>…</Signature>
</EsignResp>
```

| Field                | Description                                        |
| -------------------- | -------------------------------------------------- |
| `status`             | `1` success · `0` failure · `2` pending            |
| `resCode`            | Constant across all responses for the transaction  |
| `error`              | Transaction-level error code                       |
| `DocSignature@error` | Per-document error, e.g. `206` (cancelled by user) |

## Browser redirect

If `redirectUrl` was supplied, the signer's browser is returned there with `txnref` = Base64(`txn|resCode`) as form data.

## Handler requirements

* Verify the eMudhra signature, then match `txn` / `resCode`.
* Be idempotent — the same result may arrive more than once.
* Treat documents with a `DocSignature@error` as unsigned.
