Invincible Pay
Payment links

Introduction

What is Payment Links API?

The Payment Links API creates a hosted InvinciblePay payment page that merchants can share directly with customers to collect an Interac e-Transfer.

Unlike the Checkout API, which is typically used as part of an online checkout process, Payment Links are designed to be distributed independently through email, SMS, invoices, messaging applications, QR codes, or any other communication channel.

InvinciblePay provides:

  • Merchant name
  • Receiving e-Transfer email
  • Exact payment amount
  • Unique reference code
  • Expiration countdown timer (when applicable)
  • "I've Sent My Payment" button

Customer Experience

The customer opens the hosted payment link and sees the following information:

Payment link sreenshot
  • Merchant Name - The merchant receiving the funds. Example: EXAMPLE Inc.
  • Expiration Timer - Shows how much time remains before the payment link expires, if an expiration has been configured. Example: 57m 4s
  • Receiving e-Transfer Email - The email address to which the customer sends the Interac e-Transfer. Example: pay@cadpayment.ca
  • Amount - The exact amount the customer must send. Example: $100.00 CAD
  • Reference Code - A unique identifier generated by InvinciblePay. Example: P8XXXYY. The customer must include this code in the e-Transfer message or note. InvinciblePay uses this code to automatically match the incoming payment to the Payment Link.
  • "I've Sent the e-Transfer" Button - After sending the e-Transfer from their banking application, the customer clicks this button to notify InvinciblePay.

Important: Clicking this button does not mean the payment succeeded. It only informs InvinciblePay that the customer claims they initiated the transfer. The merchant should not consider the payment complete until InvinciblePay confirms it.

Recommended Integration Model

Merchant applications should use:

  • Webhooks - recommended
  • Polling - fallback option

Webhooks notify your backend whenever a Payment Link changes state.

Register your webhook URL

Register a URL to receive webhook notifications using POST /v1/webhook-urls. Example body:

{
  "url": "https://myfencestore.com/api/invinciblepay/webhook"
}

You can also: list your registered webhook URLs with GET /v1/webhook-urls, and manage an existing webhook URL:

The API also exposes a webhook history/list endpoint at GET /v1/webhooks.

Payment Link Flow

  1. The merchant creates an invoice, payment request, or order in their own system. Example:

    invoice_id = INV-10045
    amount = 100.00
    currency = CAD
    payment_status = pending
  2. Your backend creates an InvinciblePay Payment Link using POST /v1/payment-links. Example body:

    {
        "fundingSourceId": "fs_123",
        "amount": "100.00",
        "currency": "CAD",
        "description": "Invoice INV-10045",
        "externalId": "INV-10045",
        "expiresIn": 3600
    }
  3. InvinciblePay returns:

    payment_link_id = pl_123
    payment_url = https://app.invinciblepay.com/p/xxxxxxxx
    status = pending
  4. Your application sends the returned payment_url to the customer by email, SMS, invoice, QR code, or any other communication channel.

  5. The customer opens the Payment Link.
  6. The customer sends an Interac e-Transfer using their banking application, for example:

    Recipient: pay@cadpayment.ca
    Amount: $100.00
    Message: P8XXXYY
  7. The customer clicks "I've Sent my e-Transfer."

  8. InvinciblePay receives the e-Transfer.

  9. InvinciblePay automatically matches the payment using:

    • reference code
    • amount
    • merchant funding source
    • recipient email
  10. The Payment Link status becomes completed.
  11. InvinciblePay sends a webhook.
  12. Your backend retrieves the Payment Link and confirms: status == completed
  13. Your backend marks the invoice, order, or payment request as paid.

On this page