Jodo · AsyncAPI Specification

Jodo Webhooks

Version 1.0

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.

View Spec View on GitHub CompanyPaymentsEducationFintechFee CollectionLendingIndiaWebhookERP IntegrationFinancial ServicesAsyncAPIEventsWebhooks

Channels

MasterdataStudentRegisteredChannel
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/
MasterdataStudentActivatedChannel
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/
MasterdataStudentDroppedChannel
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/
DirectPaymentAddedChannel
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/
DirectPaymentUpdatedChannel
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/
DirectPaymentCancelledChannel
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/
FlexSubscriptionSetupChannel
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/
FlexSubscriptionActiveChannel
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/
FlexSubscriptionUpdatedChannel
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/
FlexSubscriptionCancelledChannel
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/
FlexSubscriptionClosedChannel
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/
FlexMandateCancelledChannel
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/
FlexMandateExpiredChannel
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/
FlexInstalmentDebitedChannel
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/
FlexInstalmentSettledChannel
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/
FlexInstalmentBouncedChannel
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/
FlexDownpaymentDebitedChannel
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/
FlexDownpaymentSettledChannel
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/
PayPaymentDebitedChannel
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/
PayPaymentSettledChannel
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/
OrderPaymentDebitedChannel
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/
OrderPaymentSettledChannel
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/
PagePaymentDebitedChannel
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/
PagePaymentSettledChannel
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/
PaymentLinkPaymentDebitedChannel
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/
PaymentLinkPaymentSettledChannel
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/
PaymentLinkPaymentExpiredChannel
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/
CredLoanApplicationStartedChannel
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/
CredLoanApplicationFilledChannel
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/
CredLoanAgreementSignedChannel
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/
CredLoanFinalApprovedChannel
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/
CredLoanRejectedChannel
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/
CredLoanCanceledChannel
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/
CredLoanApplicationExpiredChannel
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/
CredLoanDisbursedChannel
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/
CredEmiDebitedChannel
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/

Messages

✉
MasterdataStudentRegistered
masterdata.student.registered
A student record has been registered in Jodo.
✉
MasterdataStudentActivated
masterdata.student.activated
A student record has been activated in Jodo.
✉
MasterdataStudentDropped
masterdata.student.dropped
A student has been marked as dropped out.
✉
DirectPaymentAdded
direct.payment.added
A manual/direct payment has been recorded against a student.
✉
DirectPaymentUpdated
direct.payment.updated
A previously recorded manual/direct payment has been updated.
✉
DirectPaymentCancelled
direct.payment.cancelled
A previously recorded manual/direct payment has been cancelled.
✉
FlexSubscriptionSetup
flex.subscription.setup
The payer has completed Flex setup and a subscription has been created.
✉
FlexSubscriptionActive
flex.subscription.active
The bank has confirmed that debits can happen and the Flex subscription is active.
✉
FlexSubscriptionUpdated
flex.subscription.updated
An existing Flex subscription has been updated.
✉
FlexSubscriptionCancelled
flex.subscription.cancelled
A Flex subscription has been cancelled.
✉
FlexSubscriptionClosed
flex.subscription.closed
A Flex subscription has been closed.
✉
FlexMandateCancelled
flex.mandate.cancelled
The auto-debit mandate backing a Flex subscription has been cancelled.
✉
FlexMandateExpired
flex.mandate.expired
The auto-debit mandate backing a Flex subscription has expired.
✉
FlexInstalmentDebited
flex.instalment.debited
A scheduled Flex instalment has been debited from the payer.
✉
FlexInstalmentSettled
flex.instalment.settled
A debited Flex instalment has been settled to the institute.
✉
FlexInstalmentBounced
flex.instalment.bounced
A scheduled Flex instalment debit has bounced.
✉
FlexDownpaymentDebited
flex.downpayment.debited
The upfront downpayment collected during Flex setup has been debited.
✉
FlexDownpaymentSettled
flex.downpayment.settled
The Flex downpayment has been settled to the institute.
✉
PayPaymentDebited
pay.payment.debited
A student-linked Pay payment has been debited.
✉
PayPaymentSettled
pay.payment.settled
A student-linked Pay payment has been settled to the institute.
✉
OrderPaymentDebited
order.payment.debited
A checkout order payment has been debited.
✉
OrderPaymentSettled
order.payment.settled
A checkout order payment has been settled to the institute.
✉
PagePaymentDebited
page.payment.debited
A payment made through a Jodo hosted payment page has been debited.
✉
PagePaymentSettled
page.payment.settled
A payment made through a Jodo hosted payment page has been settled.
✉
PaymentLinkPaymentDebited
payment_link.payment.debited
A payment made through a shareable payment link has been debited.
✉
PaymentLinkPaymentSettled
payment_link.payment.settled
A payment made through a shareable payment link has been settled.
✉
PaymentLinkPaymentExpired
payment_link.payment.expired
A shareable payment link has expired without being paid.
✉
CredLoanApplicationStarted
cred.loan.application_started
A student or parent has started an education loan application.
✉
CredLoanApplicationFilled
cred.loan.application_filled
An education loan application has been completed by the applicant.
✉
CredLoanAgreementSigned
cred.loan.agreement_signed
The loan agreement has been signed by the applicant.
✉
CredLoanFinalApproved
cred.loan.final_approved
The education loan application has received final approval.
✉
CredLoanRejected
cred.loan.rejected
The education loan application has been rejected.
✉
CredLoanCanceled
cred.loan.canceled
The education loan application has been cancelled.
✉
CredLoanApplicationExpired
cred.loan.application_expired
The education loan application has expired.
✉
CredLoanDisbursed
cred.loan.disbursed
The approved education loan has been disbursed.
✉
CredEmiDebited
cred.emi.debited
An EMI instalment on a disbursed education loan has been debited.

Servers

https
subscriberEndpoint
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.

AsyncAPI Specification

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

Work with this as data

Every AsyncAPI spec 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 asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • 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 AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/jodo-webhooks-asyncapi"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

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

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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