Webhooks (mozzeno -> partner)

Principles

When the loan application process is integrated, the partner application can be notified of any status change through webhooks.

Specifications

Request Method

HTTPS POST

Request URI

The webhook url should be communicated by the partner to the support team:

  • There could be a different webhook url for each event (a unique webhook url is also possible)
  • The webhook url(s) can contain querystring parameters like API keys. Session or customer related context cannot be sent in the querystring parameters as the webhook url is shared for all customers. The context should be retrieved through the order reference in the Body.

Example : https://webapp.mysite.com/order-updates?APIKey=4c2-7b3a-4245-a5ee-acd174gtfv00c1d0bb

Request headers

HeaderExample valueDescription
Content-Typeapplication/json

X-Signaturehmacsha256=04c47cc2f008201...349aa16b89aHMAC signature of the JSON body with a secret (RFC 2104).
The JSON used for signature is exactly the value sent in the Body, no manipulation/compression. We take the Hex representation of the signature, in lower case. the signature is prefixed with "hmacsha256=" Online tools can help to validate your implementation of hmac256, f.i https://www.devglan.com/online-tools/hmac-sha256-online The secret should be provided to the support team. (optional)
X-Request-IDe654b4c2-7b3a-4245-a5ee-acd100c1d0bbunique ID for idempotency and replay protection (optional)

Body

Example

{
  "event": "loan_application.created",
  "event_date": "2025-04-23T15:45:00Z",
  "version": "1.0",
  "payload": {
    "order_reference": "order_123456",
    "requested_amount": 5980.00,
    "currency": "EUR",  
    "loan_application_id" : "fdbca7eb-4254-49b3-a4b2-27b5a9b248db",
    "loan_application_reference" : "900000589624",
    "loan_id" : "08d4fe96-f046-46c9-bdef-b2ad01639422",
    "loan_reference" : "900000595247"
  }
}

Documentation

Json fieldPresenceDescription
eventmandatoryType of event, see table below
event_datemandatoryThe timestamp of the event in UTC.
versionmandatoryTechnical field to manage version of the webhook in case of evolution
order_referenceconditionalPresent if provided initially. Before the order exists in the ecommerce system, the basket_id is typically used in this field, before it is converted to the real order reference using the order.order_created webhook (partner -> mozzeno).
requested_amountmandatoryAmount requested for the loan, could be lower than the purchase amount if a part is not financed in the loan
currencymandatoryISO 3 digits
loan_application_idmandatoryTechnical unique identifier of the loan_application, can be used in API calls
loan_application_referencemandatoryLoan application unique reference, information shared with the borrower
loan_idconditionalTechnical unique identifier of the loan, can be used in API calls A loan only exists after the loan application is completed
loan_referenceconditionalLoan unique reference, used as contract number and information shared with the borrower A loan only exists after the loan application is completed

List of possible events

EventDescription
loan_application.startedThe loan application has been started, waiting for a first user to register on it
loan_application.registeredA first user has been added to the loan application, from there he can resume the order from his borrower account as well
loan_application.cancelledThe loan application has been abandoned before being completed
loan_application.completedAll steps of the loan application have been completed, the analysis will start
loan.manual_review_neededThe loan could not be automatically preapproved or declined, and it is currently being reviewed by an agent. It usually takes up to 4 business hours.
loan.declinedThe loan has been declined (automatically or by an agent after manual review)
loan.preapprovedThe loan has been preapproved (automatically or by an agent after manual review). The user(s) can now provide any potential evidence still required.
loan.cancelledThe loan has been cancelled by the user, typically during the analysis or after the preapproval
loan.ready_to_signAll evidences of the preapproved loan have been successfully reviewed, and the user(s) can sign their loan contract online
loan.ready_to_grantThe loan contract has been signed and the loan is ready to grant. This event is specific to the tied credit use case, where a loan is used to finance a specific purchase. This means the delivery can be planned, and that the loan will be granted when we get the confirmation of the effective delivery to the customer.
loan.grantedThe loan has been granted :
  • the loan amount will be disbursed to the defined parties, according to the loan contract
  • the instalment payments obligations of the borrower starts
loan.withdrawnThe loan has been withdrawn in one of the following cases:
  • usage of his withdrawal right of 14 days on the loan contract, without consequence on the potential purchase tied to the credit : he just decides to pay upfront eventually
  • usage of his withdrawal right on the purchase, lawfully resulting in the withdrawal of the loan contract. This occurs when 1/ merchant notifies us of the purchase withdrawal, and 2/ the loan amount is paid back on our bank account using the loan reference as communication

Loan application lifecycle