DigetPay Developer Integration API
  1. Integration Flow
  • Overview & Getting Started
  • Integration Flow
    • 01 - Authentication & Team
    • 02 - End-to-End Integration Flow
    • 03 - Customizing your Marketplace Listing
  • API Reference
    • Auth
      • Refresh access token using a refresh token
      • Logout — revoke the refresh token
      • Get current profile
      • Activate an invited `DEVELOPER` account (set password from invite link)
    • Login
      • Login with email + password (sends OTP via email and SMS)
      • Verify the login OTP and issue access + refresh tokens
      • Resend login OTP via email and SMS
    • Register
      • Self-register a developer company + owner account
      • Verify registration OTP (email + phone)
      • Resend registration OTP
    • Forgot Password
      • Forgot password — send a reset OTP to the email
      • Verify the forgot-password OTP
      • Reset the password using the reset token
    • Team
      • List organization members
      • Invite a `DEVELOPER` into the organization
      • Resend the activation link for a `PENDING` member
      • Remove a member
    • Company
      • Change Requests
        • Submit a company information change request
        • Withdraw a pending change request
        • Upload a document for a company change request
        • Remove a staged document from a change request
        • Get current pending company change request
      • Company profile + verification status + documents
      • Respond to a single information request
      • Update company / verification data (DRAFT or INFO_REQUIRED only)
      • Onboarding readiness for verification submit and marketplace
      • Upload a verification document (pdf/jpeg/png, max 10MB)
      • Signed download URL for an own document
      • Submit company for verification review
      • Verification status only
      • List information requests for the current verification
    • Applications
      • List applications
      • Create application (requires APPROVED verification)
      • Active marketplace categories (for the listing form)
      • Application detail
      • Update application
      • Request production activation (certification must be PASSED)
      • Upload an application logo (icon)
      • Upload an application banner
      • Marketplace orders for the application
      • API request logs (masked metadata only)
      • Orders / transactions for the application
      • Advance a confirmation-required order
      • Submit application for review
    • Listings
      • Marketplace listing for the application
      • Create or partially update the marketplace listing
      • Submit listing for marketplace review
      • Unpublish a live or scheduled marketplace listing
    • Offers
      • List authored marketplace offers (cards)
      • Create a marketplace offer (card)
      • Reorder marketplace offers
      • Update a marketplace offer (card)
      • Delete a marketplace offer (card)
      • Upload a marketplace offer (card) image
      • Upload an offer (card) banner image
    • Panels
      • Upload a panel (section) banner image
      • List marketplace panels (sections)
      • Create a marketplace panel (section)
      • Reorder marketplace panels (sections)
      • Update a marketplace panel (section)
      • Delete a marketplace panel (section)
    • Credentials
      • List credentials (masked)
      • Generate credential for an environment — raw key returned once
      • Rotate API key — new raw key returned once
      • Rotate webhook signing secret — returned once
      • Revoke credential (`isActive=false`)
      • Set optional IP allowlist (IPv4 / CIDR)
    • Webhooks
      • Webhook event catalog
      • List webhook endpoints
      • Add webhook endpoint (**max 5 per environment**)
      • Update webhook endpoint
      • Delete webhook endpoint
      • Send a signed connection test to the endpoint
      • Delivery logs
    • Dashboard
      • Developer portal overview
    • Company
  • Developer Portal
    • Applications
    • Certification
      • Certification progress ("8 of 12 tests completed")
      • Re-evaluate automated certification checks
    • Auth
      • Login
        • Login with email + password (no OTP — non-production only)
  • admin
    • auth
      • Step 1: email + password → email OTP
      • Step 2: verify OTP → admin JWT
      • Resend OTP (re-runs login challenge)
      • Get current admin user profile
      • Update current admin profile (name, phone, avatar)
      • Change password for the current admin user
      • Logout admin user
      • Set password from an invite link token (no auth required)
      • Request password reset via email/SMS OTP (no auth required)
      • Verify password reset OTP and get reset token (no auth required)
      • Reset password using reset token and new password (no auth required)
  • integrity
    • Issue a one-time nonce for Play Integrity attestation
      POST
    • (DEV ONLY) Decode an integrity token and return the verdict
      GET
  • health
    • Liveness probe - basic health check
    • Readiness probe - dependency health check
    • HealthController_getMetrics
  • super-admin-portal
    • impersonate
      • Impersonate a partner or merchant OWNER by targetId + targetType
      • End an active impersonation session
  1. Integration Flow

