Expedition Gateway

Aggregator pengiriman gaya payment gateway untuk brand owner D2C dan partner B2B di Indonesia. Satu integrasi, banyak kurir.

GO — dengan dua kondisi kritis
Demand nyata. Celah kompetitif ada. Tapi dua hal ini harus dikonfirmasi dalam 60 hari sebelum mulai build.
Kondisi 1 — Volume
Konfirmasi captive volume PT group ≥ 20.000–30.000 paket/bulan. Ini leverage satu-satunya untuk masuk kontrak B2B kurir di bulan 1–3.
Kondisi 2 — Kurir
Komitmen dari minimal satu kurir (JNE corporate account) sebelum build API selesai. Tanpa ini, produk tidak bisa demo ke calon customer external.

Konsep

Brand owner yang pindah dari marketplace ke website sendiri (Shopify, WooCommerce, custom) kehilangan akses ke infrastruktur pengiriman setara marketplace. Mereka harus input manual ke masing-masing kurir setiap hari — booking, cetak label, rekap AWB, monitor tracking, handle komplain. Gateway ini menyelesaikan itu dengan satu integrasi API.

Revenue model
Flat fee / paket
Rp 500–1.500 per transaksi, berapapun nilai barang
Dua tier
Partner + External
Partner (PT group) fee lebih murah; external seller kena rate sedikit lebih tinggi
MVP carrier set
J&T + JNE + SiCepat
~65% open-market coverage + GoSend same-day sebagai differentiator
ICP utama
D2C non-COD
Brand 100–500 order/hari, website sendiri, tidak bergantung COD

Demand & Problem

Pain shipping D2C bukan nice-to-have — ini operasional harian. Setiap hari kerja brand owner booking, cetak label, rekap AWB, monitor tracking, dan handle komplain ulang dari awal.


Kompetitor

Kompetitor Model fee COD Kelemahan utama
Biteship Per-request API (Rp 5–10/hit) + plugin Rp 99K/bulan Ya Cost unpredictable saat volume naik; tidak ada flat booking fee
KiriminAja Gratis (spread ongkir tersembunyi) Ya Spread tidak transparan; support 12 jam/hari saja; tidak terstruktur
Komerce / RajaOngkir Gratis + API subscription Rp 149–249K/bulan Ya Migrasi paksa API 2025 → developer distrust; rate-check saja di free tier
Shipper Not published (by contract) Ya Tidak self-serve; pricing opaque; terlalu besar untuk UMKM
Mengantar Gratis (spread) Ya (COD-first) Tidak ada API publik; kurir sedikit (7)

Whitespace yang belum diisi siapapun


Market Size

Tier Paket / tahun Total IDR (@ Rp 1.000/paket) Total USD
TAM — semua paket nasional 2025 ~3,0 miliar Rp 3,0 triliun ~USD 187 juta
SAM — paket di luar internal marketplace ~1,8 miliar Rp 1,8 triliun ~USD 112 juta
SOM Year-1 realistis (0,1–0,2% SAM) ~1,8–3,6 juta Rp 1,8–3,6 miliar ~USD 112–225 ribu
Skenario realistis year-1 (captive PT group terkonfirmasi + 200–500 external seller aktif): volume 150.000–300.000 paket/bulan → Rp 150–300 juta/bulan. Break-even OPEX-only: ~120.000–180.000 paket/bulan.

Carrier Strategy

Carrier Alasan masuk MVP Status API
J&T Express ~25–30% open-market share; developer portal paling terbuka; leverage dengan captive PT group Butuh kontrak B2B dulu
JNE Express Jaringan terluas (83.000+ titik); corporate account paling accessible (threshold Rp 7,5 juta/bulan untuk 20% diskon) Perlu akun B2B
SiCepat ~15–20% open-market; kuat di speed; kemitraan dengan Pos Indonesia Partner-only; awal via aggregator
GoSend (Gojek) Differentiator same-day untuk F&B + fashion kota besar; tidak perlu MoU langsung di Phase 1 Via aggregator dulu

Tiga kurir reguler sudah cover ~65% open-market. Phase 2: Anteraja, ID Express, GrabExpress, Ninja Xpress berdasarkan demand aktual.


Diferensiasi & Moat

Flat fee transparan
Satu-satunya yang bisa diaudit per baris oleh finance seller
Semua kompetitor pakai spread tersembunyi atau fee per API hit
Captive volume moat
PT group = leverage B2B rate
External customer menikmati rate lebih murah via gateway; kompetitor tidak punya captive volume ini
API stability commitment
12-bulan advance notice sebelum deprecation
Developer sedang aktif cari alternatif pasca migrasi paksa RajaOngkir 2025
Complaint inbox
Single front-door untuk semua komplain
Seller tidak perlu kontak masing-masing kurir. Tidak ada kompetitor yang memposisikan ini secara eksplisit

Unit Economics — Gambaran Kasar

Semua angka di bawah adalah asumsi model. Flat fee Rp 1.000/paket sebagai midpoint.

