API Resources

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.

/api/v2/checkout

Create payment

Creates a new payment checkout.

Request POST /api/v2/checkout
Query params none
Data params Checkout
Returns Checkout
Click here for an example
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"
}'
Returns
{
    "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.

Create authorization

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
Click here for an example
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"
}'
Returns
{
    "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.

Get checkout

Gets the current status of a checkout process

Request GET /api/v2/checkout/id
Query params checkout id
Data params none
Returns Checkout
Click here for an example
  curl 	https://services.wallet.pt/api/v2/checkout/3899451d-0249-4745-bcd0-434177c76077 \
  -H "Authorization: WalletPT 7a0eb41208209639eda9bf765b6cb04d59fb9e34" \
  -H "Content-Type: application/json"
Returns after a successful payment:
{
    "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.

Delete checkout

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
Click here for an example
  curl -X DELETE https://services.wallet.pt/api/v2/checkout/7abe0916-4253-46c0-977d-35c19686107c \
  -H "Content-Type: application/json" \
  -H "Authorization: WalletPT 7a0eb41208209639eda9bf765b6cb04d59fb9e34"
Returns
  {
	"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"
  }

/api/v2/wallets/methods

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
Click here for an example
  curl https://services.wallet.pt/api/wallets/methods \
  -H "Authorization: WalletPT 7a0eb41208209639eda9bf765b6cb04d59fb9e34"
  
Returns
{
    "methods": [
        "CC",
        "MB",
        "WALLET"
    ]
}

/api/v2/anon/images/button

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

Payment button

/api/v2/anon/images/banner

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