Context

Brick, initially a data and verification service provider, identified a demand from businesses seeking a more efficient way to manage incoming payments. Companies face operational inefficiencies due to fragmented payment systems and manual reconciliation processes. To address this, Brick developed a Payment Acceptance API, allowing businesses to integrate multiple payment methods, automate billing, and streamline reconciliation with a single API.

Hypothesis

<aside> 💡

Market Research and Competitive Analysis

Overview

The Indonesian digital payments market is projected to grow at a CAGR of 22.3% from 2021-2026, driven by rising smartphone adoption and e-commerce penetration.

Competitive Analysis

Major Players M*** X**** D**** O******
Strength Wide range of payment methods, strong brand recognition Modern API, good documentation, focus on developer experience Long-standing presence in the market, trusted by large enterprises Specializes in alternative payment methods, strong in e-wallet integrations
Weakness Complex pricing structure, occasional downtime issues Higher prices for some services, limited coverage in rural areas Outdated user interface, slower adoption of new technologies Limited traditional banking integrations, smaller merchant base

Competitive Landscape

Feature M*** X**** D**** O****** Brick (Proposed)
Bank Transfer Support ✓✓✓ ✓✓✓ ✓✓ ✓ ✓✓✓✓
E-wallet Integration ✓✓ ✓✓ ✓ ✓✓✓ ✓✓✓
Virtual Account ✓✓ ✓✓✓ ✓ ✘ ✓✓✓
Real-time Processing ✓ ✓✓ ✘ ✓ ✓✓✓
API Documentation ✓✓ ✓✓✓ ✓ ✓ ✓✓✓
Pricing ✓✓ ✓ ✓✓ ✓✓ ✓✓✓
Customer Support ✓✓ ✓✓ ✓ ✓ ✓✓
Additional Services ✓✓ ✓✓ ✓ ✓ ✓✓✓

Legend: ✓ = Basic offering or limited capability ✓✓ = Good offering or capability ✓✓✓ = Excellent offering or capability ✓✓✓✓ = Industry-leading offering or capability ✘ = Feature not offered

Key Market Insights

Market Opportunity

Based on this analysis, there's a clear opportunity for Brick to enter the market with a solution that addresses these pain points:

  1. Offer a unified API covering all major payment methods
  2. Provide superior reliability through robust infrastructure
  3. Simplify integration process with clear documentation and support
  4. Implement a transparent and competitive pricing structure
  5. Expand coverage to underserved rural areas
  6. Leverage BIFAST for real-time transactions across a wide network
  7. Bundle additional services (e.g., data enrichment, verification) for a comprehensive offering

The Audience

Persona Medium to Large Enterprises (CFO, CTO) SMEs (Founders, Developers) Traditional Businesses:
Use Cases Process large volumes of transactions via virtual accounts and QR codes. Simple API to manage payments through payment links and virtual accounts with limited technical resources. Automate billing and payment reconciliation to reduce manual workloads
Frustrations Multiple integrations with different payment providers increase operational overhead. High development costs and complicated reconciliation processes. Time-consuming manual invoicing and high payment processing costs.

User Journey

User Insights

Users demand a solution that:

Big Takeaways

There is a clear market need for a unified payment API that allows businesses to accept payments through multiple methods (virtual accounts, QRIS, payment links) and provides real-time reconciliation. Businesses want automation, flexibility, and cost efficiency in payment processing.

The Goal

<aside> 💡

To create a Payment Acceptance API that enables businesses to accept payments through multiple methods, automate reconciliation, and reduce operational costs through easy integration and scalable usage.

</aside>

Feature Prioritization and MVP Definitions

User Stories

Final Solution

Brick Payment API offering:

