This FAQ covers common questions about Brick integration, including account setup, authentication, environments, callbacks, and troubleshooting steps applicable across all Brick products.
General
1. Account & Access
Q: What must be completed before integration?
You must:
• Pass KYB verification
• Have an active Brick dashboard account
• Obtain API Key & Secret
• Decide environment: Sandbox or Production
References:
• Verify Your Account (KYB)
• Brick Dashboard Overview
• API Introduction
⸻
Q: Can I use production API before KYB is approved?
No. Production access is only enabled after KYB approval.
Reference:
• Verify Your Account (KYB)
⸻
2. Environment & Credentials
Q: What is the difference between Sandbox and Production?
• Sandbox: Testing only, simulated transactions
• Production: Real funds and real bank processing
Credentials are environment-specific and cannot be mixed.
References:
• Authentication and Environment
• Production Checklist
⸻
Q: Why am I getting 401 Unauthorized?
Common causes:
• Incorrect API Key or Secret
• Wrong environment base URL
• Expired JWT token
References:
• API Introduction
• Generate Public Access Token (JWT)
⸻
3. Authentication & Security
Q: How does Brick authentication work?
Brick uses:
• API Key and Secret
• Short-lived JWT Public Access Token (5 minutes)
• Signature verification for callbacks
References:
• APIs Security
• Security at Brick
⸻
Q: Why does my JWT token keep failing?
JWT tokens:
• Expire after 5 minutes
• Are intended for short-lived usage
Always regenerate before retrying.
Reference:
• Generate Public Access Token (JWT)
⸻
4. Callbacks & Webhooks
Q: Why am I not receiving callbacks?
Check:
• Callback URL is publicly accessible (HTTPS)
• Valid SSL certificate
• No firewall restrictions
• Proper signature verification logic
References:
• APIs Security
• Error Handling
⸻
Q: Should I rely on API response or callback?
Always rely on callback.
API response only confirms request acceptance, not final status.
References:
• Regular Disbursement Callback
• Callback E-wallet Payment
⸻
5. Reference ID Rules
Q: Can I reuse the same reference ID?
No. Each transaction must use a unique reference ID.
Reference:
• API Response Structure
⸻
6. Debugging & Support
Q: What should I provide when reporting an issue?
Include:
• Reference ID
• Timestamp
• API endpoint
• Environment
• Error response
Reference:
• Error Handling
⸻
Disbursement
1. Disbursement Failure
Q: Why does my disbursement fail even though balance is sufficient?
Possible causes:
• Invalid bank details
• Bank downtime
• Sender detail not configured
• Account validation not performed
Best practice: Always call Account Validation API first.
References:
• Disbursement via API
• [Sender Detail](https://onebrick.readme.io/reference/sender-details)
⸻
2. Disbursement Method
Q: What’s the difference between Regular and BIFAST?
• BIFAST: Real-time, lower cost, limited coverage
• Regular: Wider coverage, near real-time
References:
• BIFAST Disbursement API
• Regular Disbursement
⸻
3. Disbursement Status
Q: Why is my disbursement stuck in PENDING?
Possible causes:
• Bank processing delay
• Awaiting partner callback
References:
• Checking Disbursement Status
• BIFast / Regular Disbursement Callback
⸻
4. Ledger & Reconciliation
Q: Why does dashboard balance differ from Ledger API?
• Dashboard shows available balance
• Ledger API shows full transaction movement
Reference:
• Ledger API
⸻
Acceptance
1. Virtual Account (VA)
Q: What is the difference between Open VA and Closed VA?
• Open VA: Reusable, flexible amount
• Closed VA: One-time use, fixed amount
Reference:
• Virtual Account Overview
⸻
Q: Why is my VA payment not reflected yet?
Possible causes:
• Bank settlement delay
• Callback not delivered
References:
• Callback Virtual Account
• Status of Open VA
⸻
2. QRIS
Q: Why can’t I generate QRIS?
Possible causes:
• Merchant not registered
• QRIS not activated
• Invalid SNAP token
References:
• QRIS Overview
• Registering for QRIS
⸻
Q: What’s the difference between Static and Dynamic QRIS?
• Static: Reusable QR
• Dynamic: Generated per transaction
Reference:
• Generate Dynamic QRIS
⸻
3. Payment Link
Q: Why does my payment link show expired?
Possible causes:
• Link expiration reached
• Payment completed or canceled
References:
• Payment Link
• Cancel Payment Link
⸻
4. E-Wallet Acceptance
Q: Why does e-wallet redirect open but payment fail?
Possible causes:
• User closes app mid-flow
• E-wallet downtime
• Amount mismatch
References:
• Status E-wallet Payment
• Callback E-wallet Payment
