---
updatedAt: 2026-06-16T09:29:56.000Z
agentTools:
  projectIndex: https://devportal.fintensy.com/llms.txt
---

# 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

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Header
      </th>

      <th>
        Example value
      </th>

      <th>
        Description
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        Content-Type
      </td>

      <td>
        application/json
      </td>

      <td>
        * <br />
      </td>
    </tr>

    <tr>
      <td>
        X-Signature
      </td>

      <td>
        hmacsha256=04c47cc2f008201...349aa16b89a
      </td>

      <td>
        HMAC 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](https://www.devglan.com/online-tools/hmac-sha256-online) The secret should be provided to the support team. (optional)
      </td>
    </tr>

    <tr>
      <td>
        X-Request-ID
      </td>

      <td>
        e654b4c2-7b3a-4245-a5ee-acd100c1d0bb
      </td>

      <td>
        unique ID for idempotency and replay protection (optional)
      </td>
    </tr>
  </tbody>
</Table>

## Body

### Example

```Text json
{
  "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 field                   | Presence    | Description                                                                                                                                                                                                                                     |
| :--------------------------- | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| event                        | mandatory   | Type of event, see table below                                                                                                                                                                                                                  |
| event\_date                  | mandatory   | The timestamp of the event in UTC.                                                                                                                                                                                                              |
| version                      | mandatory   | Technical field to manage version of the webhook in case of evolution                                                                                                                                                                           |
| order\_reference             | conditional | Present 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\_amount            | mandatory   | Amount requested for the loan, could be lower than the purchase amount if a part is not financed in the loan                                                                                                                                    |
| currency                     | mandatory   | ISO 3 digits                                                                                                                                                                                                                                    |
| loan\_application\_id        | mandatory   | Technical unique identifier of the loan\_application, can be used in API calls                                                                                                                                                                  |
| loan\_application\_reference | mandatory   | Loan application unique reference, information shared with the borrower                                                                                                                                                                         |
| loan\_id                     | conditional | Technical unique identifier of the loan, can be used in API calls A loan only exists after the loan application is completed                                                                                                                    |
| loan\_reference              | conditional | Loan 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

<Table align={["left","left"]}>
  <thead>
    <tr>
      <th>
        Event
      </th>

      <th>
        Description
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        loan_application.started
      </td>

      <td>
        The loan application has been started, waiting for a first user to register on it
      </td>
    </tr>

    <tr>
      <td>
        loan_application.registered
      </td>

      <td>
        A first user has been added to the loan application, from there he can resume the order from his borrower account as well
      </td>
    </tr>

    <tr>
      <td>
        loan_application.cancelled
      </td>

      <td>
        The loan application has been abandoned before being completed
      </td>
    </tr>

    <tr>
      <td>
        loan_application.completed
      </td>

      <td>
        All steps of the loan application have been completed, the analysis will start
      </td>
    </tr>

    <tr>
      <td>
        loan.manual_review_needed
      </td>

      <td>
        The 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.
      </td>
    </tr>

    <tr>
      <td>
        loan.declined
      </td>

      <td>
        The loan has been declined (automatically or by an agent after manual review)
      </td>
    </tr>

    <tr>
      <td>
        loan.preapproved
      </td>

      <td>
        The loan has been preapproved (automatically or by an agent after manual review). The user(s) can now provide any potential evidence still required.
      </td>
    </tr>

    <tr>
      <td>
        loan.cancelled
      </td>

      <td>
        The loan has been cancelled by the user, typically during the analysis or after the preapproval
      </td>
    </tr>

    <tr>
      <td>
        loan.ready_to_sign
      </td>

      <td>
        All evidences of the preapproved loan have been successfully reviewed, and the user(s) can sign their loan contract online
      </td>
    </tr>

    <tr>
      <td>
        loan.ready_to_grant
      </td>

      <td>
        The 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._
      </td>
    </tr>

    <tr>
      <td>
        loan.granted
      </td>

      <td>
        The 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
      </td>
    </tr>

    <tr>
      <td>
        loan.withdrawn
      </td>

      <td>
        The 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
      </td>
    </tr>
  </tbody>
</Table>

### Loan  application lifecycle

<Image align="center" border={true} src="https://files.readme.io/6b9e4e9085a8aecd9b5d7f5aae80f4edfaf5c76a16500f0b30eafcaf7d0e9c4c-image.png" className="border" />