Cards & Wallets · PaySuite payment page

Pay by Link (EmailPay)

Pay by Link — also known as EmailPay — provides you with the ability to configure a payment or payout request and create a unique and secure URL, that can be sent to your customer, initiating a hosted session. Custom Skins can also be used in conjunction with Pay by Link. Please refer to the Customising the payment page section for further information. This feature can be used by either using the API described below or by using the UI we provide. Depending on your configuration, a single link may allow the customer to pay using card, Apple Pay, Google Pay, PayPal or Pay by Bank, and you’re also able to limit the payment method options if needed.

The first step to processing a Pay by Link transaction is to submit an issue request via our API which can additionally be processed with 3D Secure. Configuring your account for 3D Secure can be performed at boarding or at a later date.

In response to a Pay by Link Single Link issue request for a payment or payout, a single URL is returned. In the case of a Pay by Link Batch issue request a batch of payment or payout URLs is returned. You can then use the returned URL(s) to present to the customer(s), via any electronic means including email, SMS, chat facilities and social media.

When creating payout links that require a saved payment method such as a stored card, there can be no guarantee that the payment method still exists or is valid at the time the payout link is activated. Visiting a payout link that requires a saved payment method, when there is none, will show an error page.

Issue a single payment or payout link. The response contains the URL to present to your customer, along with the id you can use to cancel it later.

API examples
Creating a Payment Link with an Expiry date
EndpointDefinition
POST /smartlink/links/{instId}/payment
Request body
{
  "smartLink": {
    "expires": "2025-12-24T12:15:00.000+00:00"
  },
  "transaction": {
    "merchantReference": "mer_txn_1234556",
    "money": {
      "currency": "GBP",
      "amount": {}
    },
    "description": "some transaction description",
    "commerceType": "ECOM"
  }
}
cURL
curl -X POST "{targetEnvironmentPath}/smartlink/links/{instId}/payment" \
  -u "{apiUser}:{apiPassword}" \
  -H "Content-Type: application/json" \
  -d '{
  "smartLink": {
    "expires": "2025-12-24T12:15:00.000+00:00"
  },
  "transaction": {
    "merchantReference": "mer_txn_1234556",
    "money": {
      "currency": "GBP",
      "amount": {}
    },
    "description": "some transaction description",
    "commerceType": "ECOM"
  }
}'
Response
HTTP/1.1 201

{
  "smartLinkResponseDetail": {
    "expires": "2022-12-24T12:15:00.000+0000",
    "usage": "SINGLE",
    "status": "ACTIVATED",
    "link": "https://s.mite.pay360.com/a/X_HrVFwx8_A",
    "linkId": "52aef20c-6b53-4491-ad5d-08c25e681af0"
  },
  "status": "SUCCESS",
  "reasonCode": "S100",
  "reasonMessage": "SmartLink created"
}
Creating a Payout Link with an Expiry date
EndpointDefinition
POST /smartlink/links/{instId}/payout
Request body
{  

   "smartLink": {
     "expires": "2025-12-24T12:15:00.000+00:00"
    },
    "transaction": {
        "merchantReference": "mer_txn_1234556",
        "money": {
            "currency": "GBP",
            "amount": {
                "fixed": 10.99
            }
        },
        "commerceType": "ECOM",
        "description": "SmartLink Payout"
    },
    "session": {
        "returnUrl": {
            "url": "http://www.example.com/return"
        },
        "cancelUrl": {
            "url": "http://www.example.com/cancel"
        }
    },
    "features": {
        "newAccountPayoutEnabled": true
    }
}
cURL
curl -X POST "{targetEnvironmentPath}/smartlink/links/{instId}/payout" \
  -u "{apiUser}:{apiPassword}" \
  -H "Content-Type: application/json" \
  -d '{  

   "smartLink": {
     "expires": "2025-12-24T12:15:00.000+00:00"
    },
    "transaction": {
        "merchantReference": "mer_txn_1234556",
        "money": {
            "currency": "GBP",
            "amount": {
                "fixed": 10.99
            }
        },
        "commerceType": "ECOM",
        "description": "SmartLink Payout"
    },
    "session": {
        "returnUrl": {
            "url": "http://www.example.com/return"
        },
        "cancelUrl": {
            "url": "http://www.example.com/cancel"
        }
    },
    "features": {
        "newAccountPayoutEnabled": true
    }
}'
Response
HTTP/1.1 201

{
  "smartLinkResponseDetail": {
    "expires": "2022-12-24T12:15:00.000+0000",
    "usage": "SINGLE",
    "status": "ACTIVATED",
    "link": "https://s.mite.pay360.com/a/X_HrVFwx8_A",
    "linkId": "b4560fb2-fc18-4033-9505-08708b1788b1"
  },
  "status": "SUCCESS",
  "reasonCode": "S100",
  "reasonMessage": "SmartLink created"
}

Issue up to 500 links in one request using batchSize. Every link in the batch shares the same transaction details and expiry date, and each one is returned with its own linkId.

API examples
Creating a Batch of Payment Links with a single Expiry Date
EndpointDefinition
POST /smartlink/links/{instId}/batch/payment
Request body
{
  "smartLink": {
    "expires": "2025-12-24T12:15:00.000+00:00"
  },
  "transaction": {
    "merchantReference": "mer_txn_1234556",
    "money": {
      "currency": "GBP",
      "amount": {}
    },
    "description": "some transaction description",
    "commerceType": "ECOM"
  },
  "batchSize": 3

}
cURL
curl -X POST "{targetEnvironmentPath}/smartlink/links/{instId}/batch/payment" \
  -u "{apiUser}:{apiPassword}" \
  -H "Content-Type: application/json" \
  -d '{
  "smartLink": {
    "expires": "2025-12-24T12:15:00.000+00:00"
  },
  "transaction": {
    "merchantReference": "mer_txn_1234556",
    "money": {
      "currency": "GBP",
      "amount": {}
    },
    "description": "some transaction description",
    "commerceType": "ECOM"
  },
  "batchSize": 3

}'
Response
HTTP/1.1 201

