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 CollectionLendingIndiaWebhooksERP IntegrationFinancial ServicesAsyncAPIWebhooksEvents

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 email required.

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