Aspek Skenario Optimis Skenario Realistis Skenario Pesimis
Captive PT group 50.000 paket/bulan 30.000 paket/bulan 5.000–10.000 paket/bulan
External seller bulan 12 500+ seller × 80 paket = 40.000 300 seller × 50 paket = 15.000 50–100 seller × 20–30 paket
Total volume/bulan 90.000 paket 45.000 paket ~8.000 paket
Revenue/bulan Rp 90 juta Rp 45 juta Rp 8–15 juta
Break-even bulan ke- Bulan 10–14 Bulan 18–24 Belum break-even bulan 24
Kontrak B2B kurir J&T + JNE direct bulan 4; SiCepat bulan 6 JNE direct + J&T bulan 6 Hanya corporate JNE; lainnya via aggregator
Break-even total (termasuk engineering ~Rp 40–70 juta/bulan tambahan): sekitar 130.000–170.000 paket/bulan. Realistis capai bulan 12–18 kalau captive volume memadai dan akuisisi external seller berjalan.

Risiko Utama

Risiko Impact Mitigasi
Captive volume PT group lebih kecil dari perkiraan Tinggi Konfirmasi volume aktual sebelum build dimulai; tetapkan threshold minimum
Bargaining lemah ke kurir karena startup baru tanpa volume Tinggi Negosiasi pakai captive PT group sebagai anchor; mulai dari JNE (threshold paling rendah)
No-COD memotong ICP signifikan Menengah Target eksplisit ICP non-COD dulu; buat roadmap COD post-MVP yang konkret
Kompetitor established (Biteship, KiriminAja) sudah punya nama Menengah Differentiate via flat fee transparan + API stability + complaint inbox; tidak compete di fitur
Kemenhub bisa interpretasi gateway sebagai kurir (KBLI 53201) Menengah Konsultasi pengacara bisnis sebelum daftar OSS; posisikan sebagai "agen" bukan "kurir"
Ketergantungan pada PIC kurir untuk complaint routing Menengah SLA dalam kontrak MoU; eskalasi path jelas di complaint inbox

Kenapa GO?

Demand real. Celah kompetitif ada — flat fee transparan, API stability, complaint inbox sebagai single front-door, partner tier — tidak satupun diisi kompetitor secara eksplisit. Pasar tumbuh (CAGR logistik 7–8% hingga 2030, TikTok Shop live commerce +90% YoY, brand owner eksodus marketplace). Unit economics pada volume yang bisa dicapai masuk akal: break-even ~130.000–170.000 paket/bulan dalam 12–18 bulan adalah target realistis kalau captive volume memadai.

Yang membuat ini berbeda dari startup shipping biasa: gateway ini punya captive volume bawaan dari PT group — leverage yang tidak dimiliki Biteship atau KiriminAja saat mereka mulai. Itu satu-satunya cara masuk ke kontrak B2B kurir tanpa butuh 2–3 tahun bangun reputasi organik.

Business Proposal

Executive summary untuk stakeholder. Detail angka akan diupdate setelah review Tab Market Research selesai.

GO — dengan dua kondisi kritis
Konfirmasi kedua kondisi ini dalam 60 hari sebelum build dimulai.
Kondisi 1 — Volume
Konfirmasi captive volume PT group ≥ 20.000–30.000 paket/bulan sebelum negosiasi kurir dimulai.
Kondisi 2 — Kurir
Komitmen minimal satu kurir (JNE corporate account) sebelum build API selesai. Tanpa ini tidak ada demo.

Estimasi Cost Development

📋 Estimasi cost akan diupdate setelah review Tab Market Research
Development, maintenance, dan birokrasi akan diturunkan ke worksheet RAB/COGS setelah review selesai. Mau lihat angka? Bilang ke tim — akan disiapkan.

Timeline Draft — akan diupdate

Range kasar dari research. Angka ini belum dikonfirmasi ke team — anggap sebagai orientasi awal.

Milestone Estimasi Waktu Catatan
Konfirmasi dua kondisi GO 0–60 hari Sebelum build dimulai. Volume PT group + komitmen JNE.
Negosiasi MoU JNE (prioritas pertama) Paralel dengan build — 1–3 bulan JNE paling accessible. J&T dan SiCepat menyusul.
Prototype demo-able (booking + AWB + tracking) 2–3 bulan dari mulai build Dipakai negosiasi kurir dan onboarding partner awal
MVP dengan complaint inbox + multi-carrier 4–6 bulan Target onboard 10–20 external seller di bulan 4–5
Stabilisasi + skalakan external seller Bulan 6–12 Target 200–500 external seller aktif
Timeline di atas adalah range dari research — bukan commitment. Akan diupdate setelah scope engineering dikonfirmasi.

Tim yang Dibutuhkan

Berdasarkan benchmark kompetitor (Biteship ~40 orang, Shipper ratusan) dan scope MVP ini. Angka gaji/bayaran tidak ditampilkan di sini.

