Jodo Webhooks

Event delivery surface for the Jodo platform. Jodo POSTs 36 documented events across student master data, manual payments, Flex subscriptions/mandates/instalments, Pay collections and Cred education loans to a URL the institute registers per event_code. At-least-once delivery with a published retry policy, event_id deduplication, HMAC SHA-256 X-Jodo-Signature verification, custom header validation and published source IP allowlists.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/jodo-webhooks"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

AsyncAPI Specification

jodo-webhooks-asyncapi.yml Raw ↑
# generated: '2026-08-23'
# method: generated
# source: https://docs.jodo.in/ (per-event webhook reference pages, fetched 2026-08-23)
asyncapi: 3.0.0
id: urn:com:jodo:webhooks
info:
  title: Jodo Webhooks
  version: '1.0'
  description: 'Jodo delivers state changes for students, manual payments, Flex instalment plans, Pay collections and Cred
    education loans as HTTP POST webhooks to a URL the institute registers per event_code.


    PROVENANCE: Jodo publishes no AsyncAPI document. This description was assembled from Jodo''s own public webhook reference
    at https://docs.jodo.in/ (one page per event, all HTTP 200 on 2026-08-23). Every event_code, envelope field, delivery
    rule, retry policy, source IP and signature header below is transcribed from those pages. Nothing has been invented.


    Delivery: Jodo treats a webhook as delivered on a 2xx response. Non-2xx responses, timeouts and unreachable endpoints
    are failures and are retried up to 5 times, spaced across 6-hour and 24-hour intervals for up to 3 days. Continuous failure
    disables the subscription (production: 100 consecutive failures; UAT: 10).


    Security: Jodo supports three independent validation mechanisms, usable alone or combined — a custom header key/value
    agreed with the institute, source IP allowlisting, and an HMAC SHA-256 signature over the raw request body sent in the
    X-Jodo-Signature header using a shared secret_key.'
  contact:
    name: Jodo
    url: https://docs.jodo.in/webhooks/handling-webhook-events/
  externalDocs:
    description: Jodo webhook integration guide
    url: https://docs.jodo.in/webhooks/handling-webhook-events/
defaultContentType: application/json
servers:
  subscriberEndpoint:
    host: '{institute-endpoint}'
    protocol: https
    description: The institute/ERP HTTPS endpoint registered per event_code. Jodo sends from fixed source IPs — production
      3.6.234.242, 3.111.80.40, 13.232.24.175, 43.204.202.190; UAT 3.108.86.33, 13.127.40.177, 65.0.77.215.
