Notification Callbacks
MiFinity sends HTTP JSON notification callbacks to confirm transaction status changes. Use these callbacks as the definitive indication of whether a payment succeeded or failed.
Callback Triggers
Callbacks fire when a transaction reaches one of these statuses:
| Status | Description |
|---|---|
| SUBMITTED | The movement of funds has been initiated |
| PROCESSED BY ACQUIRER | The acquirer has confirmed the transaction (typically next day) |
| REJECTED | The transaction was rejected |
Successful transactions generate two callbacks. The first fires when the status changes to SUBMITTED. The second fires the next day during reconciliation when the status updates to PROCESSED BY ACQUIRER.
Endpoint Setup
Provide your callback endpoint URLs (for both DEMO and PROD) to the integration team at [email protected].
You have two options for endpoint design:
- Single endpoint — Receive all callbacks at one URL and differentiate success/failure in your internal logic
- Separate endpoints — Specify a different URL for each callback status
Your endpoint must return HTTP status 200 with no response body.
Callback Payload
{
"postedOn": null,
"money": {
"amount": 10,
"currency": "EUR",
"presentationAmount": "EUR10.00"
},
"source": "5001000001212099",
"destination": "EE bank",
"description": "test EE success",
"transactionStatus": 3,
"transactionStatusDescription": "Submitted",
"traceId": "ce1035ae-ffc8-4ab4-8493-4ef7ef5b546e",
"transactionReference": "3f57cb79-0707-4249-924a-15780a3f930e",
"eventTypeDescription": "Pay Any Bank",
"createdOn": "2023-10-10T14:33:37.412Z",
"arn": null,
"paymentCategoryType": "GAMING_PAYOUT",
"externalReference": "P2100CVTHJ",
"sourceEmail": null,
"merchantCompanyName": "MiFinity",
"additionalInfo": null,
"errorMessage": null
}{
"postedOn": null,
"money": {
"amount": 10,
"currency": "GBP",
"presentationAmount": "GBP10.00"
},
"source": "5001000001212099",
"destination": "XXXXX100",
"description": "test GB success",
"transactionStatus": 5,
"transactionStatusDescription": "Processed by acquirer",
"traceId": "21d1490b-0764-424e-8e31-1f2a17d72088",
"transactionReference": "82dcb6d9-6ada-4c20-9d77-168b6938995e",
"eventTypeDescription": "Pay Any Bank",
"createdOn": "2024-02-12T10:58:56.594Z",
"arn": null,
"paymentCategoryType": "GAMING_PAYOUT",
"externalReference": "3985217",
"sourceEmail": null,
"merchantCompanyName": "MiFinity",
"additionalInfo": null,
"errorMessage": null
}| Field | Type | Description |
|---|---|---|
| postedOn | String | Default value: null |
| money | Object | Containing amount (Decimal), currency(String) and presentationAmount(String) |
| source | String | Source Account Number |
| destination | String | Destination Account Number |
| transactionStatus | Integer | Transaction status |
| description | String | Description for this transaction |
| transactionStatusDescription | String | RECEIVED(1), INTERNAL_ERROR(2), SUBMITTED(3), PROCESSED_BY_ACQUIRER(5), REJECTED(6), IN_PROGRESS(7) and ON_HOLD_KYC(8) |
| traceId | String | Trace id of original request |
| transactionReference | String | Transaction reference |
| eventTypeDescription | String | PayMyCard, PayAnyCard, PayAnyBank, Account to Account Transfer, Coupon Transfer |
| createdOn | DataTime | Date Time for the transaction |
| paymentCategoryType | String | Containing the category type |
Note: Please ignore any additional fields passed within this response.
Updated about 14 hours ago