Qoala · AsyncAPI Specification

Qoala Webhooks

Version

View Spec View on GitHub InsuranceInsurtechEmbedded InsurancePoliciesClaimsSoutheast AsiaIndonesiaFinancial ServicesPartner APIAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-05'
method: searched
source: https://docs.qoala.app/reference/webhook-notification, https://docs.qoala.app/reference/policy-status-notification,
  https://docs.qoala.app/reference/claim-status-notification
spec_type: Webhooks
asyncapi_published: false
note: Qoala documents a bidirectional webhook surface but publishes no AsyncAPI document. Captured as a webhook catalog;
  no AsyncAPI was fabricated.
directions:
- direction: inbound (partner/insurer -> Qoala)
  endpoint: POST {base_url}/api/integration/partner/webhook
  hosts:
    staging: https://api-staging.qoala.app
    uat: https://api.uat.qoala.app
    production: https://api.qoala.app
  auth: x-api-key header issued by Qoala
  idempotency: request_id in the body; identical replay returns 200, differing payload on the same request_id returns
    409
  purpose: Insurance providers and integration partners notify Qoala when a policy or claim transaction status changes,
    and attach supporting documents.
  payload_fields:
  - field: request_id
    type: string
    required: false
    description: Unique idempotency key for safe retries
  - field: transaction_number
    type: string
    required: true
    description: Unique transaction identifier for the policy or claim
  - field: transaction_type
    type: string
    required: true
    description: POLICY or CLAIM (case-insensitive)
  - field: status
    type: string
    required: true
    description: Current transaction status; see policy/claim status vocabularies
  - field: documents
    type: array
    required: true
    description: At least one related document (type, url, filename)
  responses:
  - http: 200
    meaning: Webhook received and processed; data.status is COMPLETED or FAILED, journey_status reports the stage
  - http: 400
    error_code: INVALID_PAYLOAD_VALIDATION_ERR
  - http: 401
    error_code: INVALID_API_KEY_ERR
  - http: 409
    meaning: request_id reused with a different payload
  - http: 500
    meaning: Unexpected server error
  docs: https://docs.qoala.app/reference/webhook-notification
- direction: outbound (Qoala -> partner callback)
  endpoint: POST {partner-url-path} — configured during onboarding
  auth: Qoala sends an x-api-key header the partner can verify. Qoala also supports HMAC_SHA256, MD5, Bearer and Basic
    Auth on partner callbacks, and can add methods on request.
  retry: Non-200 partner responses are retried up to 8 times with exponential backoff; a 200 stops retries.
  events:
  - event: policy.status.changed
    trigger: Any change in policy status; also the delivery mechanism for the final policy detail after asynchronous
      issuance.
    payload_fields:
    - policy_number (required)
    - partner_transaction_number
    - product_code
    - quotation_number
    - status
    - documents[]
    status_enum:
    - POLICY_ACTIVE
    - POLICY_ISSUING
    - POLICY_CANCELLED
    note: The insureds structure varies by product.parent_category (e.g. Gadget vs Travel).
    docs: https://docs.qoala.app/reference/policy-status-notification
  - event: claim.status.changed
    trigger: Any change in claim status — approval or rejection by Qoala or the insurer.
    payload_fields:
    - claim_number (required)
    - policy_number
    - status (required)
    optional: true
    note: Not mandatory for claim creation, but recommended for up-to-date claim status.
    docs: https://docs.qoala.app/reference/claim-status-notification
status_vocabularies:
  policy:
  - code: POLICY_WAITING_PAYMENT
    description: The policy is pending payment from the partner.
  - code: ISSUING_POLICY
    description: The policy is being issued by Qoala or the partner insurance.
  - code: POLICY_ACTIVE
    description: The policy is active and provides coverage.
  - code: POLICY_REJECTED_INSURANCE
    description: The policy issuance has been rejected.
  - code: POLICY_CANCELLED
    description: The policy has been cancelled for partner-specific reasons.
  - code: POLICY_EXPIRED
    description: The coverage period has ended.
  - code: DATA_VERIFICATION_NEEDED
    description: Additional documents or information are required for activation.
  claim:
  - code: CLAIM_INITIATE
    description: The claimer successfully submitted a claim.
  - code: QOALA_CLAIM_APPROVE
    description: Qoala approved the claim.
  - code: QOALA_CLAIM_REJECT
    description: Qoala rejected the claim.
  - code: INSURANCE_CLAIM_APPROVE
    description: The insurer approved the claim.
  - code: INSURANCE_CLAIM_REJECT
    description: The insurer rejected the claim.
  - code: INSURANCE_CLAIM_PAID
    description: The claim has been paid by the insurer.
  - code: INSURANCE_CLAIM_WAITING_PAID
    description: Approved by the insurer and awaiting payment.
  docs:
  - https://docs.qoala.app/reference/policy-status
  - https://docs.qoala.app/reference/claim-status