channels:
  MasterdataStudentRegisteredChannel:
    address: '{subscriberWebhookUrl}'
    title: masterdata.student.registered
    summary: A student record has been registered in Jodo.
    description: Jodo POSTs this event to the URL registered for event_code `masterdata.student.registered` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/student/webhooks/student-registered/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      MasterdataStudentRegistered:
        $ref: '#/components/messages/MasterdataStudentRegistered'
    tags:
    - name: Student
  MasterdataStudentActivatedChannel:
    address: '{subscriberWebhookUrl}'
    title: masterdata.student.activated
    summary: A student record has been activated in Jodo.
    description: Jodo POSTs this event to the URL registered for event_code `masterdata.student.activated` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/student/webhooks/student-activated/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      MasterdataStudentActivated:
        $ref: '#/components/messages/MasterdataStudentActivated'
    tags:
    - name: Student
  MasterdataStudentDroppedChannel:
    address: '{subscriberWebhookUrl}'
    title: masterdata.student.dropped
    summary: A student has been marked as dropped out.
    description: Jodo POSTs this event to the URL registered for event_code `masterdata.student.dropped` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/student/webhooks/student-dropped/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      MasterdataStudentDropped:
        $ref: '#/components/messages/MasterdataStudentDropped'
    tags:
    - name: Student
  DirectPaymentAddedChannel:
    address: '{subscriberWebhookUrl}'
    title: direct.payment.added
    summary: A manual/direct payment has been recorded against a student.
    description: Jodo POSTs this event to the URL registered for event_code `direct.payment.added` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/student/webhooks/manual-payment/direct-payment-added/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      DirectPaymentAdded:
        $ref: '#/components/messages/DirectPaymentAdded'
    tags:
    - name: Student
  DirectPaymentUpdatedChannel:
    address: '{subscriberWebhookUrl}'
    title: direct.payment.updated
    summary: A previously recorded manual/direct payment has been updated.
    description: Jodo POSTs this event to the URL registered for event_code `direct.payment.updated` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/student/webhooks/manual-payment/direct-payment-updated/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      DirectPaymentUpdated:
        $ref: '#/components/messages/DirectPaymentUpdated'
    tags:
    - name: Student
  DirectPaymentCancelledChannel:
    address: '{subscriberWebhookUrl}'
    title: direct.payment.cancelled
    summary: A previously recorded manual/direct payment has been cancelled.
    description: Jodo POSTs this event to the URL registered for event_code `direct.payment.cancelled` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/student/webhooks/manual-payment/direct-payment-cancelled/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      DirectPaymentCancelled:
        $ref: '#/components/messages/DirectPaymentCancelled'
    tags:
    - name: Student
  FlexSubscriptionSetupChannel:
    address: '{subscriberWebhookUrl}'
    title: flex.subscription.setup
    summary: The payer has completed Flex setup and a subscription has been created.
    description: Jodo POSTs this event to the URL registered for event_code `flex.subscription.setup` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/flex/webhooks/subscription-setup/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      FlexSubscriptionSetup:
        $ref: '#/components/messages/FlexSubscriptionSetup'
    tags:
    - name: Flex
  FlexSubscriptionActiveChannel:
    address: '{subscriberWebhookUrl}'
    title: flex.subscription.active
    summary: The bank has confirmed that debits can happen and the Flex subscription is active.
    description: Jodo POSTs this event to the URL registered for event_code `flex.subscription.active` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/flex/webhooks/subscription-active/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      FlexSubscriptionActive:
        $ref: '#/components/messages/FlexSubscriptionActive'
    tags:
    - name: Flex
  FlexSubscriptionUpdatedChannel:
    address: '{subscriberWebhookUrl}'
    title: flex.subscription.updated
    summary: An existing Flex subscription has been updated.
    description: Jodo POSTs this event to the URL registered for event_code `flex.subscription.updated` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/flex/webhooks/subscription-updated/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      FlexSubscriptionUpdated:
        $ref: '#/components/messages/FlexSubscriptionUpdated'
    tags:
    - name: Flex
  FlexSubscriptionCancelledChannel:
    address: '{subscriberWebhookUrl}'
    title: flex.subscription.cancelled
    summary: A Flex subscription has been cancelled.
    description: Jodo POSTs this event to the URL registered for event_code `flex.subscription.cancelled` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/flex/webhooks/subscription-cancelled/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      FlexSubscriptionCancelled:
        $ref: '#/components/messages/FlexSubscriptionCancelled'
    tags:
    - name: Flex
  FlexSubscriptionClosedChannel:
    address: '{subscriberWebhookUrl}'
    title: flex.subscription.closed
    summary: A Flex subscription has been closed.
    description: Jodo POSTs this event to the URL registered for event_code `flex.subscription.closed` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/flex/webhooks/subscription-closed/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      FlexSubscriptionClosed:
        $ref: '#/components/messages/FlexSubscriptionClosed'
    tags:
    - name: Flex
  FlexMandateCancelledChannel:
    address: '{subscriberWebhookUrl}'
    title: flex.mandate.cancelled
    summary: The auto-debit mandate backing a Flex subscription has been cancelled.
    description: Jodo POSTs this event to the URL registered for event_code `flex.mandate.cancelled` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/flex/webhooks/mandate-cancelled/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      FlexMandateCancelled:
        $ref: '#/components/messages/FlexMandateCancelled'
    tags:
    - name: Flex
  FlexMandateExpiredChannel:
    address: '{subscriberWebhookUrl}'
    title: flex.mandate.expired
    summary: The auto-debit mandate backing a Flex subscription has expired.
    description: Jodo POSTs this event to the URL registered for event_code `flex.mandate.expired` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/flex/webhooks/mandate-expired/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      FlexMandateExpired:
        $ref: '#/components/messages/FlexMandateExpired'
    tags:
    - name: Flex
  FlexInstalmentDebitedChannel:
    address: '{subscriberWebhookUrl}'
    title: flex.instalment.debited
    summary: A scheduled Flex instalment has been debited from the payer.
    description: Jodo POSTs this event to the URL registered for event_code `flex.instalment.debited` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/flex/webhooks/instalment-debited/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      FlexInstalmentDebited:
        $ref: '#/components/messages/FlexInstalmentDebited'
    tags:
    - name: Flex
  FlexInstalmentSettledChannel:
    address: '{subscriberWebhookUrl}'
    title: flex.instalment.settled
    summary: A debited Flex instalment has been settled to the institute.
    description: Jodo POSTs this event to the URL registered for event_code `flex.instalment.settled` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/flex/webhooks/instalment-settled/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      FlexInstalmentSettled:
        $ref: '#/components/messages/FlexInstalmentSettled'
    tags:
    - name: Flex
  FlexInstalmentBouncedChannel:
    address: '{subscriberWebhookUrl}'
    title: flex.instalment.bounced
    summary: A scheduled Flex instalment debit has bounced.
    description: Jodo POSTs this event to the URL registered for event_code `flex.instalment.bounced` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/flex/webhooks/instalment-bounced/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      FlexInstalmentBounced:
        $ref: '#/components/messages/FlexInstalmentBounced'
    tags:
    - name: Flex
  FlexDownpaymentDebitedChannel:
    address: '{subscriberWebhookUrl}'
    title: flex.downpayment.debited
    summary: The upfront downpayment collected during Flex setup has been debited.
    description: Jodo POSTs this event to the URL registered for event_code `flex.downpayment.debited` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/flex/webhooks/downpayment-debited/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      FlexDownpaymentDebited:
        $ref: '#/components/messages/FlexDownpaymentDebited'
    tags:
    - name: Flex
  FlexDownpaymentSettledChannel:
    address: '{subscriberWebhookUrl}'
    title: flex.downpayment.settled
    summary: The Flex downpayment has been settled to the institute.
    description: Jodo POSTs this event to the URL registered for event_code `flex.downpayment.settled` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/flex/webhooks/downpayment-settled/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      FlexDownpaymentSettled:
        $ref: '#/components/messages/FlexDownpaymentSettled'
    tags:
    - name: Flex
  PayPaymentDebitedChannel:
    address: '{subscriberWebhookUrl}'
    title: pay.payment.debited
    summary: A student-linked Pay payment has been debited.
    description: Jodo POSTs this event to the URL registered for event_code `pay.payment.debited` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/pay/webhooks/payment-debited/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      PayPaymentDebited:
        $ref: '#/components/messages/PayPaymentDebited'
    tags:
    - name: Pay
  PayPaymentSettledChannel:
    address: '{subscriberWebhookUrl}'
    title: pay.payment.settled
    summary: A student-linked Pay payment has been settled to the institute.
    description: Jodo POSTs this event to the URL registered for event_code `pay.payment.settled` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/pay/webhooks/payment-settled/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      PayPaymentSettled:
        $ref: '#/components/messages/PayPaymentSettled'
    tags:
    - name: Pay
  OrderPaymentDebitedChannel:
    address: '{subscriberWebhookUrl}'
    title: order.payment.debited
    summary: A checkout order payment has been debited.
    description: Jodo POSTs this event to the URL registered for event_code `order.payment.debited` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/pay/webhooks/order-payment-debited/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      OrderPaymentDebited:
        $ref: '#/components/messages/OrderPaymentDebited'
    tags:
    - name: Pay
  OrderPaymentSettledChannel:
    address: '{subscriberWebhookUrl}'
    title: order.payment.settled
    summary: A checkout order payment has been settled to the institute.
    description: Jodo POSTs this event to the URL registered for event_code `order.payment.settled` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/pay/webhooks/order-payment-settled/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      OrderPaymentSettled:
        $ref: '#/components/messages/OrderPaymentSettled'
    tags:
    - name: Pay
  PagePaymentDebitedChannel:
    address: '{subscriberWebhookUrl}'
    title: page.payment.debited
    summary: A payment made through a Jodo hosted payment page has been debited.
    description: Jodo POSTs this event to the URL registered for event_code `page.payment.debited` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/pay/webhooks/page-payment-debited/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      PagePaymentDebited:
        $ref: '#/components/messages/PagePaymentDebited'
    tags:
    - name: Pay
  PagePaymentSettledChannel:
    address: '{subscriberWebhookUrl}'
    title: page.payment.settled
    summary: A payment made through a Jodo hosted payment page has been settled.
    description: Jodo POSTs this event to the URL registered for event_code `page.payment.settled` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/pay/webhooks/page-payment-settled/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      PagePaymentSettled:
        $ref: '#/components/messages/PagePaymentSettled'
    tags:
    - name: Pay
  PaymentLinkPaymentDebitedChannel:
    address: '{subscriberWebhookUrl}'
    title: payment_link.payment.debited
    summary: A payment made through a shareable payment link has been debited.
    description: Jodo POSTs this event to the URL registered for event_code `payment_link.payment.debited` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/pay/webhooks/payment-link-debited/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      PaymentLinkPaymentDebited:
        $ref: '#/components/messages/PaymentLinkPaymentDebited'
    tags:
    - name: Pay
  PaymentLinkPaymentSettledChannel:
    address: '{subscriberWebhookUrl}'
    title: payment_link.payment.settled
    summary: A payment made through a shareable payment link has been settled.
    description: Jodo POSTs this event to the URL registered for event_code `payment_link.payment.settled` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/pay/webhooks/payment-link-settled/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      PaymentLinkPaymentSettled:
        $ref: '#/components/messages/PaymentLinkPaymentSettled'
    tags:
    - name: Pay
  PaymentLinkPaymentExpiredChannel:
    address: '{subscriberWebhookUrl}'
    title: payment_link.payment.expired
    summary: A shareable payment link has expired without being paid.
    description: Jodo POSTs this event to the URL registered for event_code `payment_link.payment.expired` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/pay/webhooks/payment-link-expired/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      PaymentLinkPaymentExpired:
        $ref: '#/components/messages/PaymentLinkPaymentExpired'
    tags:
    - name: Pay
  CredLoanApplicationStartedChannel:
    address: '{subscriberWebhookUrl}'
    title: cred.loan.application_started
    summary: A student or parent has started an education loan application.
    description: Jodo POSTs this event to the URL registered for event_code `cred.loan.application_started` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/cred/webhooks/application-started/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      CredLoanApplicationStarted:
        $ref: '#/components/messages/CredLoanApplicationStarted'
    tags:
    - name: Cred
  CredLoanApplicationFilledChannel:
    address: '{subscriberWebhookUrl}'
    title: cred.loan.application_filled
    summary: An education loan application has been completed by the applicant.
    description: Jodo POSTs this event to the URL registered for event_code `cred.loan.application_filled` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/cred/webhooks/application-filled/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      CredLoanApplicationFilled:
        $ref: '#/components/messages/CredLoanApplicationFilled'
    tags:
    - name: Cred
  CredLoanAgreementSignedChannel:
    address: '{subscriberWebhookUrl}'
    title: cred.loan.agreement_signed
    summary: The loan agreement has been signed by the applicant.
    description: Jodo POSTs this event to the URL registered for event_code `cred.loan.agreement_signed` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/cred/webhooks/agreement-signed/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      CredLoanAgreementSigned:
        $ref: '#/components/messages/CredLoanAgreementSigned'
    tags:
    - name: Cred
  CredLoanFinalApprovedChannel:
    address: '{subscriberWebhookUrl}'
    title: cred.loan.final_approved
    summary: The education loan application has received final approval.
    description: Jodo POSTs this event to the URL registered for event_code `cred.loan.final_approved` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/cred/webhooks/final-approved/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      CredLoanFinalApproved:
        $ref: '#/components/messages/CredLoanFinalApproved'
    tags:
    - name: Cred
  CredLoanRejectedChannel:
    address: '{subscriberWebhookUrl}'
    title: cred.loan.rejected
    summary: The education loan application has been rejected.
    description: Jodo POSTs this event to the URL registered for event_code `cred.loan.rejected` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/cred/webhooks/rejected/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      CredLoanRejected:
        $ref: '#/components/messages/CredLoanRejected'
    tags:
    - name: Cred
  CredLoanCanceledChannel:
    address: '{subscriberWebhookUrl}'
    title: cred.loan.canceled
    summary: The education loan application has been cancelled.
    description: Jodo POSTs this event to the URL registered for event_code `cred.loan.canceled` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/cred/webhooks/canceled/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      CredLoanCanceled:
        $ref: '#/components/messages/CredLoanCanceled'
    tags:
    - name: Cred
  CredLoanApplicationExpiredChannel:
    address: '{subscriberWebhookUrl}'
    title: cred.loan.application_expired
    summary: The education loan application has expired.
    description: Jodo POSTs this event to the URL registered for event_code `cred.loan.application_expired` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/cred/webhooks/application-expired/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      CredLoanApplicationExpired:
        $ref: '#/components/messages/CredLoanApplicationExpired'
    tags:
    - name: Cred
  CredLoanDisbursedChannel:
    address: '{subscriberWebhookUrl}'
    title: cred.loan.disbursed
    summary: The approved education loan has been disbursed.
    description: Jodo POSTs this event to the URL registered for event_code `cred.loan.disbursed` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/cred/webhooks/disbursed/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      CredLoanDisbursed:
        $ref: '#/components/messages/CredLoanDisbursed'
    tags:
    - name: Cred
  CredEmiDebitedChannel:
    address: '{subscriberWebhookUrl}'
    title: cred.emi.debited
    summary: An EMI instalment on a disbursed education loan has been debited.
    description: Jodo POSTs this event to the URL registered for event_code `cred.emi.debited` via POST /api/v1/integrations/erp/webhooks.
      Documented at https://docs.jodo.in/cred/webhooks/emi-debited/
    parameters:
      subscriberWebhookUrl:
        description: The HTTPS endpoint the institute/ERP registered for this event_code. One event_code maps to exactly one
          URL.
    messages:
      CredEmiDebited:
        $ref: '#/components/messages/CredEmiDebited'
    tags:
    - name: Cred