{
  "smartLinkResponseDetail": {
    "expires": "2020-12-24T12:15:00.000+0000",
    "usage": "SINGLE",
    "status": "ACTIVATED",
    "links": [
      {
        "linkId": "f5bb6bd2-9a22-43f3-b881-d912fef8d1ae",
        "link": "https://s.mite.pay360.com/a/X_HrVFwx8_A_1"
      },
      {
        "linkId": "f8bd586d-5b1d-4b78-bee0-a9479b6fa14f",
        "link": "https://s.mite.pay360.com/a/X_HrVFwx8_A_2"
      },
      {
        "linkId": "dc3a77ef-24c5-4c98-866d-58799deab378",
        "link": "https://s.mite.pay360.com/a/X_HrVFwx8_A_3"
      }
    ]
  },
  "status": "SUCCESS",
  "reasonCode": "S100",
  "reasonMessage": "SmartLink batch created"
}
Creating a Batch of Payout Links with a single Expiry Date
EndpointDefinition
POST /smartlink/links/{instId}/batch/payout
Request body
{
    "transaction": {
        "merchantReference": "mer_txn_1234556",
        "money": {
            "currency": "GBP",
            "amount": {
                "fixed": 10.99
            }
        },
        "commerceType": "ECOM",
        "description": "SmartLink Payout"
    },
    "session": {
        "returnUrl": {
            "url": "http://www.example.com/return"
        },
        "cancelUrl": {
            "url": "http://www.example.com/cancel"
        }
    },
    "features": {
        "newAccountPayoutEnabled": true
    },
    "batchSize": 3
}
cURL
curl -X POST "{targetEnvironmentPath}/smartlink/links/{instId}/batch/payout" \
  -u "{apiUser}:{apiPassword}" \
  -H "Content-Type: application/json" \
  -d '{
    "transaction": {
        "merchantReference": "mer_txn_1234556",
        "money": {
            "currency": "GBP",
            "amount": {
                "fixed": 10.99
            }
        },
        "commerceType": "ECOM",
        "description": "SmartLink Payout"
    },
    "session": {
        "returnUrl": {
            "url": "http://www.example.com/return"
        },
        "cancelUrl": {
            "url": "http://www.example.com/cancel"
        }
    },
    "features": {
        "newAccountPayoutEnabled": true
    },
    "batchSize": 3
}'
Response
HTTP/1.1 201

{
  "smartLinkResponseDetail": {
    "usage": "SINGLE",
    "status": "ACTIVATED",
    "links": [
      {
        "linkId": "23876105-112a-4bd3-a5f4-d549bd6ffb73",
        "link": "https://s.mite.pay360.com/a/X_HrVFwx8_A_1"
      },
      {
        "linkId": "4167174d-6082-44bc-be1e-893529802245",
        "link": "https://s.mite.pay360.com/a/X_HrVFwx8_A_2"
      },
      {
        "linkId": "cbb2d759-e463-4167-ae6a-4ac8d21da247",
        "link": "https://s.mite.pay360.com/a/X_HrVFwx8_A_3"
      }
    ]
  },
  "status": "SUCCESS",
  "reasonCode": "S100",
  "reasonMessage": "SmartLink batch created"
}

If you don’t want to continue with an authorisation and want to cancel the link before your customer reaches the payment page, you can do so using the cancel request. This will then prevent the link from being accessed by your customer at any time.

API example
Cancel a link
EndpointDefinition
POST /smartlink/links/{linkId}/cancel
Request body
{}
cURL
curl -X POST "{targetEnvironmentPath}/smartlink/links/{linkId}/cancel" \
  -u "{apiUser}:{apiPassword}" \
  -H "Content-Type: application/json" \
  -d '{}'
Response
HTTP/1.1 200

{
  "smartLinkResponseDetail": {
    "expires": "2025-12-24T12:15:00.000+0000",
    "usage": "SINGLE",
    "status": "CANCELLED",
    "link": "http://www.example.com/smartlink/52aef20c-6b53-4491-ad5d-08c25e681af0",
    "linkId": "52aef20c-6b53-4491-ad5d-08c25e681af0"
  },
  "status": "SUCCESS",
  "reasonCode": "S100",
  "reasonMessage": "SmartLink cancelled"
}

You can also retrieve links previously created, using our API. This will provide you with the link URL and status.

API example
Retrieve a link
EndpointDefinition
GET /smartlink/links/{linkId}
Request body
{}
cURL
curl -X GET "{targetEnvironmentPath}/smartlink/links/{linkId}" \
  -u "{apiUser}:{apiPassword}" \
  -H "Content-Type: application/json"
Response
HTTP/1.1 200

{
  "smartLinkResponseDetail": {
    "expires": "2025-12-24T12:15:00.000+0000",
    "usage": "SINGLE",
    "status": "CANCELLED",
    "link": "http://www.example.com/smartlink/52aef20c-6b53-4491-ad5d-08c25e681af0",
    "linkId": "52aef20c-6b53-4491-ad5d-08c25e681af0"
  },
  "status": "SUCCESS",
  "reasonCode": "S100",
  "reasonMessage": "SmartLink retrieved"
}