sequenceDiagram
    participant Client
    participant BrickAPI as Brick API Gateway
    participant BrickAuth as Brick Auth Service
    participant BrickPM as Brick Payment Manager
    participant BrickCB as Brick Callback Service
    participant ThirdParty as Third Party System
    participant Bank as Bank/E-Wallet

    %% Client to Brick Flow (Payment In)
    Client->>BrickAPI: 1. API Request (with token)
    BrickAPI->>BrickAuth: 2. Validate Token
    BrickAuth-->>BrickAPI: 3. Token Valid
    BrickAPI->>BrickPM: 4. Process Payment
    BrickPM->>Bank: 5. Initiate Payment
    Bank-->>BrickPM: 6. Payment Confirmation
    BrickPM->>BrickCB: 7. Trigger Callback
    BrickCB->>Client: 8. Send Callback

    %% Brick to Third Party Flow (Payment Out)
    Client->>BrickAPI: 9. Request Payment Out
    BrickAPI->>BrickAuth: 10. Validate Token
    BrickAuth-->>BrickAPI: 11. Token Valid
    BrickAPI->>BrickPM: 12. Process Payment Out
    BrickPM->>ThirdParty: 13. Initiate Transfer
    ThirdParty-->>BrickPM: 14. Transfer Confirmation
    BrickPM->>BrickCB: 15. Trigger Callback
    BrickCB->>Client: 16. Send Callback

High Level Architecture

Key Components

Component Descriptions
Client Applications Including mobile apps, web dashboard, and third-party systems integrating with our API.
Load Balancer Ensures high availability and distributes traffic across multiple API servers.
API Gateway The entry point for all API requests, handling routing, composition, and protocol translation.
Authentication Service Manages user authentication, authorization, and access token generation.
Payment Manager Core service for processing payment transactions across various methods.
Transaction Manager Tracks and manages the lifecycle of all transactions.
Ledger Manager Maintains financial ledgers and handles balance inquiries.
Notification Manager Manages system notifications, including emails and webhooks.
Data Store Consists of a main database for persistent storage and a cache for frequently accessed data.
External Systems Connections to banks, e-wallets, and BIFAST for processing transactions.
Pub/Sub Service Facilitates asynchronous communication between services, enabling event-driven architecture.
Bulldozer Service Handles bulk operations and data processing tasks.
Subscriber Services Process events from the Pub/Sub service, allowing for decoupled and scalable event handling.
Scheduler Service Manages scheduled tasks such as recurring payments or periodic reports.
Callback Service Manages the delivery of callbacks to client systems, ensuring reliable communication of transaction statuses and other important events.
graph TB
    subgraph Client Applications
        MobileApp[Mobile App]
        WebApp[Web App]
        ThirdPartySystem[Third-Party System]
    end

    subgraph Brick Payment API Platform
        LB[Load Balancer]
        API[API Gateway]
        Auth[Authentication Service]
        Security[Security Service]
        PM[Payment Manager]
        TM[Transaction Manager]
        LM[Ledger Manager]
        NM[Notification Manager]
        PubSub[Pub/Sub Service]
        Bulldozer[Bulldozer Service]
        Subscriber[Subscriber Services]
        Scheduler[Scheduler Service]
        Callback[Callback Service]

        subgraph Data Store
            DB[(Main Database)]
            Cache[(Cache)]
        end
    end

    subgraph External Systems
        Banks[Banks]
        EWallets[E-Wallets]
        BIFAST[BIFAST]
    end

    MobileApp --> LB
    WebApp --> LB
    ThirdPartySystem --> LB
    LB --> API
    API --> Auth
    API --> Security
    API --> PM
    API --> TM
    API --> LM
    API --> NM
    
    PM <--> PubSub
    TM <--> PubSub
    LM <--> PubSub
    NM <--> PubSub
    
    PubSub --> Bulldozer
    PubSub --> Subscriber
    
    Scheduler --> PM
    Scheduler --> TM
    
    Callback --> API
    
    PM <--> Banks
    PM <--> EWallets
    PM <--> BIFAST
    
    Auth <--> DB
    PM <--> DB
    TM <--> DB
    LM <--> DB
    NM <--> DB
    
    Auth <--> Cache
    PM <--> Cache
    TM <--> Cache

Virtual Account

Virtual Account is unique bank account number that the user c an generate to receive money