operations:
  receiveMasterdataStudentRegistered:
    action: receive
    channel:
      $ref: '#/channels/MasterdataStudentRegisteredChannel'
    summary: A student record has been registered in Jodo.
    description: Return a 2xx response once the event is accepted. Jodo retries up to 5 times across 6-hour and 24-hour intervals
      for up to 3 days; handlers must be idempotent on event_id.
    messages:
    - $ref: '#/channels/MasterdataStudentRegisteredChannel/messages/MasterdataStudentRegistered'
  receiveMasterdataStudentActivated:
    action: receive
    channel:
      $ref: '#/channels/MasterdataStudentActivatedChannel'
    summary: A student record has been activated in Jodo.
    description: Return a 2xx response once the event is accepted. Jodo retries up to 5 times across 6-hour and 24-hour intervals
      for up to 3 days; handlers must be idempotent on event_id.
    messages:
    - $ref: '#/channels/MasterdataStudentActivatedChannel/messages/MasterdataStudentActivated'
  receiveMasterdataStudentDropped:
    action: receive
    channel:
      $ref: '#/channels/MasterdataStudentDroppedChannel'
    summary: A student has been marked as dropped out.
    description: Return a 2xx response once the event is accepted. Jodo retries up to 5 times across 6-hour and 24-hour intervals
      for up to 3 days; handlers must be idempotent on event_id.
    messages:
    - $ref: '#/channels/MasterdataStudentDroppedChannel/messages/MasterdataStudentDropped'
  receiveDirectPaymentAdded:
    action: receive
    channel:
      $ref: '#/channels/DirectPaymentAddedChannel'
    summary: A manual/direct payment has been recorded against a student.
    description: Return a 2xx response once the event is accepted. Jodo retries up to 5 times across 6-hour and 24-hour intervals
      for up to 3 days; handlers must be idempotent on event_id.
    messages:
    - $ref: '#/channels/DirectPaymentAddedChannel/messages/DirectPaymentAdded'
  receiveDirectPaymentUpdated:
    action: receive
    channel:
      $ref: '#/channels/DirectPaymentUpdatedChannel'
    summary: A previously recorded manual/direct payment has been updated.
    description: Return a 2xx response once the event is accepted. Jodo retries up to 5 times across 6-hour and 24-hour intervals
      for up to 3 days; handlers must be idempotent on event_id.
    messages:
    - $ref: '#/channels/DirectPaymentUpdatedChannel/messages/DirectPaymentUpdated'
  receiveDirectPaymentCancelled:
    action: receive
    channel:
      $ref: '#/channels/DirectPaymentCancelledChannel'
    summary: A previously recorded manual/direct payment has been cancelled.
    description: Return a 2xx response once the event is accepted. Jodo retries up to 5 times across 6-hour and 24-hour intervals
      for up to 3 days; handlers must be idempotent on event_id.
    messages:
    - $ref: '#/channels/DirectPaymentCancelledChannel/messages/DirectPaymentCancelled'
  receiveFlexSubscriptionSetup:
    action: receive
    channel:
      $ref: '#/channels/FlexSubscriptionSetupChannel'
    summary: The payer has completed Flex setup and a subscription has been created.
    description: Return a 2xx response once the event is accepted. Jodo retries up to 5 times across 6-hour and 24-hour intervals
      for up to 3 days; handlers must be idempotent on event_id.
    messages:
    - $ref: '#/channels/FlexSubscriptionSetupChannel/messages/FlexSubscriptionSetup'
  receiveFlexSubscriptionActive:
    action: receive
    channel:
      $ref: '#/channels/FlexSubscriptionActiveChannel'
    summary: The bank has confirmed that debits can happen and the Flex subscription is active.
    description: Return a 2xx response once the event is accepted. Jodo retries up to 5 times across 6-hour and 24-hour intervals
      for up to 3 days; handlers must be idempotent on event_id.
    messages:
    - $ref: '#/channels/FlexSubscriptionActiveChannel/messages/FlexSubscriptionActive'
  receiveFlexSubscriptionUpdated:
    action: receive
    channel:
      $ref: '#/channels/FlexSubscriptionUpdatedChannel'
    summary: An existing Flex subscription has been updated.
    description: Return a 2xx response once the event is accepted. Jodo retries up to 5 times across 6-hour and 24-hour intervals
      for up to 3 days; handlers must be idempotent on event_id.
    messages:
    - $ref: '#/channels/FlexSubscriptionUpdatedChannel/messages/FlexSubscriptionUpdated'
  receiveFlexSubscriptionCancelled:
    action: receive
    channel:
      $ref: '#/channels/FlexSubscriptionCancelledChannel'
    summary: A Flex subscription has been cancelled.
    description: Return a 2xx response once the event is accepted. Jodo retries up to 5 times across 6-hour and 24-hour intervals
      for up to 3 days; handlers must be idempotent on event_id.
    messages:
    - $ref: '#/channels/FlexSubscriptionCancelledChannel/messages/FlexSubscriptionCancelled'
  receiveFlexSubscriptionClosed:
    action: receive
    channel:
      $ref: '#/channels/FlexSubscriptionClosedChannel'
    summary: A Flex subscription has been c

# --- truncated at 32 KB (71 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/jodo/refs/heads/main/asyncapi/jodo-webhooks-asyncapi.yml