03 - Customizing your Marketplace Listing

How to compose a listing's detail page in the Super App. A listing is made
of ordered panels (sections), and each panel holds ordered cards
(offers). The on-screen look is the combination of a panel's panelType +
layout and a card's design + linkType.
See also: Getting Started for the onboarding
checklist and Integration & API Reference
for the full lifecycle walkthrough.

1. Storefront at a glance#

You can customize how your marketplace listing appears on our app through our composable interface.

2. Panel styles#

2.1 panelType — what the section accepts#

ValuePurpose
OFFERSPurchasable in-app offers (bought via POST /marketplace/purchase)
PROMOTIONSExternal promos / deeplinks / webviews — no purchase flow
OCCASIONSSeasonal / themed campaign (Ramadan, National Day…)
CARD_GRIDGeneral catch-all; what the app synthesizes from a legacy cards[]-only payload
INFOText-only section (bodyEn/bodyAr), no cards

2.2 layout — how the row renders#

From left to right, Hero Carousel, List, Grid, Banner.
ValueLookRecommended for
HERO_CAROUSELSwipeable wide cardsOCCASIONS
GRID2-column tile gridOFFERS
LISTStacked vertical rows (default)PROMOTIONS / CARD_GRID
BANNERSingle full-width card, no scrollone featured hero item

2.3 Other fields#

FieldTypeNotes
titleEn/Arstring ≤200Section title, shown when showTitle: true
showTitlebooleanDefault false; mainly used for OCCASIONS
subtitleEn/Arstring ≤200One-line subtitle
themeColor#RRGGBBHex accent for the section chrome
bannerImageUrlURL/gs://Panel hero banner (set via the banner upload endpoint)
expiresAtISO 8601Campaign expiry; null = never expires
bodyEn/Arstring ≤2000Plain body copy — INFO panels only
featuredStoreId, featuredStoreLabelEn/Ar—Featured store reference

3. Card (offer) styles#

FieldTypeNotes
designbanner | tile | compactCard visual treatment (required)
linkTypedeeplink | webview | offerLaunch behavior (required)
urlstring ≤2048webview needs http(s); deeplink accepts any scheme; offer may be empty
titleEn/Arstring ≤200Card title (required)
descriptionEn/Arstring ≤2000Body copy
imageUrlURL/gs://Card thumbnail (image upload endpoint)
pricedecimal stringUnit price; omit to keep the card non-purchasable
originalPricedecimal stringPre-discount price, shown struck through
currencyISO 4217Default SAR
inStockbooleanDefault true; false soft-disables the card
perUserLimitint 1–999Max purchases per customer
badgeLabelstring ≤60Attention badge (e.g. "Best seller")
badgeColor#RRGGBBStyles badgeLabel
bannerImageUrlURL/gs://Hero image for the card's detail screen
highlightTextstring ≤200Short highlight copy
termsEn/Arstring ≤2000Purchase terms shown near checkout
offerExpiresAtISO 8601After this moment the card is not purchasable
fulfillmentModeINSTANT | PARTNER_CONFIRMATIONDefault INSTANT

4. Style recipes#

