How Sekawan Works
Sekawan is Kitabisa's Third Party Platform (3PP) service. Partners integrate with it to let their own users browse Kitabisa campaigns and donate, without those users needing a Kitabisa account. These diagrams show who's involved and the happy-path donation flow end to end.
Use case
A Partner Backend is the client of Sekawan's API, authenticating with
an X-Client-Key / X-Client-Secret pair.
Sekawan sits between the partner and Kitabisa's core donation
platform (campaign data, payment processing, donation ledger).
flowchart LR
donor(["Donor"])
subgraph partner["Partner Backend"]
uc1(["List campaigns"])
uc2(["List payment methods"])
uc3(["Create donation"])
uc4(["Check donation status"])
uc5(["Cancel auto-verify donation"])
end
sekawan[["Sekawan (3PP API)"]]
core[("Kitabisa Core")]
donor --> partner
uc1 --> sekawan
uc2 --> sekawan
uc3 --> sekawan
uc4 --> sekawan
uc5 --> sekawan
sekawan --> core
Happy path: donation flow
The typical sequence a partner integration follows to let a donor complete a donation, from browsing campaigns through to a verified payment.
sequenceDiagram
autonumber
actor Donor
participant Partner as Partner Backend
participant Sekawan
participant Core as Kitabisa Core / Payment Gateway
Donor->>Partner: Open donation page
Partner->>Sekawan: GET /campaigns (or /campaigns-all)
Sekawan->>Core: fetch mapped campaigns
Core-->>Sekawan: campaign list
Sekawan-->>Partner: 200 campaign list
Partner-->>Donor: show campaigns
Donor->>Partner: Select a campaign
Partner->>Sekawan: GET /campaign/{campaignID}
Sekawan-->>Partner: 200 campaign detail
Partner->>Sekawan: GET /payment-method
Sekawan-->>Partner: 200 payment methods
Partner-->>Donor: show payment method options
Donor->>Partner: Enter amount, pick payment method, confirm
Partner->>Sekawan: POST /non-login-donation
Sekawan->>Core: create donation + payment instructions
Core-->>Sekawan: donation created (payment token / VA / QR / redirect URL)
Sekawan-->>Partner: 200 donation + payment details
Partner-->>Donor: show payment instructions / redirect to pay
Donor->>Core: complete payment (bank transfer, GoPay, etc.)
Core-->>Core: payment verified
loop poll until verified
Partner->>Sekawan: GET /donations/{donationID}
Sekawan-->>Partner: donation status
end
Partner-->>Donor: show donation confirmed
- Partner lists campaigns via
GET /campaignsor/campaigns-alland shows them to the donor. - Donor picks a campaign; partner fetches full detail via
GET /campaign/{campaignID}. - Partner lists enabled payment methods via
GET /payment-methodand shows them to the donor. - Donor enters an amount, picks a payment method, and confirms — partner calls
POST /non-login-donation. No prior login/registration is required; a user record is created automatically if one doesn't exist yet. - Sekawan returns payment instructions (bank/VA details, a QR code, or a redirect URL) depending on the chosen payment method.
- Donor completes payment outside Sekawan (bank app, GoPay, etc.).
- Partner polls
GET /donations/{donationID}until the status turnsVERIFIED(or receives a webhook/redirect callback, depending on the payment method), then shows the donor a confirmation.