Creating Paylinks

Learn how to use our API to generate Paylinks to send to your customers

Overview

Creating a Paylink starts with you providing customer and order details to Skipify via a POST to create a Paylink. You can then use the Sending Paylinks call to have Skipify send the Paylink via email or SMS to the Shopper. Alternatively, Skipify provides in the response payload a URL that you can send to your customer using whatever mechanism you may already have in place.

When the Shopper visits the Paylink URL, they will be taken to a dedicated, one-time checkout experience hosted by Skipify. This checkout experience will include the line items and charges that you passed in your Payment Request API call including subtotals, shipping, taxes, and order total.

📘

Reminder: Delivery Options

If you want to take advantage of Paylinks with text and email delivery, you will need to set sendEmail or sendSms to true when creating a PayLink. The Send Paylinks endpoint will be used to send the link via email and/or SMS.

API Request

👍

This endpoint uses API Key Authentication

Check out our API KEY Authentication Section to learn more

To create a payment request, send an API call to:

Staging:POST https://paylinks.staging.skipify.com

Production:POST https://paylinks.skipify.com

Request Body Parameters

Parameter Name

Required?

Type

Description

merchantId

yes

string

A unique identifier that Skipify assigns to the merchant and is the account that the Paylink will be created for.

merchantInvoiceId

no

string

A unique identifier that’s applicable to your systems. This identifier will not be visible to the customer. It can be used for your reference to link a Skipify order to a record in your systems. Max 255 char.

customer

no

object, nullable

The customer object includes a set of properties that are required if you use Skipify to send the SMS or Email.

memo

no

string

A generic field to allow you to add more information on the specific usage of this Paylink. This will be displayed to the customer.

description

no

string

A generic field to allow you to add more information on the specific usage of this Paylink. This will be displayed to the customer. Max 255 ch.

currencyCode

no (DEPRECATED)

string

3 letter code to identify the currency. USD or CAD. Please check with your Implementation engineer to confirm if you are able to support CAD in addition to USD.

sendEmail

yes

boolean

This field is used if you are planning on using Skipify to deliver the link to the customer via email. If set to true, the email in the customer block is required.

sendSms

yes

boolean

This field is used if you are planning on using Skipify to deliver the link to the customer via text. If set to true, the phone in the customer block is required.

customerConsent

conditional

boolean

This field must be set to True if either sendEmail or sendSms is True. The flag is to ensure that the customer consented to receive the link.

shipping

no

integer, nullable

This is the amount of shipping for the Paylink. The last two digits are cents, so $20.50 would be sent as 2050.

tax

no

integer, nullable

This is the amount of tax for the Paylink. The last two digits are cents, so $20.50 would be sent as 2050.

lineItems

yes

array

These are the individual items you would like to show the customer as a part of their checkout. You may pass a max of 50 items in a single request.

expiration

no

dateTime, string, nullable

This is an optional parameter you can use to set an expiry on the Paylink, specified in UTC.

Use the format:
yyyy-MM-ddTHH:mm:ss.SSSZ

Ex:
2022-06-02T21:48:02Z

metadata

no

Object, nullable

You can use this parameter to attach key-value data (string, string) to your API call. The purpose of this parameter is to allow you to store additional, structured information to your Paylink.

We allow for up to 10 keys, with names up to 40 characters and values up to 100 characters

Be sure to not include any personally identifiable information here!

String, boolean, or number allowed as values.

enableRecurring

no

boolean

This field is used if you are planning on using Skipify to setup recurring charges. If set to true, the customer will be notified during checkout that their selected payment method can be used for recurring charges.

recurringChargeConsent

no

boolean

This field is used if you are planning on using recurring charges and would like to track the customer consent choice.

Line Items

The lineItems array is required to be included in your request body, in order to pass a price and quantity of items the customer is purchasing. The customer will see a list of items included in the Payment Request in the Order Summary portion of the Skipify experience.

Line Item Parameters

Parameter Name

Required?

Type

Description

sku

yes

string

The merchant's product identifier of the item. This is not visible to the customer. Max 255 char.

quantity

no

integer

The quantity of the item being sold. If null, this is defaulted to 1.

price*

yes

integer

The price of the item. The last two digits are cents, so $20.50 would be sent as 2050.

  • If you want to add a Discount to a Paylink, pass a negative 'price' ie. '-250' and an appropriate 'description'

description

no

string

The description of the item being sold. This will be displayed to the customer.
Examples: Anchovy Pizza, New Balance 650, etc. Max 255 char.

category

no

string

The category of the product or service being sold for the merchant's own tracking purposes. This is not visible to the customer.

metadata

no

Object, nullable

You can use this parameter to attach key-value data (string, string) to your API call. The purpose of this parameter is to allow you to store additional, structured information to your Paylink.

We allow for up to 10 keys, with names up to 40 characters and values up to 100 characters

Be sure to not include any personally identifiable information here!

String, boolean, or number allowed as values.

📘

Note

Line items will be used to calculate the subtotal

Customer

Customer Parameters

Parameter NameRequired?TypeDescription
emailconditionalstringThe customer email will be used to search the user in our systems. If recognized, their saved payment methods will be surfaced within the Paylink checkout experience.
phoneconditionalstringThe customer phone number will be used to pre-populate the checkout experience if a phone number is not available in our systems.
firstNamenostringThe customer's first name
lastNamenostringThe customer's last name
customerIdnoUUIDThe customer's unique identifier. When provided, no other fields can be included in the customer object