Pick the section type, its layout, and the cards' design to produce each view.
Desired viewpanelTypelayoutCard designCard linkType
Seasonal hero carouselOCCASIONSHERO_CAROUSELbanneroffer/deeplink
Purchasable 2-column gridOFFERSGRIDtileoffer
Stacked promos / deeplinksPROMOTIONSLISTtile/compactdeeplink/webview
Single full-width featurePROMOTIONSBANNERbannerdeeplink
Text-only section (how it works)INFOLIST——
Legacy / unclassified dumpCARD_GRIDLISTtileany
Set showTitle: true, subtitle, themeColor, and bannerImageUrl on
campaigns (OCCASIONS), and bodyEn/Ar on INFO sections.

5. The flow#

5.1 Listing lifecycle#

StatusMeaningEditable?
DRAFTNot yet submitted✔
CHANGES_REQUESTEDAdmin asked for changes✔
REJECTEDAdmin rejected✔
SUBMITTEDQueued for review—
IN_REVIEWUnder admin review—
APPROVED / PUBLISHEDLive / scheduled to go live—

5.2 Panels#

MethodEndpointPurpose
GET.../listing/panelsList sections with cards
POST.../listing/panelsCreate a section
PATCH.../listing/panels/reorderReorder sections
PATCH.../listing/panels/:panelIdUpdate a section
DELETE.../listing/panels/:panelIdDelete a section (must be empty)
POST.../listing/panels/:panelId/bannerUpload the panel banner

5.3 Cards (offers)#

MethodEndpointPurpose
GET.../listing/offersList cards
POST.../listing/offersCreate a card
PATCH.../listing/offers/reorderReorder cards (per panel)
PATCH.../listing/offers/:offerIdUpdate a card
DELETE.../listing/offers/:offerIdDelete / soft-disable a card
POST.../listing/offers/:offerId/imageUpload the card thumbnail
POST.../listing/offers/:offerId/bannerUpload the card banner

5.4 Worked examples#

Create a HERO_CAROUSEL campaign panel via
POST .../listing/panels:
{
  "panelType": "OCCASIONS",
  "layout": "HERO_CAROUSEL",
  "titleEn": "Ramadan Specials",
  "titleAr": "عروض رمضان",
  "showTitle": true,
  "subtitleEn": "Iftar & suhoor deals, all month",
  "themeColor": "#16A34A",
  "expiresAt": "2026-09-18T21:00:00Z"
}
Create a purchasable card inside that panel via
POST .../listing/offers:
{
  "panelId": "12",
  "titleEn": "Silver top-up",
  "titleAr": "تعبئة فضية",
  "design": "tile",
  "linkType": "offer",
  "url": "",
  "price": "49.99",
  "originalPrice": "79.99",
  "currency": "SAR",
  "badgeLabel": "Best seller",
  "badgeColor": "#E8553C",
  "fulfillmentMode": "INSTANT"
}
Omit panelId to place a card in the implicit ALL_CARDS panel; set it to
move a card to another section (same listing).
price is a decimal string (≤ 7 integer + 2 fraction digits). Omit it to keep
the card non-purchasable.

6. Rules & limits#

Order: the app sorts panels[] then each panel's items[] by sortOrder
ascending; the reorder endpoints rewrite these.
Implicit panel: a listing always has an ALL_CARDS panel once the first
card is authored.
Fallbacks (client-side): unknown layout → LIST; unknown panelType →
CARD_GRID.
Deprecated cards[]: the customer detail API still returns a flattened
cards[] (union of all panels[].items[]) for backward compatibility — build
against panels[].
Limits: max 20 panels and 20 cards per listing.
Delete rules: a panel must be empty before deletion; a card with existing
orders is soft-disabled (inStock=false) instead of deleted to preserve order
history.

7. Summary#

Compose panels with the right panelType + layout, and cards with the right
design + linkType, then reorder both to control the exact on-screen view.
Listing content is editable only in DRAFT / CHANGES_REQUESTED / REJECTED;
submit it for review once the storefront is final.
CHECK
You can now build and arrange a storefront. Submit the listing via
POST .../listing/submit
to move it into the admin review queue.
Modified at 2026-08-31 06:15:11
Previous
02 - End-to-End Integration Flow
Next
Refresh access token using a refresh token
Built with