{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-products/class/apis/actuarial provider/sidebars.yaml","current-catalog-info":"current-catalog-info-/products/class/apis/actuarial-provider/actuarial-certificate"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Actuarial Certificate — Class-to-Provider Requests","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"actuarial-certificate--class-to-provider-requests","__idx":0},"children":["Actuarial Certificate — Class-to-Provider Requests"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Actuarial Certificate integration is bi-directional. While the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/class/apis/actuarial-provider/actuarial-certificate"},"children":["API Reference"]}," documents the callback endpoints your system POSTs to on Class, this page documents the request that ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Class POSTs to your endpoint"]}," when a user requests a certificate.",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"You must host an HTTPS endpoint (registered with Class) that accepts this request and returns an acknowledgement."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"the-request-payload","__idx":1},"children":["The request payload"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a user requests a certificate, Class POSTs the fund data to your registered endpoint. The payload conforms to the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Actuarial Certificate Request Data Standard (v1.0)"]},".",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"The standard is the source of truth for the payload structure, field definitions, and enumerations. Refer to:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Standard overview & schema:"]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://accurium.github.io/actcertstd/ea-diagram"},"children":["https://accurium.github.io/actcertstd/ea-diagram"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Worked examples with sample data:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Deemed segregation: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://accurium.github.io/actcertstd/example1-deemed-seg"},"children":["https://accurium.github.io/actcertstd/example1-deemed-seg"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Elected segregation: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://accurium.github.io/actcertstd/example2-elected-seg"},"children":["https://accurium.github.io/actcertstd/example2-elected-seg"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Class sends the request as ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["XML by default"]},". The format (XML or JSON) is agreed per provider during onboarding; Class sets the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Content-Type"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Accept"]}," headers to match your configured format. Your endpoint parses this payload and returns an acknowledgement."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"the-acknowledgement-you-return","__idx":2},"children":["The acknowledgement you return"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your endpoint must respond synchronously. Return a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Response"]}," object to accept the request, or a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ResponseStatus"]}," object to reject it — the two cases are documented separately below."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"acknowledgement--successful-response","__idx":3},"children":["Acknowledgement — successful response"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Return a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Response"]}," containing the response URL and, optionally, a draft percentage:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Required"},"children":["Required"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What Class does with it"},"children":["What Class does with it"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Response.Url"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Yes"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The response URL. Class surfaces this link to the requesting user so they can review the ECPI% and finalise. An empty or missing URL fails the request."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Response.Percentage"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An optional draft ECPI% as a decimal. If supplied, Class records it as the initial (interim) percentage; you can post the final value later via the callback endpoints. To omit it, leave the field out entirely — do not send ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0"]},", which would record a 0% interim."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["JSON"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"Response\": {\n        \"Url\": \"https://your-service.example/certificate/review?ref=8f3a2b...\",\n        \"Percentage\": 63.18\n    }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["XML"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"<ActuarialCertificateResponseInfo>\n    <Response>\n        <Url>https://your-service.example/certificate/review?ref=8f3a2b...</Url>\n        <Percentage>63.18</Percentage>\n    </Response>\n</ActuarialCertificateResponseInfo>\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"acknowledgement--error-response","__idx":4},"children":["Acknowledgement — error response"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To reject a request, populate the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ResponseStatus"]}," error fields. Class treats a response as errored if either field contains a message. Ideally, populate ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["both"]}," fields:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What Class does with it"},"children":["What Class does with it"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DisplayError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A user-facing message. Class surfaces this to the requesting user so they understand why the request failed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Error"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Technical detail for Class's internal diagnostics. Logged internally and not shown to the user."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Populate ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DisplayError"]}," with a clear, user-friendly message and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Error"]}," with any technical detail that will help Class troubleshoot. Each field is a list, so you can supply more than one message:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["JSON"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"ResponseStatus\": {\n        \"DisplayError\": [\n            \"We could not process this fund because the member details are incomplete. Please review and resubmit.\"\n        ],\n        \"Error\": [\n            \"Validation failed: Member[2].DateOfBirth is null; unable to compute ECPI.\"\n        ]\n    }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["XML"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"<ActuarialCertificateResponseInfo>\n    <ResponseStatus>\n        <DisplayError>We could not process this fund because the member details are incomplete. Please review and resubmit.</DisplayError>\n        <Error>Validation failed: Member[2].DateOfBirth is null; unable to compute ECPI.</Error>\n    </ResponseStatus>\n</ActuarialCertificateResponseInfo>\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"the-response-url","__idx":5},"children":["The response URL"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The response URL is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["provider-owned"]}," — Class does not generate it or enforce a format. Class validates only that it is non-empty, stores it, and surfaces it to the requesting user so they can review and finalise."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"parameter-mapping","__idx":6},"children":["Parameter mapping"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The identifiers you'll need for the callback endpoints are taken from the initial request payload:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Callback parameter"},"children":["Callback parameter"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Payload mapping"},"children":["Payload mapping"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BusinessCode"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Client.SourceRef"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FundCode"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Fund.SourceRef"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RequestId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SourceRef"]}," (root of the payload)"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"what-your-system-should-do","__idx":7},"children":["What your system should do"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Authenticate the caller if required (mechanism agreed during onboarding)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Persist the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RequestId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BusinessCode"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FundCode"]},", and financial year — you'll need these for the callbacks."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Calculate (or begin calculating) the ECPI%."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Return a response URL for the Class user to review and finalise."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Once finalised, call back to Class to create a status, optionally update it, and upload the certificate PDF — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/class/apis/actuarial-provider/provider-to-class"},"children":["Provider-to-Class Updates"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"related","__idx":8},"children":["Related"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Callback endpoints your system POSTs to Class"]}," — see the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/class/apis/actuarial-provider/actuarial-certificate"},"children":["API Reference"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["The status lifecycle"]}," — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/class/apis/actuarial-provider/workflow"},"children":["Workflow"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["How to obtain a bearer token"]}," — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/class/apis/actuarial-provider/authentication"},"children":["Authentication"]},"."]}]}]},"headings":[{"value":"Actuarial Certificate — Class-to-Provider Requests","id":"actuarial-certificate--class-to-provider-requests","depth":3},{"value":"The request payload","id":"the-request-payload","depth":4},{"value":"The acknowledgement you return","id":"the-acknowledgement-you-return","depth":4},{"value":"Acknowledgement — successful response","id":"acknowledgement--successful-response","depth":4},{"value":"Acknowledgement — error response","id":"acknowledgement--error-response","depth":4},{"value":"The response URL","id":"the-response-url","depth":4},{"value":"Parameter mapping","id":"parameter-mapping","depth":4},{"value":"What your system should do","id":"what-your-system-should-do","depth":4},{"value":"Related","id":"related","depth":4}],"frontmatter":{"seo":{"title":"Actuarial Certificate — Class-to-Provider Requests"}},"lastModified":"2026-08-06T02:08:08.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/class/apis/actuarial-provider/class-to-provider","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}