Skip to main content

Payments

We support a number of ways to handle payments when purchasing policies. You can always send card PAN data directly to our purchase endpoints, which we handle in a PCI-compliant manner.

Overview

We also support a number of payment processors. The general model for supporting a payment provider is onboarding Vertical Insure as a sub-merchant within your payment provider account. We will need a way to validate payments in the form of an API key to the sub merchant account, or a way to process the payment directly from our system (e.g. capture vs authorize and capture). With certain payment providers, we also support shared vault solutions or payment method forwarding solutions as we are PCI compliant. An example of a forwarding solution is TokenEx. Ask your Vertical Insure partner representative about a payment processor that is not mentioned on this page - we probably support it!

JustiFi

Currencies: USD

For platforms utilizing JustiFi for processing payments, you can take advantage of their Bind Insurance API which was developed in direct partnership with Vertical Insure and makes it easy to process payments for insurance purchases while continuing to process your customer payments.

At this time, we only accept payments in USD with Justifi.

Stripe Connect

Currencies: USD, CAD

In order to utilize Stripe Connect, you will need to onboard Vertical Insure to your Stripe platform account as a standard connect account. In order to share payment methods across Stripe Connect accounts, the customer and payment methods need to be created within the platform account. These payments will be designated as direct charges, which ensures the transaction fees associated with the payment are passed to Vertical Insure and not the platform.

If you're using Stripe already, your payments flow can operate in a similar fashion but you will need to create an additional PaymentIntent for the policy purchase.

  1. Once your payment for the customer is completed, you can utilize Stripe Connect to clone the payment method into the Vertical Insure connect account.

    curl https://api.stripe.com/v1/payment_methods \
    -d customer="{{CUSTOMER_ID}}" \
    -d payment_method="{{PAYMENT_METHOD_ID}}" \
    -H "Stripe-Account: {{VERTICAL_INSURE_CONNECTED_ACCOUNT_ID}}"
  2. Create a second PaymentIntent with the cloned PaymentMethod for the price of the policy premium on behalf of the Vertical Insure connect account.

    curl https://api.stripe.com/v1/payment_intents \
    -d amount={{PREMIUM}} \
    -d currency=usd \
    -d confirm=true \
    -d payment_method="{{PAYMEMT_METHOD_ID}}" \
    -d "metadata[quote_id]"={{QUOTE_ID}}
    -H "Stripe-Account: {{VERTICAL_INSURE_CONNECTED_ACCOUNT_ID}}"
  3. Call the Vertical Insure Purchase API

    curl -L -X POST 'https://api.verticalinsure.com/v1/purchase/event-participation-cancellation-insurance' \
    -H 'Content-Type: application/json' \
    --data-raw '{
    "quote_id": "string",
    "payment_method": {
    "token": "stripe:<payment_intent_id>"
    }
    }'

At this time, we support payments in USD or CAD when a Stripe Payment Intent is passed into the purchase API. Stripe also happens to be the only supported platform for CAD--when the price of a policy is offered in CAD, the only valid payment for the purchase is in CAD by passing in a Stripe Payment Intent (or charge ID).

Troubleshooting Stripe

No such payment_intent errors

If you are recieving the error No such payment_intent: py_XXXXXXXXXXXXX then you should ensure your payment intents are getting created as direct charges on our Stripe account. For various SDK references on how to accomplish this, please see the Stripe Connected Accounts documentation for using the Stripe-Account header. Ask your Vertical Insure partner representative for the appropriate account id value.

CardConnect (CardPointe)

Currencies: USD

In order to utilize CardConnect services for payments, you will need to use CardConnect Copilot to onboard Vertical Insure as a merchant within your platform account. Once, you've obtained a MID for Vertical Insure, you can submit payments utilizing tokens across all of your merchants for insurance.

  1. Create a payment authorization:

    curl -L -X PUT 'https://{site}.cardconnect.com/cardconnect/rest/auth' \
    -H 'Content-Type: application/json' \
    --data '{
    "merchid": "{{VERTICAL_INSURE_MERCHANT_ID}}",
    "account": "{{CARD_TOKEN}}",
    "expiry": "{{CARD_EXPIRATION}}",
    "amount": "{{PREMIUM}},
    "name": "{{CARDHOLDER_NAME}}"
    }'
  1. capture the payment:

    curl -L -X PUT 'https://{site}.cardconnect.com/cardconnect/rest/capture' \
    -H 'Content-Type: application/json' \
    --data '{
    "retref":"{{RETREF_FROM_AUTH_REQUEST}}",
    "merchid":"{{VERTICAL_INSURE_MERCHANT_ID}}"
    }'
  2. Call the Vertical Insure Purchase API

    curl -L -X POST 'https://api.verticalinsure.com/v1/purchase/event-participation-cancellation-insurance' \
    -H 'Content-Type: application/json' \
    --data-raw '{
    "quote_id": "string",
    "payment_method": {
    "token": "card_connect:<retref>"
    }
    }'

Note: If you are utilizing CardConnect profiles in order to allow your customers to re-use a saved payment method, you will need to retrieve the payment token on file related to a profile.

Subscriptions

For certain products, we offer the choice of a monthly subscription. When this choice is available, the subscription_premium field will be present on the quote response. The value of the field will be a JSON object with payment_amount, the amount of money charged per month, and payments_required, or the number of times amount needs to be paid before the subscription has been paid in full. If the customer opts for the subscription for a quote where a subscription is offered, it can be chosen by including the field subscription with the value true in the Purchase API request.

When a subscription is purchased, the customer will be charged the payment_amount once immediately, and then once again on the same date every month for the next payments_required - 1 months. There are some exceptions to this: for example, if the subscription is billed on the 31st of the month, and the month is February, the subscription will be charged on the last day of the month instead.

There is no auto-renewal for subscriptions at this time. Once all of the payments have been made, no further payments will be charged, and the policy will lapse on its expiration date. Customers who want a new policy will have to purchase a new one.

Subscriptions are currently only supported for the payment processors Justifi and Stripe. If your purchase request indicates that the customer wants a subscription, but the supplied payment method is for a payment processor that does not support subscriptions, then a payment error will be returned.