Callbacks

MEO Wallet notifies you of changes in the status of a transaction via callbacks to your site. The callback endpoint for your site is configured on the merchant backoffice in the Edit Wallet section (this endpoint must be https in production environment).

When MEO Wallet POSTs a Callback to your endpoint as in this example

POST /api/wallet_callback HTTP/1.1
Connection: close Te
Content-type: application/json
Te: trailers
Content-length: 263
Referer: http://xxxxxx.xxxxxx.xx.sapo.pt/api/pay_callback
Host: xxxxxx.xxxxxx.xx.sapo.pt
Authorization: Basic
{
    "amount": 35,
    "create_date": "2025-07-13T20:06:08+0000",
    "currency": "EUR",
    "event": "COMPLETED",
    "ext_customerid": "00001",
    "ext_email": "noreply@sapo.pt",
    "ext_invoiceid": "38440200100",
    "method": "WALLET",
    "modified_date": "2025-07-13T20:06:08+0000",
    "operation_id": "e30e26ce-0000-0000-0000-a41b23f1d7e1",
    "operation_status": "COMPLETED",
    "user": "237",
}

you should take the structure verbatim and post it back to

POST /api/v2/callback/verify HTTP/1.1

which will tells you if it’s a valid callback by responding with status 200 OK and a single field “true” on the body. If the callback is not valid verify answers 400 Bad Request and a single field “false” on the body.

This is done to ensure a fraudster isn’t sending you spoofed callbacks. Verifying the callback also serves the purpose of telling MEO Wallet the callback is well received by your site.

The purpose of this three way handshake protocol is to make sure both sides are synchronized so in some cases MEO Wallet may resend a callback to make sure it is received. Your callback endpoint should take this into account and make sure it’s not repeating action it shouldn’t repeat.

Time dependent flows

If your platform makes decisions based on payment status such as timing out an order you should GET checkout to make sure you have the most up to date status. Keep in mind callback delivery depends on a number of factors including network connectivity so explicitly connecting to our platform makes sure you have correct information.

Resyncronization flows

In case of unavailability on your side MEO Wallet tries to deliver callbacks to your platform for about 2 days using an exponential backoff strategy. If you have a long outage or need to resynchronize quickly after an outage the preferred method is calling GET operations and iterating the list.

Polling workflows

Some systems require synchronous workflows or are designed to poll external systems instead of being event driven. In that case you can call GET checkout which will tell you the current status of your checkouts. This method is discouraged as it can generate a large number of API calls and cause your application to be throttled by MEO Wallet. Please contact us to validate your architecture if you have strong requirements to poll checkout status.