Role Headcount FT/PT Kenapa dibutuhkan
Founder / CEO 1 FT Strategy + negosiasi kurir. Harus founder-led di fase awal — kurir tidak akan MoU dengan bukan decision maker.
Backend Engineer 2 FT API gateway core: booking, AWB, tracking, label print, webhook dari kurir.
Frontend / Fullstack Engineer 1 FT Dashboard customer + internal ops panel (complaint inbox, monitoring).
Partnership Manager / Carrier RM 1 FT (mulai bulan 3–4) Maintain MoU + kontrak aktif kurir, monitor SLA, handle complaint routing ke PIC kurir.
Customer Success 1–2 FT Handle isu seller + orkestrasi complaint inbox. Kunci retention — isu paket adalah kejadian harian.
Finance & Rekonsiliasi 1 FT (bisa PT awal) Invoice kurir, rekonsiliasi fee, laporan arus kas. Krusial karena ada volume invoice dari banyak kurir.
Sales / BD 1 FT Akuisisi external customer (D2C, software house, UMKM).
Ops / QA 1 PT Testing API baru, monitor uptime, koordinasi onboarding kurir baru.
Total MVP: 8–10 orang (7 FT + 1–2 FT/PT). Di bawah 12 bulan pertama, founder kemungkinan merangkap Sales dan sebagian Partnership. Partnership Manager bisa dihire bulan 3–4 setelah ada kurir pertama yang onboard.

Modules & Phases

Rancangan modul akan difinalisasi setelah verdict GO terkonfirmasi dan dua kondisi (captive volume + komitmen kurir) terpenuhi.

🔧 Modul Phase 1 (MVP) akan dirancang setelah GO terkonfirmasi
Dua kondisi harus terpenuhi dulu: captive volume PT group dikunci + minimal satu kurir komit. Setelah itu, modul akan dipecah ke phase dan dikerjakan bersama team.

Preview Modul yang Sudah Jelas dari Research

Enam modul di bawah sudah teridentifikasi dari research. Ini bukan scope final — hanya preview sebelum rancangan detail dibuat.

📦 Booking & Rate Comparison
Input order → gateway cek rate semua kurir → seller pilih → booking terkonfirmasi. Core dari seluruh sistem.
🏷️ AWB & Label
Generate AWB otomatis dari kurir terpilih. Cetak label PDF dengan barcode + alamat. Dasar operasional harian seller.
🕐 Pickup Scheduling
Seller jadwalkan pickup dari dashboard. Gateway koordinasi ke kurir. Seller tidak perlu telpon kurir satu per satu.
📍 Tracking & Webhook
Update status paket otomatis via webhook dari kurir ke gateway ke seller. Polling sebagai fallback untuk kurir yang belum punya webhook.
🎫 Complaint Inbox
Seller submit komplain → gateway routing tiket ke PIC kurir → partner update status → seller dapat notifikasi. Single front-door untuk semua masalah paket.
💰 Multi-Tier Pricing Engine
Fee berbeda per tier (partner vs external). Logika flat fee per transaksi yang bisa diaudit. Dasar dari transparansi yang jadi diferensiasi.
Catatan: COD remittance, cross-border, dan mobile app native tidak masuk MVP — bukan keputusan terburu-buru, ini pilihan deliberate untuk menghindari kompleksitas OJK/BI compliance di fase pertama.

Flowcharts

Lima journey dari berbagai sudut pandang. Semua branch, loop-back, path gagal, dan titik tunggu ditampilkan — tidak disederhanakan. Kompleksitas yang terlihat adalah alasan kenapa sistem ini dibutuhkan.

