Skip to main content

Overview

Digital services are downloadable products, course access, API credits, airtime top-ups, gift cards, or any content unlocked immediately after payment. They share a common requirement i.e, payment must be confirmed instantly before access is granted. Novac is well-suited for this. You can use Payment Links for zero-code collection, the Checkout API for custom flows, or the Bills API for utility and airtime purchases all backed by real-time webhook notifications.

Common Digital Service Scenarios

ScenarioRecommended Integration
Sell a course or ebookPayment Link or Checkout API
Top up API credits in-appCheckout API with prebuilt checkout
Sell gift cards or voucher codesCheckout API + webhook to deliver code
Purchase airtime or data bundlesBills API (Airtime / Data)
Pay for electricityBills API (Electricity)
Accept donationsPayment Link with open amount

Prerequisites

See details

  • Create an account with completed KYC
  • Obtain your API keys — Public key for checkout, Secret key for server-side operations
  • A webhookURL to receive payment confirmation before granting access
  • A callbackURL to redirect customers after payment completes

Payment Links are the fastest way to start collecting payments for digital products. Create a link from the Novac dashboard, share it anywhere, social media, email, WhatsApp and customers can pay immediately. Best for Content creators, course sellers, freelancers, donations, flexible-amount payments.
1

Log in to your Novac Dashboard

2

Navigate to Payment Links

Go to Payments > Payment Links in the sidebar and click New Payment Link.
3

Fill in the details

Enter your product name, amount (leave blank for open/flexible amounts), and description.
Leaving the Amount field empty allows customers to enter any amount, ideal for donations and pay-what-you-want products.
4

Share the link

Once created, Novac generates a shareable URL and an NQR code that customers can scan to pay.
Full guide → Create a Payment Link

Checkout API (Programmatic)

For digital services that require tracking who paid and granting access automatically, initiate checkouts via the API. This gives you a unique transactionReference per purchase, which you verify before delivering the digital product. Best for SaaS platforms, in-app purchases, credit top-ups, any service that needs per-customer tracking.

Initiate a Checkout

Request
curl --request POST \
  --url https://api.novacpayment.com/api/v1/checkout \
  --header 'Authorization: Bearer <your-public-key>' \
  --header 'Content-Type: application/json' \
  --data '{
    "amount": 3500,
    "currency": "NGN",
    "email": "user@example.com",
    "reference": "DIGITAL-PURCHASE-00101",
    "callbackUrl": "https://yourapp.com/payment/callback",
    "redirectUrl": "https://yourapp.com/library"
  }'
Redirect the customer to the checkoutUrl returned in the response.

Verify Payment Before Granting Access

When the customer returns to your callbackURL, verify the transaction server-side before unlocking access.
Request
curl --request GET \
  --url https://api.novacpayment.com/api/v1/checkout/DIGITAL-PURCHASE-00101/verify \
  --header 'Authorization: Bearer <your-secret-key>'
Response (excerpt)
{
  "status": true,
  "data": {
    "status": "successful",
    "transactionReference": "DIGITAL-PURCHASE-00101",
    "amount": 3500,
    "currency": "NGN",
    "customer": {
      "email": "user@example.com",
      "name": "Fatima Bello"
    }
  }
}
Only unlock the digital product, download link, or access key when data.status === "successful".
Do not rely on the status query parameter in the callback URL. Always call the Verify API from your server before granting access.
Full guide > Verify a Transaction

Bills API (Utility Purchases)

For platforms that facilitate airtime top-ups, mobile data purchases, or electricity payments, Novac’s Bills API handles the full flow — from fetching available providers to completing the purchase. Best for: Fintech apps, super-apps, agent banking platforms.

Purchase Airtime

# 1. Fetch available airtime providers
curl --request GET \
  --url https://api.novacpayment.com/api/v1/bills/providers?type=airtime \
  --header 'Authorization: Bearer <your-secret-key>'

# 2. Purchase airtime
curl --request POST \
  --url https://api.novacpayment.com/api/v1/bills/airtime \
  --header 'Authorization: Bearer <your-secret-key>' \
  --header 'Content-Type: application/json' \
  --data '{
    "provider": "MTN",
    "phone": "08012345678",
    "amount": 1000,
    "reference": "AIRTIME-00202"
  }'
Full guide → Purchase Airtime

Purchase Electricity

# Validate meter number first
curl --request POST \
  --url https://api.novacpayment.com/api/v1/bills/electricity/validate \
  --header 'Authorization: Bearer <your-secret-key>' \
  --data '{
    "meterNumber": "12345678901",
    "provider": "IKEDC"
  }'
Full guide → Purchase Electricity

Real-Time Notifications via Webhook

For digital services, webhooks are critical — they let your system act on payment outcomes immediately, even if the customer closes the browser before being redirected.
Webhook Payload (successful purchase)
{
  "notify": "transaction",
  "notifyType": "successful",
  "data": {
    "transactionReference": "DIGITAL-PURCHASE-00101",
    "amount": 3500,
    "status": "successful",
    "customer": {
      "email": "user@example.com",
      "name": "Fatima Bello"
    }
  }
}
On receipt of a notifyType: "successful" event:
  1. Verify the transaction via the API (do not skip this step).
  2. Deliver the digital product, send the download link, activate the account, issue the voucher code.
  3. Respond to Novac’s webhook request with HTTP 200 OK.
Full guide → Webhooks

What’s Next?