Dual Payment
Overview of the dual payment process where Cover Genius is the Merchant of Record
Partners that are at a minimum of PCI DSS SAQ A compliant are able to utilise the XPay API to process the insurance transaction. This will make Cover Genius the Merchant of Record (MoR).
After a customer selects the insurance product and proceeds to the checkout stage, the payment information (credit card details) must be collected and transmitted through the customer tokens endpoint.

Sending Payment Details
The XPay API uses a long lived JSON Web Token (JWT) which will be provided to you by the assigned Client Solutions Engineer (CSE).
Tokenize Card Details
POST
https://api.xpay.xcover.com/customer-tokens
This API call will tokenize the customers credit card details.
Headers
Content-Type
string
application/json
Authorization
string
Bearer {{JWT}}
{
"data": {
"id": "5a0e92d8-bca6-4006-be87-3254af39c865",
"customerId": "30db40c8-6e48-4406-9f06-b097273035b4",
"paymentProviderId": "47d7cc91-294b-40ce-85cf-99653c44bee2",
"createdAt": "2020-09-14T15:56:25+00:00",
"updatedAt": "2021-01-04T02:19:33+00:00",
"metadata": {
"variant": "visa",
"paymentMethod": "Credit card",
"expiryMonth": "3",
"expiryYear": "2030",
"holderName": "Darin Sikanic",
"number": "1111"
},
"partnerId": "9f6cebc9-b24b-4d33-8546-6c9edd12d751",
"isVisible": true,
"isDefault": true
}
}
}
"customer": {
"email": "[email protected]"
},
"creditCard": {
"number":"4111111111111111",
"expiryMonth":"03",
"expiryYear":"2030",
"cvc":"737",
"holderName":"Darin Sikanic"
}
}
Making a Booking
After a successful response from the customer tokens endpoint, the partner must confirm the booking by sending a request to the booking endpoint with the customer_token_id
set to the id
from the previous step, this will charge the customer.
Make a Booking
POST
https://api.xcover.com/x/partners/:partner_id/bookings/:quote_package_id
This API call will retrieve the most relevant policies available for distribution
Path Parameters
partner_id
string
Unique Partner Code
quote_package_id
string
Quote Package ID
Headers
Content-Type
string
application/json
Date
string
Current Datetime
Authorization
string
HMAC Signature
X-Api-Key
string
API Key
{
"id": "string",
"status": "string",
"currency": "str",
"total_price": 0,
"total_price_formatted": "string",
"partner_transaction_id": "string",
"created_at": "2021-01-04T17:10:37Z",
"updated_at": "2021-01-04T17:10:37Z",
"pds_url": "http://example.com",
"security_token": "string",
"quotes": [
{
"id": "string",
"policy_start_date": "2021-01-04T17:10:37Z",
"policy_end_date": "2021-01-04T17:10:37Z",
"status": "string",
"price": 0,
"price_formatted": "string",
"policy": {
"policy_type": "string",
"policy_name": "string",
"policy_code": "string",
"policy_version": "string",
"category": "string",
"content": {
"title": "string",
"header": "string",
"description": "string",
"optout_msg": "string",
"inclusions": [
{
"title": "string",
"description": "string"
}
],
"exclusions": [
{
"title": "string",
"description": "string"
}
],
"disclaimer": "string",
"disclaimer_html": "string",
"payment_disclaimer": "string",
"in_path_disclaimer": "string"
},
"underwriter": {
"disclaimer": "string",
"name": "string"
}
},
"insured": [
{
"id": "string",
"first_name": "string",
"middle_name": "string",
"last_name": "string",
"email": "[email protected]",
"country": "AF",
"address1": "string",
"address2": "string",
"city": "string",
"postcode": "string",
"region": "string",
"phone": "string",
"age": 0,
"birth_date": "2021-01-04",
"metadata": {
"property1": "string",
"property2": "string"
},
"company": "string"
}
],
"tax": {
"total_tax": 0,
"total_amount_without_tax": 0,
"total_tax_formatted": "string",
"total_amount_without_tax_formatted": "string",
"taxes": [
{
"tax_amount": 0,
"tax_code": "string",
"tax_amount_formatted": "string"
}
]
},
"duration": "string",
"benefits": [
{
"description": "string",
"limit_description": "string",
"limit": 0,
"limit_policy_currency": 0,
"limit_formatted": "string",
"limit_policy_currency_formatted": "string",
"limit_per_unit": 0,
"limit_per_unit_policy_currency": 0,
"limit_per_unit_formatted": "string",
"limit_per_unit_policy_currency_formatted": "string",
"excess_description": "string",
"excess": 0,
"excess_policy_currency": 0,
"excess_formatted": "string",
"excess_policy_currency_formatted": "string",
"minimum_claim_amount": 0,
"minimum_claim_amount_policy_currency": 0,
"minimum_claim_amount_formatted": "string",
"minimum_claim_amount_policy_currency_formatted": "string"
}
],
"commission": {
"total_commission": 0,
"total_commission_formatted": "string"
},
"created_at": "2021-01-04T17:10:37Z",
"confirmed_at": "2021-01-04T17:10:37Z",
"updated_at": "2021-01-04T17:10:37Z",
"cancelled_at": "2021-01-04T17:10:37Z",
"is_renewable": true,
"cover_amount": 0,
"cover_amount_formatted": "string",
"pds_url": "http://example.com",
"attachments": "string",
"files": "string",
"extra_fields": {
"property1": "string",
"property2": "string"
},
"next_renewal": {
"id": "string",
"package_id": "string",
"quote_id": "string",
"status": "string",
"start_date": "2021-01-04T17:10:37Z",
"notification_date": "2021-01-04T17:10:37Z",
"due_date": "2021-01-04T17:10:37Z",
"expiry_date": "2021-01-04T17:10:37Z",
"cancelled_on": "2021-01-04T17:10:37Z",
"paid_on": "2021-01-04T17:10:37Z",
"created_at": "2021-01-04T17:10:37Z"
},
"can_be_cancelled": true,
"errors": [
"string"
]
}
],
"coi": {
"pdf": "http://example.com",
"url": "http://example.com"
},
"account_url": "http://example.com",
"policyholder": {
"first_name": "string",
"middle_name": "string",
"last_name": "string",
"email": "[email protected]",
"phone": "string",
"country": "AF",
"age": 0,
"address1": "string",
"address2": "string",
"city": "string",
"postcode": "string",
"region": "string",
"secondary_email": "[email protected]",
"birth_date": "2021-01-04",
"company": "string",
"tax_payer_id": "string"
},
"total_tax": 0,
"total_tax_formatted": "string",
"total_premium": 0,
"total_premium_formatted": "string"
}
{
"quotes": [
{
"id": "d7780bcc-c47c-446b-a9fb-b41f62fc1e81",
"insured": [
{
"first_name": "User",
"last_name": "Example",
"birth_date": "1991-03-11",
"email": "[email protected]"
}
]
}
],
"policyholder": {
"first_name": "User",
"last_name": "Example",
"birth_date": "1991-03-11",
"email": "[email protected]",
"country": "GB"
},
"payment_details": {
"customer_token_id": "{{customer_token_id}}"
}
}
Last updated
Was this helpful?