1 · Business Journey — Alur Value
Gambaran besar bagaimana value bergerak: brand owner masuk gateway, kirim paket secara rutin, bayar flat fee, semakin sticky seiring volume naik. Satu loop sederhana di permukaan — tapi setiap titik keputusan punya konsekuensi bisnis nyata.
flowchart TD A["Brand owner punya channel sendiri
Shopify / WooCommerce / custom"] --> B{"Punya akses kontrak
kurir yang murah?"} B -->|"Tidak - pakai retail rate"| C["Bayar mahal, input manual
ke masing-masing kurir"] C --> D["Cari solusi - dengar tentang gateway"] B -->|"Ya tapi ribet multi-kurir"| D D --> E{"Apakah tier partner
atau external?"} E -->|"Partner - PT internal group"| F["Masuk sebagai tier partner
fee admin paling murah
misal Rp 500-800/paket"] E -->|"External - brand owner / software house / UMKM"| G["Daftar sebagai external customer
fee admin lebih tinggi
misal Rp 1.000-1.500/paket"] F --> H["Integrasi API sekali ke gateway
atau pakai dashboard"] G --> H H --> I["Mulai kirim paket lewat gateway
Rate kurir = B2B rate gateway
bukan retail rate kurir"] I --> J{"Volume bulanan naik?"} J -->|"Ya - lebih dari threshold"| K["Gateway dapat leverage
negoin rate lebih murah ke kurir"] K --> L["Rate ke customer bisa lebih kompetitif
Customer makin hemat"] L --> M["Customer makin loyal
tambah volume, rekomen ke yang lain"] M --> I J -->|"Tidak / stagnasi"| N["Sales gateway follow-up
cek apakah ada masalah"] N --> O{"Bisa diselesaikan?"} O -->|"Ya"| I O -->|"Tidak - customer churn"| P["Customer berhenti
cari solusi lain"] I --> Q["Gateway tagih flat fee
Rp 1.000/paket ke customer"] Q --> R["Revenue gateway tumbuh
seiring volume naik"] R --> S["Break-even lalu reinvest ke
tambah kurir baru / fitur baru"] S --> I
2 · Seller Journey — Brand Owner Kirim Paket
Dari ada order masuk, sampai barang sampai ke buyer — atau tidak sampai dan masuk jalur komplain. Titik keputusan, cabang masalah (capacity full, area tidak ter-cover, retur, paket rusak), dan loop balik semuanya ada. Ini yang seller alami setiap hari tanpa gateway.
flowchart TD A["Ada order masuk di toko online
Shopify / WooCommerce / dsb."] --> B["Buka dashboard gateway
atau panggil API gateway"] B --> C["Masukkan detail order:
alamat penerima, berat, dimensi, nilai barang"] C --> D["Gateway cek ongkir otomatis
ke semua kurir yang tersedia"] D --> E{"Coverage tersedia
di alamat tujuan?"} E -->|"Tidak ada kurir yang cover"| F["Notifikasi: area tidak ter-cover
Sarankan alternatif atau manual"] F --> G["Seller putuskan: tunda / ubah kurir / batalkan"] E -->|"Ada kurir yang cover"| H["Tampilkan pilihan kurir:
harga, estimasi tiba, service level"] H --> I["Seller pilih kurir
misal J&T reguler atau GoSend same-day"] I --> J{"Kapasitas kurir
tersedia hari ini?"} J -->|"Tidak - capacity full"| K["Notifikasi: kurir penuh
Tawarkan kurir lain atau jadwal besok"] K --> I J -->|"Tersedia"| L["Seller konfirmasi booking"] L --> M["Gateway generate AWB
dan cetak label"] M --> N["Seller tempel label ke paket"] N --> O["Seller jadwalkan pickup
atau antar ke drop point"] O --> P{"Kurir datang pickup?"} P -->|"Tidak datang sesuai jadwal"| Q["Seller tunggu - tidak ada kabar"] Q --> R{"Sudah berapa lama?"} R -->|"Lebih dari 3 jam"| S["Seller submit complaint
di dashboard gateway"] S --> T["Masuk ke Complaint Inbox Journey"] R -->|"Masih dalam toleransi"| Q P -->|"Datang, paket diambil"| U["Status: Picked Up"] U --> V["Tracking otomatis update
lewat webhook kurir ke gateway ke seller"] V --> W{"Status tracking normal?"} W -->|"Ada masalah:
lama di hub / tidak ada update"| X["Seller khawatir - cek tracking"] X --> Y{"Update dalam 24 jam?"} Y -->|"Tidak"| S Y -->|"Ya, lanjut"| V W -->|"Normal"| Z{"Barang sampai?"} Z -->|"Delivered - penerima terima"| AA["Order selesai
Seller update status di toko"] Z -->|"Gagal kirim - penerima tidak ada / alamat salah"| AB["Status: Attempted Delivery"] AB --> AC{"Seller mau re-deliver?"} AC -->|"Ya"| AD["Seller update alamat atau jadwal ulang
Lewat dashboard gateway"] AD --> O AC -->|"Tidak - retur"| AE["Proses retur dimulai
Paket balik ke sender"] AE --> AF["Seller terima paket retur
Cek kondisi barang"] AF --> AG{"Barang rusak atau hilang
selama proses retur?"} AG -->|"Ya"| S AG -->|"Tidak, barang oke"| AA Z -->|"Lost / damaged in transit"| S
3 · Admin / PIC Journey — Negosiasi Kurir & Operasional Harian
Dari negosiasi MoU pertama dengan kurir, sampai monitoring SLA harian, handle tiket komplain yang diteruskan sistem, dan review performa bulanan. Ini pekerjaan Partnership Manager — bukan satu kali setup, tapi loop operasional terus-menerus.
flowchart TD A["Partnership Manager dapat lead kurir
misal J&T Express"] --> B["Siapkan materials untuk presentasi:
Volume captive PT group, proyeksi external"] B --> C["Pertemuan pertama dengan tim
corporate/partnership kurir"] C --> D{"Kurir tertarik
lanjut negosiasi?"} D -->|"Tidak tertarik"| E["Coba kurir lain
atau tunggu volume naik dulu"] D -->|"Tertarik"| F["Mulai negosiasi rate B2B
dan terms MoU"] F --> G{"Rate yang ditawarkan
kurir masuk akal?"} G -->|"Terlalu mahal - tidak ada margin"| H["Negosiasi ulang
atau tahan dulu"] H --> F G -->|"Oke - bisa jalan"| I["Tanda tangan MoU / Kontrak"] I --> J["Tim teknis kurir berikan akses API test
J&T dan SiCepat butuh ini"] J --> K["Tim engineering gateway integrasi API
test di sandbox"] K --> L{"Integrasi berhasil?"} L -->|"Ada masalah teknis"| M["Koordinasi dengan tim teknis kurir
debug dan fix"] M --> K L -->|"Berhasil"| N["Go live - kurir aktif di gateway"] N --> O["Monitoring harian:
cek volume paket, SLA, incident"] O --> P{"Ada SLA breach?
Pickup terlambat / tracking berhenti?"} P -->|"Tidak - semua normal"| Q["Catat performa harian
rekapitulasi mingguan"] Q --> O P -->|"Ya - ada masalah"| R["Terima tiket complaint
dari Complaint Inbox sistem"] R --> S["Buka tiket - baca detail masalah
paket mana, seller siapa, kronologi"] S --> T["Kontak ops partner kurir
via jalur koordinasi langsung"] T --> U{"Partner kurir
respons?"} U -->|"Tidak respons dalam waktu tertentu"| V["Eskalasi ke RM senior kurir
atau GM operasional"] V --> W{"Selesai setelah eskalasi?"} W -->|"Masih tidak ada jawaban"| X["Catat sebagai pelanggaran SLA serius
pertimbangkan penalti di kontrak"] X --> Y["Update tiket: status eskalasi
Seller dapat notifikasi"] U -->|"Respons, sedang diinvestigasi"| Z["Update tiket: Acknowledged / In Progress
Seller dapat notifikasi otomatis"] Z --> AA{"Resolusi selesai?"} AA -->|"Ya"| AB["Update tiket: Resolved
Seller dapat notifikasi"] AB --> AC["Catat sebagai learning
untuk review bulanan"] AA -->|"Belum - butuh waktu lagi"| Z W -->|"Akhirnya selesai"| AB AC --> AD["Akhir bulan: review performa kurir"] AD --> AE{"Performa memuaskan?"} AE -->|"Ya"| AF["Lanjutkan kontrak
pertimbangkan naikkan volume"] AF --> O AE -->|"Buruk - sering breach SLA"| AG["Renegosiasi terms atau peringatan
pertimbangkan kurangi porsi"] AG --> AH{"Kurir mau perbaiki?"} AH -->|"Ya, ada improvement plan"| O AH -->|"Tidak ada perbaikan"| AI["Pertimbangkan suspend kurir
dari gateway sementara"] AI --> AJ["Cari kurir pengganti / backup"] AJ --> A
4 · Complaint Inbox Journey — Modul Dedicated
Flow khusus untuk komplain dari seller. Gateway sebagai single front-door — seller tidak perlu kontak kurir langsung. Resolusi finansial (refund, ganti rugi, klaim asuransi) tetap di partner kurir; gateway hanya orkestrasi tiket dan visibility status. Kompleksitas eskalasi sengaja ditampilkan karena ini yang terjadi di lapangan kalau PIC kurir tidak responsif.
flowchart TD A["Seller punya masalah:
paket hilang / rusak / terlambat parah"] --> B["Seller buka dashboard gateway
buka menu Complaint / Keluhan"] B --> C["Seller isi form complaint:
no AWB, jenis masalah, foto bukti kalau ada
kronologi singkat"] C --> D["Sistem validasi: AWB terdaftar di gateway?"] D -->|"Tidak ditemukan"| E["Error: AWB tidak valid
Seller diminta cek ulang atau hubungi CS"] E --> C D -->|"Valid"| F["Sistem buat tiket complaint
Assign ke PIC kurir yang relevan
Notifikasi ke Partnership Manager gateway"] F --> G["Sistem kirim notifikasi ke partner kurir
lengkap dengan detail tiket + AWB"] G --> H{"PIC kurir
acknowledge tiket
dalam SLA? misal 4 jam kerja"} H -->|"Tidak acknowledge dalam SLA"| I["Sistem auto-reminder ke PIC kurir"] I --> J{"Masih tidak respons
setelah reminder?"} J -->|"Tidak respons juga"| K["Sistem eskalasi otomatis
ke Partnership Manager gateway"] K --> L["Partnership Manager kontak
RM / manager kurir langsung"] L --> M{"Berhasil dapat respons?"} M -->|"Ya"| N["Update tiket: eskalasi acknowledged
Kembali ke investigasi"] M -->|"Tetap tidak ada respons"| O["Catat sebagai SLA breach serius
Seller diinformasikan + ETA revised"] O --> P["Partnership Manager handle manual
hingga resolusi"] H -->|"Acknowledge dalam SLA"| Q["Tiket status: Acknowledged
Seller dapat notifikasi otomatis"] N --> Q Q --> R["Partner kurir investigasi internal:
cek log pickup, hub, kurir last mile"] R --> S{"Investigasi butuh
berapa lama?"} S -->|"Lebih dari SLA investigasi
misal 3 hari kerja"| T["Partner belum ada update
Gateway send reminder ke partner"] T --> U{"Partner respons
setelah reminder?"} U -->|"Tidak"| K U -->|"Ya, masih on-going"| R S -->|"Selesai dalam SLA"| V{"Temuan investigasi?"} V -->|"Paket ditemukan - delay di hub"| W["Partner susun rencana kirim ulang
Update ETA ke gateway"] W --> X["Gateway update tiket: paket ditemukan
Seller dapat notifikasi + ETA baru"] X --> Y{"Paket berhasil
dikirim dan sampai?"} Y -->|"Ya"| Z["Partner update status: Delivered
Gateway close tiket"] Z --> AA["Seller dapat notifikasi: tiket selesai
Diminta rate pengalaman"] Y -->|"Masih gagal kirim"| R V -->|"Paket rusak dalam perjalanan"| AB["Resolusi finansial dimulai
di sisi PARTNER KURIR
bukan di gateway"] AB --> AC["Partner tawarkan kompensasi / klaim asuransi
directly ke seller atau via mekanisme kurir"] AC --> AD["Gateway update tiket status:
In Resolution - partner handle"] AD --> AE{"Seller puas dengan
resolusi partner?"} AE -->|"Ya"| AF["Partner update status: Resolved
Gateway close tiket dengan catatan"] AF --> AA AE -->|"Tidak puas / ada dispute"| AG["Seller escalate di tiket gateway
Partnership Manager mediasi"] AG --> AH["PM gateway kontak RM kurir
advocate untuk seller"] AH --> AE V -->|"Paket hilang / tidak bisa ditemukan"| AB P --> AF
5 · System Journey — Di Balik Layar
Apa yang terjadi di sisi teknis dari booking request masuk sampai tracking dan rekonsiliasi harian. Path retry, timeout, queue, webhook vs polling semuanya ada. Chart ini menunjukkan kenapa gateway bukan sekadar "forward request ke kurir" — ada lapisan validasi, caching, retry, dan reconciliation yang membuatnya reliable.
flowchart TD A["Request booking masuk
via API atau dashboard"] --> B["Auth middleware:
validasi API key + token"] B --> C{"Auth valid?"} C -->|"Tidak"| D["Return 401 Unauthorized
Log failed attempt"] C -->|"Ya"| E["Identifikasi tier customer:
partner vs external"] E --> F["Rate limiter check:
sesuai tier?"] F -->|"Melebihi rate limit"| G["Return 429 Too Many Requests
Suggest retry after X seconds"] F -->|"OK"| H["Validasi payload:
alamat valid, berat ada, kurir dipilih?"] H -->|"Data tidak lengkap / invalid"| I["Return 400 Bad Request
with field-level errors"] H -->|"Data valid"| J{"Request tipe
rate-check atau booking?"} J -->|"Rate check"| K["Fan-out request ke semua kurir
yang di-config untuk tier ini"] K --> L["Call carrier API J&T + JNE + SiCepat + GoSend
parallel dengan timeout 3-5 detik per kurir"] L --> M{"Semua kurir respons?"} M -->|"Ada kurir yang timeout"| N["Tandai kurir itu unavailable
Lanjut dengan yang respons"] M -->|"Semua respons"| O["Aggregate rates
Sort by price / speed"] N --> O O --> P["Return rate options ke caller
cache hasil 5 menit untuk AWB yang sama"] J -->|"Booking"| Q["Check rate cache:
masih valid?"] Q -->|"Cache expired"| K Q -->|"Cache valid"| R["Seller sudah pilih kurir
Kirim booking request ke carrier API"] R --> S{"Carrier API respons?"} S -->|"Timeout / 5xx dari kurir"| T["Masuk retry queue
Retry max 3x dengan exponential backoff"] T --> U{"Retry berhasil?"} U -->|"Ya"| V["Lanjut ke step berikut"] U -->|"Gagal semua retry"| W["Mark booking failed
Notifikasi ke seller + CS gateway"] W --> X["CS investigasi manual
koordinasi dengan kurir"] S -->|"Sukses 200"| V V --> Y["Terima AWB dari kurir
Simpan ke database gateway"] Y --> Z["Generate PDF label
with AWB, barcode, alamat"] Z --> AA["Return ke caller:
AWB, label URL, pickup window"] AA --> AB["Background: daftar ke webhook tracking kurir"] AB --> AC{"Webhook tersedia
di kurir ini?"} AC -->|"Ya"| AD["Kurir push tracking update
ke gateway webhook endpoint"] AD --> AE["Gateway simpan event tracking
Forward ke seller via webhook/polling"] AC -->|"Tidak - kurir no webhook
misal kurir kecil"| AF["Gateway polling tracking API kurir
tiap 30-60 menit"] AF --> AE AE --> AG{"Status = Delivered
atau terminal state?"} AG -->|"Tidak - masih on-going"| AH["Tunggu update berikutnya"] AH --> AD AG -->|"Ya - selesai"| AI["Mark order complete
Hentikan polling / unsubscribe webhook"] AI --> AJ["Akhir hari: reconciliation job jalan"] AJ --> AK["Pull semua transaksi hari ini
from gateway database"] AK --> AL["Compare dengan invoice / usage report
dari masing-masing kurir"] AL --> AM{"Ada discrepancy?"} AM -->|"Ya - ada selisih"| AN["Flag untuk review Finance
Buat dispute item ke kurir"] AN --> AO["Finance + Partnership Manager
koordinasi dengan kurir billing"] AO --> AP{"Resolved?"} AP -->|"Ya"| AQ["Update ledger
Close discrepancy item"] AP -->|"Tidak"| AN AM -->|"Tidak - match"| AQ AQ --> AR["Generate daily report:
volume per kurir, revenue, error rate"]

Birokrasi

Semua yang harus diselesaikan di luar build teknis. Waktu kalender penting — beberapa proses berjalan paralel dengan development, tapi ada yang bisa jadi blocker kalau terlambat dimulai. Harga implementasi = TBD bersama tim.

Beberapa item di bawah butuh konfirmasi konsultan hukum / pajak sebelum eksekusi. Peraturan berubah — angka dan waktu di sini adalah estimasi dari research, bukan kepastian legal.
🏢 PT Formation 1–3 bulan kalender Prioritas awal

Kalau group belum punya entity terpisah untuk gateway: perlu PT baru (atau bisa pakai entitas existing — TBD dengan tim). Kurir (JNE, J&T, SiCepat) semua minta kontrak dengan PT legal — tidak bisa atas nama pribadi atau CV.

  • NIB via OSS RBA — proses bisa 1–2 minggu kalau dokumen lengkap
  • Akta pendirian + SK Kemenkumham — 2–4 minggu via notaris
  • NPWP PT — 1–2 minggu setelah akta ada
  • Rekening bank perusahaan — 1–2 minggu

Harga: TBD dengan tim (notaris + biaya administrasi)

📋 KBLI 53202 — Aktivitas Agen Kurir 1–2 bulan (setelah PT ada) Konfirmasi legal dulu

Gateway paling cocok masuk KBLI 53202 (Aktivitas Agen Kurir) — bukan kurir yang angkut fisik paket, tapi "agen/mitra" kurir yang mengumpulkan order. Risiko perizinan menengah-rendah dibanding KBLI 53201.

  • Daftar via OSS RBA setelah NIB PT ada
  • Perizinan pos level "agen" lebih ringan dari izin penyelenggaraan pos penuh
Risiko interpretasi: Kalau gateway booking + jadwal pickup atas nama shipper, Kemenhub bisa saja minta izin 53201 (lebih berat). Preseden: Gojek/Grab awalnya diklaim "bukan ojek" lalu diregulasi khusus. Wajib konsultasi pengacara bisnis sebelum submit OSS.
💻 PSE Privat — Komdigi 2–4 minggu Relatif ringan

Platform digital komersial (termasuk API gateway) wajib daftar sebagai Penyelenggara Sistem Elektronik Lingkup Privat di portal pse.komdigi.go.id.

  • Dokumen: NIB + deskripsi sistem + NPWP
  • Berlaku per Permenkomdigi No. 5/2025 — deadline pendaftaran PSE Publik 25 Maret 2026 (gateway ini PSE Privat, jadwal TBD)
  • Biaya relatif ringan; proses lebih standar dibanding perizinan Kemenhub
🔐 UU PDP — Perlindungan Data Pribadi 1–2 bulan (paralel dengan build) Berlaku sejak Okt 2024

UU PDP resmi berlaku per 17 Oktober 2024. Gateway memproses data pribadi penerima paket (nama, alamat, no HP) — wajib comply.

  • Privacy Policy — dokumen publik tentang data apa yang dikumpulkan, dipakai untuk apa, berapa lama disimpan
  • DPA (Data Processing Agreement) dengan setiap kurir mitra — karena data penerima diteruskan ke kurir
  • Mekanisme deletion request — user bisa minta data dihapus
  • Breach notification — kalau ada kebocoran data, wajib lapor Komdigi + subjek data dalam 14 hari
PP turunan UU PDP belum final per awal 2026 — standar teknis bisa berubah. Pantau dan konsultasi konsultan hukum secara berkala.
🧾 PPN & PPh — Pajak Ongoing — mulai dari omset > Rp 4,8 M/tahun Tidak urgent di awal

Berdasarkan PMK No. 81/2024 (efektif 1 Januari 2025):

  • PPN 12% berlaku kalau omset > Rp 4,8 miliar/tahun. Di bawah itu, tidak perlu PKP tapi tetap lapor SPT tahunan.
  • PPh Badan 22% atas laba bersih sebagai PT — berlaku sejak ada keuntungan
  • PPh Pasal 23 (2%) kalau gateway bayar fee/komisi ke pihak lain (konsultan, vendor)
  • PMK 37/2025 (berlaku Juli 2025): kalau gateway dikategorikan sebagai marketplace (ada seller berjualan via platform), wajib pungut PPh 0,5% dari gross turnover merchant. Gateway ini murni B2B API aggregator — kemungkinan besar tidak kena — tapi perlu konfirmasi DJP
🤝 Kontrak B2B Kurir — MoU JNE / J&T / SiCepat JNE: 1–2 bulan · J&T & SiCepat: 3–6 bulan Blocker utama

Tanpa kontrak B2B dengan minimal satu kurir, gateway tidak bisa demo ke customer external. Ini blocker paling kritis di luar technical build.

  • JNE (prioritas pertama): Corporate account paling accessible. Threshold diskon mulai Rp 1,5 juta/bulan. Proses: NPWP + SIUP + akta PT + surat domisili. Timeline 1–2 bulan kalau dokumen lengkap.
  • J&T Express: Wajib MoU formal sebelum bisa akses API production. Proses: Cooperation Agreement → Test API → Mapping → Production. Timeline 3–4 bulan untuk startup baru.
  • SiCepat: API partner-only (tmsapi.sicepat.com). Akses langsung perlu akun dari SiCepat. Awal bisa via aggregator (Biteship/KiriminAja) sambil negosiasi direct berjalan. Timeline 4–6 bulan untuk direct kontrak.
Startup baru tanpa volume = bargaining power lemah. Strategi kritis: pakai captive volume PT group sebagai anchor volume saat presentasi ke kurir. Tanpa angka volume yang konkret, negosiasi bisa molor berbulan-bulan.
🚢 SIUJPT — Freight Forwarder Tidak relevan untuk MVP Post-MVP saja

SIUJPT (Surat Izin Usaha Jasa Pengurusan Transportasi) adalah izin freight forwarder — hanya dibutuhkan kalau gateway masuk cross-border (dokumen B/L, airway bill internasional, kepabeanan). MVP fokus domestik → tidak perlu.

Kalau kelak masuk cross-border: modal dasar minimum Rp 1,2 miliar (25% disetor) + tenaga ahli D3 pelayaran/transportasi + bukti sewa kantor minimal 2 tahun.

Glossary

Istilah yang dipakai di seluruh dokumen ini, buat siapapun yang baru bergabung dengan diskusi.

MVP
Minimum Viable Product — versi paling kecil dari produk yang tetap bisa dipakai dan memberikan nilai nyata. Di sini: prototype yang bisa demo ke kurir dan customer external.
COD
Cash on Delivery — pembeli bayar ke kurir saat paket tiba, bukan saat order. Umum di Indonesia, terutama UMKM dan daerah di luar Jawa. Gateway ini tidak handle COD di MVP.
AWB
Air Waybill — nomor resi pengiriman yang unik per paket. Dipakai untuk tracking, klaim, dan rekonsiliasi. Di konteks darat pun tetap disebut AWB.
KBLI
Klasifikasi Baku Lapangan Usaha Indonesia — kode resmi untuk jenis usaha, dipakai saat daftar PT dan izin usaha di OSS. Gateway ini target KBLI 53202 (Agen Kurir), bukan 53201 (Kurir penuh).
PSE
Penyelenggara Sistem Elektronik — kategori legal untuk platform digital di Indonesia. Daftar di Komdigi (dulu Kominfo). Gateway ini masuk PSE Lingkup Privat.
SIUJPT
Surat Izin Usaha Jasa Pengurusan Transportasi — izin untuk freight forwarder (pengurusan pengiriman lintas moda, dokumen internasional). Tidak relevan untuk MVP domestik gateway ini.
MoU
Memorandum of Understanding — surat kesepakatan awal antara dua pihak sebelum kontrak penuh. J&T dan SiCepat minta MoU dulu sebelum bisa akses API production mereka.
RM / PIC
Relationship Manager / Person in Charge — orang yang bertanggung jawab menjaga hubungan dengan kurir atau menangani masalah tertentu. Di gateway: Partnership Manager adalah RM kurir; PIC kurir adalah kontak di sisi kurir.
B2B / D2C
Business-to-Business / Direct-to-Consumer. B2B = kontrak bisnis ke bisnis (gateway ke kurir). D2C = brand jual langsung ke konsumen lewat channel sendiri, bukan marketplace.
TAM / SAM / SOM
Total Addressable Market / Serviceable Addressable Market / Serviceable Obtainable Market — tiga level sizing pasar. TAM = semua potensi, SAM = yang bisa dijangkau, SOM = yang realistis bisa ditangkap di year-1.
Captive volume
Volume paket yang sudah pasti ada karena berasal dari PT internal group — bukan harus diakuisisi dari luar. Ini leverage utama gateway untuk negosiasi kontrak B2B dengan kurir di fase awal.
White-label
Produk/layanan yang dibuat satu pihak tapi dijual/dipakai dengan brand pihak lain. Beberapa kurir punya program white-label API — gateway bisa pakai infrastructure kurir tapi tampil dengan brand sendiri.
Webhook
Mekanisme di mana sistem kurir otomatis mengirim update (tracking, status) ke server gateway setiap ada perubahan — tanpa harus gateway yang terus-terusan cek (polling). Lebih efisien dan real-time.
Same-day
Layanan pengiriman yang sampai di hari yang sama dengan pengambilan. Di Indonesia: GoSend (Gojek), GrabExpress, Lalamove. Cocok untuk F&B dan fashion di kota besar.
Reconciliation
Proses pencocokan catatan transaksi gateway dengan invoice dari kurir — memastikan tidak ada selisih antara paket yang masuk di sistem gateway vs yang ditagih kurir. Kerjaan Finance harian.
Retainer
Model pembayaran berlangganan untuk jasa tertentu — misalnya bayar bulanan ke tim maintenance supaya bisa dipanggil kapan saja dalam periode kontrak. Berbeda dari bayar per pekerjaan.
Lump sum
Pembayaran satu kali untuk scope pekerjaan tertentu — sudah termasuk segalanya, tidak ada tagihan tambahan. Berbeda dari time-and-material atau retainer.
API
Application Programming Interface — cara satu sistem bicara ke sistem lain secara otomatis. Gateway ini adalah API yang brand owner integrasikan sekali, lalu bisa akses semua kurir di belakangnya.
Dashboard
Antarmuka web untuk melihat dan mengelola data — di sini: halaman web tempat seller bisa booking paket, lihat tracking, dan submit komplain tanpa harus pakai API langsung.
Payment gateway
Sistem yang menjadi perantara antara toko online dan berbagai metode pembayaran (kartu kredit, transfer bank, e-wallet) — mirip dengan konsep gateway ini tapi untuk shipping bukan payment.