Request Body Example

{
 "merchantId": "string",
  "merchantInvoiceId": "string",
  "customer": {
    "email": "[email protected]",
    "phone": "4141322098",
    "firstName": "string",
    "lastName": "string"
  },
  "customerConsent":true,
  "memo": "string",
  "description": "string",
  "sendEmail": true,
  "sendSms": true,
  "shipping": 0,
  "tax": 0,
  "lineItems": [
    {
      "sku": "string",
      "quantity": 1,
      "price": 1,
      "description": "string",
      "category": "string",
      "metadata": {
        "additionalProp1": {}
      }
    }
  ],
  "expiration": "2028-08-10T21:38:00.784Z",
  "metadata": {
    "additionalProp1": {}
  },
  "enableRecurring": false
}

API Response

Skipify sends a URL in the response payload where your customers/clients can view and fulfill the Paylink request. You can send this URL to your customer using whatever mechanism best fits your business and use case. The response will include all values populated in the request with the following additional fields:

Parameter Name

Type

Description

paylinkId

string

Skipify’s unique identifier for the Paylink. This ID will be needed to use the other endpoints.

link

string (url)

What we all came here for! This is the URL that you will use to forward to your customers.

Do what you like with this URL, it can be embedded as-is, and can be converted into a QR code.

shortLink

string (url)

A Skipify generated Short Link that you can use instead of the link to forward to your customers if you deliver the Paylink yourself.

merchantInvoiceId

string

A unique identifier that you send with the request is returned in the response. This identifier will not be visible to the customer. It can be used for your reference to link a Skipify order to a record in your systems. Max 255 char.

currencyCode

string

USD or CAD only today

merchantId

string

The merchantId that this Paylink was created for

metadata

object

If sent in the request, will be returned in the response

description

string

The description sent with the Paylink create request. This will be displayed to the customer.

memo

string

The memo sent with the Paylink create request. This will be displayed to the customer.

orderId

string

will be Null upon Paylink Creation. OrderId is assigned to Paylink once Payment completed.

expiration

dateTime, string,

The expiration date/time of the Paylink that was set in the Request.
Ex:
2024-06-02T21:48:02Z

sendSMS

boolean

The boolean flag set on the request.

sendEmail

boolean

The boolean flag set on the request.

createdAt

dateTime, string

The date/time the Paylink was created at in UTC

updatedAt

dateTime, string

The date/time the Paylink was updated in UTC

customerConsent

boolean

The boolean flag set in the request, must be true to send

tax

integer

Amount of tax sent for the Paylink

shipping

integer

Amount of shipping sent for the Paylink

subTotal

integer

Total price of lineItems and lineItems tax

total

integer

Total price of lineItems, shipping (if passed), and tax (if passed)

orderTotal

integer

The total plus any fees applied during payment

approvedAmount

integer

The amount that was approved for during payment

lastSentAt

dateTime, string

The last time the Paylink was sent to the customer

lineItems

array

These are the line items sent with the request. This object also returns:
'createdAt' - dateTime, string
'updatedAt' - dateTime, string

deliveryLogs

array

List of SMS and/or email delivery attempts

openOrders

array

List of orders that have been created for the Paylink

events

array

List of events associated with this Paylink, upon creation, eventType= CREATED

status

string

current status of Paylink, upon created status = CREATED

customer

object

Customer object sent with request

attachments

array

List of attachments file names if added to Paylink

enableRecurring

boolean

Whether or not the paylink was setup to prompt the customer for recurring charges during checkout

recurringMethodId

string

Payment method id for recurring payment if enableRecurring was set to true and Paylink was Paid,

Example

{
    "paylinkId": "string",
    "link": "string",
    "shortLink": "string",
    "merchantInvoiceId": "string",
    "currencyCode": "USD",
    "merchantId": "string",
    "metadata": null,
    "description": "string",
    "memo": "string",
    "orderId": null,
    "expiration": "2025-02-28T16:13:00.000Z",
    "sendSms": true,
    "sendEmail": true,
    "createdAt": "2024-04-19T16:22:00.599Z",
    "updatedAt": "2024-04-19T16:22:00.599Z",
    "customerConsent": true,
    "tax": null,
    "shipping": null,
    "subTotal": 1010,
    "total": 1010,
    "orderTotal": null,
    "approvedAmount": null,
    "lastSentAt": null,
    "lineItems": [
        {
            "paylinkItemId": "string",
            "sku": "123987ABCXYZ",
            "paylinkId": "string",
            "price": 1010,
            "quantity": 1,
            "tax": 0,
            "description": "Widget",
            "category": "Items",
            "metadata": null,
            "createdAt": "2024-04-19T16:22:00.599Z",
            "updatedAt": "2024-04-19T16:22:00.599Z"
        }
    ],
    "deliveryLogs": [],
    "openOrders": [],
    "events": [
        {
            "eventId": "string",
            "paylinkId": "string",
            "eventType": "CREATED",
            "oldValue": null,
            "newValue": null,
            "createdBy": "API Key",
            "createdAt": "2024-04-19T16:22:00.599Z"
        }
    ],
    "status": "CREATED",
    "customer": {
        "email": "[email protected]",
        "phone": "3333333333",
        "firstName": "first",
        "lastName": "last",
        "paylinkCustomerId": null
    },
    "attachments": [],
    "enableRecurring": true,
    "recurringMethodId": "string"
}

Skipify baner with link to contact us form