roedyrustam/vibes-plug/doku-payment-gateway
- community
Checking that the SKILL.md file is still in the repository.
DOKU payment gateway: Checkout, SNAP BI (VA, QRIS), and webhooks / Gateway pembayaran DOKU: Checkout, SNAP BI (VA, QRIS), dan webhook.
Install
npx vskill@latest install roedyrustam/vibes-plug/doku-payment-gatewaySKILL.md
DOKU Payment Gateway Integration / Integrasi Payment Gateway DOKU
<a name="english"></a>
English
Orchestration & Integration
- Payments & Multi-Gateway Routing:
payment-gateway-expert,saas-billing,agentic-m2m-settlement,agentic-micro-economy-architect - AI Agentic Commerce & MCP:
doku-mcp-server,mcp-server-architect,ai-llm-integration-expert - Database & Atomic Idempotency:
database-orm-expert,saas-multi-tenant - Security & Post-Quantum Crypto:
post-quantum-crypto-migrator,zero-trust-secret-vault,autonomous-red-teamer - Async Processing & Observability:
async-queue-temporal-expert,data-telemetry-expert - Lifecycle & Governance:
brainstorming,zero-to-prod-orchestrator,session-memory-manager,anti-slop
Description
Expert guide for implementing DOKU Payment Gateway based on the official DOKU Developers Documentation. DOKU offers two primary integration models:
- DOKU Checkout (
/checkout/v1/payment): Hosted payment page or modal overlay (jokul-checkout-1.0.0.js). The fastest, single-integration solution supporting all payment channels (Virtual Accounts, Credit Cards, QRIS, E-Wallets, Convenience Stores, Paylater, Direct Debit) with built-in retry handling and cart recovery. Uses Non-SNAP HMAC-SHA256 signatures with request digest. - Direct API:
- SNAP BI Standard (Host-to-Host): Standardized open banking API mandated by Bank Indonesia. Employs OAuth 2.0 B2B token with Asymmetric RSA-SHA256, and HMAC-SHA512 for transactional endpoints (Direct VA, Direct QRIS, Direct Debit).
- Non-SNAP Direct API: Dedicated APIs for Credit Card Payment Page (
/credit-card/v1/payment-page), OVO Push Payment (/ovo-emoney/v1/payment), and Direct Paylater.
Integration Architecture Decision Matrix
| Dimension | DOKU Checkout (Hosted / Modal) | Direct API (SNAP BI Standard) | Direct API (Non-SNAP) | |
|---|---|---|---|---|
| Primary Use Case | E-commerce, SaaS billing, mobile apps wanting instant multi-channel coverage | Bespoke in-app banking UI, automated dynamic VA generation, native QRIS display | Non-PCI DSS Card custom page, instant OVO push payment to phone | |
| Supported Channels | All channels in 1 API (VA, CC, QRIS, E-Wallet, Alfa/Indomaret, Paylater, Direct Debit) | Specific endpoints: Bank Virtual Accounts, QRIS, Direct Debit | Credit Card 3DS, OVO Push, LinkAja, Paylater (Kredivo/Akulaku) | |
| Frontend Effort | Minimal: Redirect to URL or trigger modal via loadJokulCheckout() | High: Merchant builds custom payment UI for each channel | Medium: Merchant embeds card iframe/redirect or prompts phone | |
| Signature Algorithm | HMACSHA256 with body Digest | HMAC-SHA512 (Transactional) + RSA-SHA256 (B2B Token) | HMACSHA256 with Digest (Card) or SHA256 checksum (OVO) | |
| Endpoint Base | /checkout/v1/payment | /virtual-accounts/bi-snap-va/v1.1/..., /snap-adapter/b2b/v1.0/qr/... | /credit-card/v1/payment-page, /ovo-emoney/v1/payment | |
| Check Status | GET /orders/v1/status/{invoice_number} (with order-level status) | Channel status endpoint (e.g. /transfer-va/status, /qr-mpm-query) | GET /orders/v1/status/{invoice_number} |
Core Architecture & Credentials
Environment Gateways
| Environment | Base URL | Dashboard Portal | Simulator | |
|---|---|---|---|---|
| Sandbox | https://api-sandbox.doku.com | https://sandbox.doku.com | https://sandbox.doku.com/gtw-config-v2/simulator | |
| Production | https://api.doku.com | https://dashboard.doku.com | N/A |
Frontend JS SDK (for Modal Popup Mode)
- Sandbox:
https://sandbox.doku.com/jokul-checkout-js/v1/jokul-checkout-1.0.0.js - Production:
https://jokul.doku.com/jokul-checkout-js/v1/jokul-checkout-1.0.0.js
1. DOKU Checkout Integration (Recommended)
Backend: Generate Checkout Payment URL
Endpoint
- HTTP Method:
POST - Sandbox:
https://api-sandbox.doku.com/checkout/v1/payment - Production:
https://api.doku.com/checkout/v1/payment
Mandatory Headers
[!IMPORTANT]-Request-TimestampMUST be in ISO8601 UTC+0 (YYYY-MM-DDTHH:mm:ssZ). For WIB (UTC+7), subtract 7 hours.-Request-Targetis/checkout/v1/payment.
Signature Generation (Non-SNAP HMAC-SHA256)
- Calculate Digest:
``typescript const jsonBody = JSON.stringify(body); const digest = crypto.createHash('sha256').update(jsonBody, 'utf8').digest('base64'); ``
- Assemble Component String:
``text Client-Id:<client-id>\nRequest-Id:<request-id>\nRequest-Timestamp:<timestamp>\nRequest-Target:<request-target>\nDigest:<digest> ``
- Calculate HMAC-SHA256:
``typescript const hmac = crypto.createHmac('sha256', secretKey).update(componentString, 'utf8').digest('base64'); const signatureHeader = HMACSHA256=${hmac}; ``
Full Request Payload Schema
[!TIP]To showcase all available channels enabled in your DOKU account, simply omitpayment.payment_method_types.
Response Body Highlights
Frontend Integration (Popup Modal vs Redirect)
Approach A: Modal Overlay (Pop-Up Mode)
Import the DOKU Checkout JS SDK and trigger loadJokulCheckout(url):
Approach B: Direct Redirect Mode
For mobile browsers or standard redirects, navigate directly to response.payment.url:
Order Status & Check Status API (Non-SNAP)
The Check Status API tracks order-level statuses even before the customer selects a specific channel:
- Endpoint:
GET https://api-sandbox.doku.com/orders/v1/status/{invoice_number} - Signature for GET: Does NOT require a Digest.
``text Client-Id:<client-id>\nRequest-Id:<request-id>\nRequest-Timestamp:<timestamp>\nRequest-Target:/orders/v1/status/<invoice_number> ``
- Statuses:
order.status:ORDER_GENERATED,ORDER_EXPIRED,ORDER_RECOVERED.transaction.status:PENDING,SUCCESS,FAILED,EXPIRED,REFUNDED.
Webhook Verification & Atomic Idempotency (DOKU Checkout)
When a customer completes payment via Checkout, DOKU posts an HTTP Notification with headers:
Client-Id,Request-Id,Request-Timestamp,Signature: HMACSHA256=...
2. Direct API — SNAP BI Standard (Host-to-Host)
For merchants requiring fully custom, native checkout experiences for Virtual Accounts, QRIS, or Direct Debit.
Step 1: B2B Access Token Generation
- Endpoint:
POST /authorization/v1/access-token/b2b - Headers:
X-CLIENT-KEY: Merchant Client IDX-TIMESTAMP: ISO8601 string (YYYY-MM-DDTHH:mm:ssZ)X-SIGNATURE:SHA256withRSA(PrivateKey, X-CLIENT-KEY + "|" + X-TIMESTAMP)(Base64)- Body:
{"grantType": "client_credentials"} - Response:
accessToken(Bearer token, valid for 900 seconds).
Step 2: Transactional Endpoints Signature (HMAC-SHA512)
- Formula:
BodyHash = hex(sha256(minifiedBody)).toLowerCase()StringToSign = HTTPMethod + ":" + EndpointUrl + ":" + AccessToken + ":" + BodyHash + ":" + TimestampX-SIGNATURE = base64(hmacSha512(ClientSecret, StringToSign))
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/doku-payment-gateway/SKILL.md
Popularity
- Repository stars
- 51
- Repository forks
- 10
- 7-day trend score
- 20
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/roedyrustam/vibes-plug/doku-payment-gateway)