In this section you find the reference for the MEO Wallet resources and actions you can use to manipulate them. The resource structure generally follow the /collection, /collection/itemid pattern.
Operations represent financial transaction on wallets.
Authorizations allow you to allocate a given amount to be captured later. Currently, only credit card transactions can be used with this concept.
Creates a new payment checkout.
Request | POST /api/v2/checkout |
---|---|
Query params | none |
Data params | Checkout |
Returns | Checkout |
curl -X POST https://services.wallet.pt/api/v2/checkout \
-H "Content-Type: application/json" \
-H "Authorization: WalletPT 7a0eb41208209639eda9bf765b6cb04d59fb9e34" \
-d '{
"payment": {
"amount": 10,
"client": {
"address": {
"address": "some street",
"city": "lisboa",
"country": "pt",
"postalcode": "1100-000"
},
"email": "foo@bar.com",
"name": "some name"
},
"currency": "EUR",
"items": [
{
"descr": "Um livro",
"name": "Livro",
"qt": 1,
"ref": 123
}
]
},
"url_cancel": "https://example.com/shop/cancel",
"url_confirm": "https://example.com/shop/confirm"
}'
{
"id": "bc9b5078-3cc1-447b-bbb6-43815aeb8006",
"url_confirm": "https://example.com/shop/confirm?checkoutid=bc9b5078-3cc1-447b-bbb6-43815aeb8006",
"url_cancel": "https://example.com/shop/cancel?checkoutid=bc9b5078-3cc1-447b-bbb6-43815aeb8006",
"exclude": [],
"payment": {
"currency": "EUR",
"ipaddress": "127.0.0.1",
"type": "PAYMENT",
"channel": "WEBSITE",
"items": [
{
"descr": "Um livro",
"ref": 123,
"name": "Livro",
"qt": 1
}
],
"refundable": false,
"fee": 0,
"amount": 10,
"amount_net": 10,
"client": {
"name": "some name",
"email": "foo@bar.com",
"address": {
"address": "some street",
"city": "lisboa",
"postalcode": "1100-000",
"country": "pt"
}
},
"merchant": {
"id": 73,
"name": "Produção de Electrónica e Software",
"email": ""
},
"date": "2025-07-13T20:06:08+0000",
"date": "2025-07-13T20:07:04+0000",
"status": "NEW"
},
"url_redirect": "https://www.wallet.pt/checkout/bc9b5078-3cc1-447b-bbb6-43815aeb8006"
}
If your checkout has the MB payment method available and you need a very limited duration (less than a day) for your payment, you can pass a special flag named instant
in the “payment” object.
The expires
field is mandatory and has to be a date in the future.
You can pass a request_id to track this request. Check the Idempotency page.
Creates a new authorization checkout.
This request is similar to the described above. The main difference is the usage of a structure called “authorization” instead of “payment”. This object inherits all properties from the “payment” object.
Note: The optional field “expires” defines the date until the authorization is valid to be accepted. All subsequent requests (captures and releases) have the “expires” modified to the authorization date plus 1 month.
Redirect your customer to the redirect_url
to accept the authorization. Then, you can capture the amount using the authorization id (inside the structure «authorization» of the checkout response).
Request | POST /api/v2/checkout |
---|---|
Query params | none |
Data params | Authorization |
Returns | Authorization |
curl -X POST https://services.wallet.pt/api/v2/checkout \
-H "Content-Type: application/json" \
-H "Authorization: WalletPT 7a0eb41208209639eda9bf765b6cb04d59fb9e34" \
-d '{"authorization": {
"amount": 10,
"client": {
"address": {
"address": "some street",
"city": "lisboa",
"country": "pt",
"postalcode": "1100-000"
},
"email": "foo@bar.com",
"name": "some name"
},
"currency": "EUR",
"items": [
{
"descr": "Um livro",
"name": "Livro",
"qt": 1,
"ref": 123
}
]
},
"url_cancel": "https://example.com/shop/cancel",
"url_confirm": "https://example.com/shop/confirm"
}'
{
"id": "48e8e52b-3a71-41cc-802e-d3e3b4ec3c12",
"url_confirm": "https://example.com/shop/confirm?checkoutid=48e8e52b-3a71-41cc-802e-d3e3b4ec3c12",
"url_cancel": "https://example.com/shop/cancel?checkoutid=48e8e52b-3a71-41cc-802e-d3e3b4ec3c12",
"exclude": [
"MB",
"WALLET"
],
"shipping": false,
"url_redirect": "https://wallet.pt/checkout/48e8e52b-3a71-41cc-802e-d3e3b4ec3c12",
"authorization": {
"currency": "EUR",
"ipaddress": "10.188.160.1",
"type": "AUTH",
"channel": "WEBSITE",
"modified_date": "2022-06-23T18:30:15+0000",
"notes": "",
"user_notes": "",
"items": [
{
"descr": "Um livro",
"ref": 123,
"name": "Livro",
"qt": 1
}
],
"refundable": false,
"fee": 0,
"amount": 10,
"amount_net": 10,
"client": {
"name": "some name",
"email": "foo@bar.com",
"address": {
"address": "some street",
"city": "lisboa",
"postalcode": "1100-000",
"country": "pt"
}
},
"date": "2022-06-23T18:30:15+0000",
"id": "f7229128-ccca-4950-91fb-82971cb98ebb",
"status": "NEW"
}
}
A callback will be sent in case of failure or success with a reference to the created checkout (checkout_id) and type of operation. In this case is “AUTH”.
You can pass a request_id to track this request. Check the Idempotency page.
Gets the current status of a checkout process
Request | GET /api/v2/checkout/id |
---|---|
Query params | checkout id |
Data params | none |
Returns | Checkout |
curl https://services.wallet.pt/api/v2/checkout/3899451d-0249-4745-bcd0-434177c76077 \
-H "Authorization: WalletPT 7a0eb41208209639eda9bf765b6cb04d59fb9e34" \
-H "Content-Type: application/json"
{
"id": "bc9b5078-3cc1-447b-bbb6-43815aeb8006",
"url_confirm": "https://example.com/shop/confirm?checkoutid=bc9b5078-3cc1-447b-bbb6-43815aeb8006",
"url_cancel": "https://example.com/shop/cancel?checkoutid=bc9b5078-3cc1-447b-bbb6-43815aeb8006",
"exclude": [],
"allows_punch_card_stamp": false,
"payment": {
"card": {
"token": "B9AD740A-0ACA-11E4-BFDA-4790417D17DF",
"last4": "1111",
"type": "visa",
"valdate": "12/2025",
"expired": false
},
"currency": "EUR",
"id": "6c39dc2a-37eb-4ed1-8416-77e8044f7673",
"ipaddress": "127.0.0.1",
"type": "PAYMENT",
"channel": "WEBSITE",
"items": [
{
"descr": "Um livro",
"ref": "123",
"name": "Livro",
"qt": 1
}
],
"refundable": false,
"fee": 0,
"amount": 10,
"amount_net": 9.75,
"client": {
"name": "some name",
"email": "foo@bar.com",
"address": {
"address": "some street",
"city": "lisboa",
"postalcode": "1100-000",
"country": "pt"
}
},
"merchant": {
"id": 73,
"name": "Produção de Electrónica e Software",
"email": ""
},
"date": "2025-07-13T20:06:08+0000",
"modified_date": "2025-07-13T20:06:08+0000",
"method": "CC",
"status": "COMPLETED"
},
"url_redirect": "https://www.wallet.pt/checkout/bc9b5078-3cc1-447b-bbb6-43815aeb8006"
}
Note: If your checkout is of the type “authorization”, a structure named “authorization” will be returned instead.
Destroys an ongoing checkout. This will only succeed if the customer hasn’t chosen any payment method yet. If you want to refund an existing payment see operations/refund.
Request | DELETE /api/v2/checkout/id |
---|---|
Query params | checkout id |
Data params | none |
Returns | Checkout |
curl -X DELETE https://services.wallet.pt/api/v2/checkout/7abe0916-4253-46c0-977d-35c19686107c \
-H "Content-Type: application/json" \
-H "Authorization: WalletPT 7a0eb41208209639eda9bf765b6cb04d59fb9e34"
{
"id":"7abe0916-4253-46c0-977d-35c19686107c",
"url_confirm":"https://example.com/shop/confirm?checkoutid=7abe0916-4253-46c0-977d-35c19686107c",
"url_cancel":"https://example.com/shop/cancel?checkoutid=7abe0916-4253-46c0-977d-35c19686107c",
"exclude":[],
"payment":{
"currency":"EUR",
"type":"PAYMENT",
"status":"VOIDED",
"notes":"",
"items":[{
"descr":"Um livro",
"ref":"123",
"name":"Livro",
"qt":1
}],
"fee":0,
"amount":10,
"amount_net":10,
"merchant":{
"id":237,
"name":"My shop",
"email":""
},
"date":"2025-06-06T16:36:40+0000",
"modified_date":"2025-06-06T16:36:40+0000"
},
"url_redirect":"http://wallet.pt/checkout/7abe0916-4253-46c0-977d-35c19686107c"
}
Lists the payment methods active for this wallet.
Request | GET /api/v2/wallets/methods |
---|---|
URL params | none |
Data params | none |
Returns | methods array in JSON object |
curl https://services.wallet.pt/api/wallets/methods \
-H "Authorization: WalletPT 7a0eb41208209639eda9bf765b6cb04d59fb9e34"
{
"methods": [
"CC",
"MB",
"WALLET"
]
}
Gives you a payment button ready to include in an img tag. Can be configured with payment methods retrieved with wallets/methods and various styling options.
Request | GET /api/v2/wallets/methods |
---|---|
URL params | methods, style, culture, type |
Data params | none |
Returns | image |
Style | When to use |
---|---|
REGULAR | Default web page styles |
WHITE | White button with transparency for dark backgrounds |
LIGHT | Filled button with light transparency |
DARK | Filled button with transparency for dark backgrounds |
Culture | Result |
---|---|
PT | Button labels in portuguese |
EN | Button labels in english |
Type | Label |
---|---|
BUY | Buy / Comprar |
CONFIRM | Confirm / Confirmar |
CONTINUE | Continue / Continuar |
PAYMENT | Payment / Pagamento |
PURCHASE | Purchase / Pagar |
Example
https://services.wallet.pt/api/v2/anon/images/button?methods=CC,MB&style=light&culture=pt&type=purchase
Gives you a “secure payment banner” suitable for inclusion on your website footer. Provided in the form of an easy inclusion Javascript tag which generates a DIV container.
<script type="text/javascript"
src="https://static.wallet.pt/assets/cache/js/MEOWalletBadges.js"
data-meowallet-badge
data-style="(regular|light|dark)"
data-methods="(CC|MB|WALLET)"
data-culture="(pt|en)"></script>
Example
<script type="text/javascript" src="https://static.wallet.pt/assets/cache/js/MEOWalletBadges.js" data-meowallet-badge data-style="regular" data-methods="CC,MB" data-culture="en"></script>
generates