Use Case: Pay-by-Link

Problem

Activating a new customer policy is a cumbersome process that requires multiple document exchanges. This process is inefficient and creates operational pains for insurers.

However, insurers are still requesting potential policyholders to print, fill, sign, scan, and email back a form before actually selling the policy. The complexity and length of activating a policy increases the likelihood of customers postponing this time-consuming task, or even dropping it entirely.

Solution

With Duck Creek Payments' Pay-By-Link solution, policyholders take on average less than a minute to renew or activate their policies from the moment they receive the link. This is the most convenient and efficient way to onboard customers into a payment journey.

Pay-By-Link is a process through which a secure link is generated by Payments. Once generated, your system can send this link to your customers via SMS or Email. Once your customers click on it, they will be directed to a secure online payment page. There they are prompted to submit their payment details which takes less than five minutes. They do not have to go through lengthy website checkouts or messy document exchanges with you, saving their time and making them comfortable.

Prerequisites

In order to work with Pay-By-Link, ensure the following.

Supported Apps

  • Bank of America ACH Direct
  • BNZ (Cybersource)
  • BNZ File Transfer
  • Bottomline
  • Braintree
  • Checkout.com
  • Global Payments
  • GoCardless
  • NAB Direct Link
  • NAB Gateway
  • SIBS DPG
  • Stripe
  • Worldline Saferpay

Working with Pay-By-Link

Step 1: Authenticate

The first step to using the Payments API is to authenticate yourself by generating an Access Token. See Authenticate your API Requests for more information.

Step 2: Define Your Payment Intention

Create your Order and Instruction and make a call to the create-order endpoint. See Define your payment intention for more information.

POST URL OrderRequest Header SampleRequest Body Sample
Copy
Copied
https://sandbox-api.imbursepayments.com/v2/order-management
Copy
Copied
Authorization: Bearer {eyJhbGciOiJIUzI1N...9UAUBNuyPN6Xg}
x-account-id: 49bder42-90d9-46b1-b120-f6b347d621a0
x-tenant-id: 60452f48-5d48-4bc0-ab6f-5cr3ee411f63
Content-Type: application/json
Copy
Copied
{
	"orderRef": "order_pay_by_link",
	"instructions": [
		{
			"instructionRef": "inst_pay_by_link",
			"customerRef": "MEGHAN_002",
			"direction": "DEBIT",
			"financialInstrumentId": "",
			"amount": "120.00",
			"currency": "GBP",
			"country": "GB",
			"schemeId": "F65A71F4EDAFBBBA7EA87706CBA113C3",
              "settledByDate": "2023-06-01",
			"metadata": {
                "paymentDescriptorField1": "InsurancePaymentFor",
                "FieldValue": "June 2023"
              }
		}
	]
}

Step 3: Generate Pay-by-link Session

Copy the value of orderRef and instructionRef properties from Step 2: Define Your Payment Intention and use them to create the request body of the Whitelabel session token. Any of the whitelabel endpoints generate a link, so utilize the one that best suits your use case.

POST URL WhitelabelRequest Header SampleRequest Body Sample
Copy
Copied
https://sandbox-api.imbursepayments.com/v2/whitelabel-customer/session/checkout
Copy
Copied
Authorization: Bearer {eyJhbGciOiJIUzI1N...9UAUBNuyPN6Xg}
x-account-id: 49bder42-90d9-46b1-b120-f6b347d621a0
x-tenant-id: 60452f48-5d48-4bc0-ab6f-5cr3ee411f63
Content-Type: application/json
Copy
Copied
{
  "orderRef": "order-ref-123",
  "instructionRef": "instruction-ref-123",
  "expirySeconds": 500,
  "themeId": "be4bc9c1-c3fb-43c8-ab1a-908a86123682",
  "billingHouseNumber": "4",
  "billingStreet1": "Thing Mansions",
  "billingStreet2": "Somewhere St",
  "billingCity": "Placington",
  "billingState": "Hampshire",
  "billingCountry": "United Kingdom",
  "billingPostCode": "AB1 2CD",
  "customerEmail": "john.smith@example.com",
  "customerMobilePhone": "07123456789",
  "cardholderName": "MR J SMITH",
  "companyName": "Payments LLC",
  "customerType": "B2B",
  "authorizationSource": "WEB",
  "authorizationFrequency": "Monthly",
  "bankAccount": {
    "accountHolderName": "MR J SMITH",
    "number": "10001000",
    "extraCode": "100100"
  },
  "channels": [
    {
      "type": "Email",
      "destination": "an-email@duckcreek.com"
    }
  ]
}
After you have completed constructing the request body, make a call to the API endpoint. The response of this call will include a link property, which holds the secure payment link. Your system must send the link to your customer.

Copy
Copied
{
  "link": "https://checkout.imbursepayments.com?sessionToken=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb3JyZWxhdGlvbm...",
  "sessionToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb3JyZWxhdGlvbm...",
  "expires": 1641990742
}

Step 4: Check the payment status

After the Financial Instrument details of your customer has been submitted to Payments, Payments will communicate with the Payment Service Provider (PSP) to handle the transaction. You can check the status of the transaction by polling the APIs. Alternatively, you can also set up a Webhook to notify you every time the transaction status changes.

URL to GET SampleRequest Header SampleResponse Body Sample
Copy
Copied
https://sandbox-api.imbursepayments.com/v1/order-management/order_pay_by_link/instruction/inst_pay_by_link
Copy
Copied
Authorization: Bearer {eyJhbGciOiJIUzI1N...9UAUBNuyPN6Xg}
x-account-id: 49bder42-90d9-46b1-b120-f6b347d621a0
x-tenant-id: 60452f48-5d48-4bc0-ab6f-5cr3ee411f63
Content-Type: application/json
Copy
Copied
{
    ...
    "created": 1669167777450,
    "lastUpdated": 1669167777450,
    "direction": "DEBIT",
    "status": "INCOMPLETE",
    "customerRef": "MEGHAN_002",
    "amount": 120.00,
    "currency": "GBP",
    "country": "GB",
    "settledByDate": "2023-06-01",
    "forecastedSettlementDate": null,
    "actualSettlementDate": null,
    ...    
    "transaction": {
      ...
      "status": "PROCESSING",
      ...
    },
    "failed": null,
    "cancelled": null
}
Copyright 2024 Duck Creek Technologies. All Rights Reserved.