Kitabisa.com (1.0.0)

Download OpenAPI specification:

Introduction

Welcome to Sekawan!
Sekawan is Kitabisa’s third party platform service where you can consume every crowdfunding / donation endpoint.

See How Sekawan Works for a diagram of the use case and the happy-path donation flow end to end.

How To use Sekawan

HTTP Header

To see endpoint collection, every request must include X-Client-Secret & X-Client-Key on HTTP Header, if no headers found then the service will return 401 Unauthorized.

API Base URL

Response Status Code

Below are the list of response status code:

General

Status Code description
121000 Success
121001 Credentials cannot be empty (empty key / secret)
121002 Invalid client
121003 Invalid client from context
121005 Parameter not set
121006 Invalid backend response
121007 Unauthorized token
121008 Invalid credentials
121999 Unknown error

Donation

Status Code description
102101 Campaign ID cannot be empty
102102 Payment method ID cannot be empty
102104 Amount cannot be empty
102105 Donation amount cannot be lower than minimum donation
102106 Donation amount cannot be higher than maximum donation
102107 Cannot create donation with same amount within one minute
102108 Donation amount must be multiples of thousands
102109 Invalid email or phone number
102110 Campaign not open for donation
102111 Redirect callback cannot be empty
102112 Email or phone number cannot be empty
102113 Name cannot be empty
102114 Donation amount cannot be negative
102115 Redirect callback params cannot be empty
102303 Payment method not supported
102304 Duplicate donation found
102305 Donation not found
102306 Donation cannot be canceled
102307 Donation already canceled
102308 Donation ID cannot be empty
122004 Payment method not found

Campaign

Status Code description
123001 Campaign not found

Donation

Donation flow on Kitabisa (especially pwa) is processed through non logged in process.

Auto Verify Donation

For partners who process payment on their own side (their own payment method) and only need Sekawan to record an already-verified donation. The donation is created and immediately marked verified using the client's configured auto-verify payment method — no separate payment step happens on Sekawan's side.

Response Status Code

  • 102101 : Empty campaign ID
  • 102104 : Amount cannot be empty
  • 102304 : Duplicate donation found (when partner_trx_id was already used)
  • 121005 : Parameter not set (client's auto-verify payment method is not configured)
Authorizations:
(api_key_authapi_secret_auth)
header Parameters
X-Client-Key
required
string
X-Client-Secret
required
string
Request Body schema: application/json
required

Auto Verify Donation payload

campaign_id
required
string

Campaign's unique ID.

amount
required
number

The amount donated.

full_name
string

Donor's full name.

email
string

Donor's email.

phone_number
string

Donor's phone number.

is_anonymous
boolean

Whether the donor's name should be displayed or not.

partner_trx_id
string

Optional partner-supplied transaction ID. If supplied and a donation with the same ID already exists for this client, the request is rejected as a duplicate.

object

Responses

Request samples

Content type
application/json
{
  • "campaign_id": "171009",
  • "amount": 10000,
  • "full_name": "John Doe",
  • "email": "john@mail.com",
  • "phone_number": "628777443213",
  • "is_anonymous": false,
  • "partner_trx_id": "test_001",
  • "utm": {
    }
}

Response samples

Content type
application/json
{
  • "code": 121000,
  • "data": {
    },
  • "meta": {
    }
}

Cancel Auto Verify Donation

Cancels a previously created auto-verify donation.

Response Status Code

  • 102308 : Donation ID cannot be empty
  • 102305 : Donation not found
  • 102306 : Donation cannot be canceled
  • 102307 : Donation already canceled
Authorizations:
(api_key_authapi_secret_auth)
header Parameters
X-Client-Key
required
string
X-Client-Secret
required
string
Request Body schema: application/json
required

Cancel Auto Verify Donation payload

donation_id
required
integer <uint64>

The donation ID to cancel (as returned by Auto Verify Donation).

Responses

Request samples

Content type
application/json
{
  • "donation_id": 17320
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "meta": {
    }
}

Non Login Donation

Creates a donation for a campaign on behalf of a donor identified only by name and email/phone — no prior login or registration is required. If no matching user exists yet, one is created automatically.

Some fields are conditionally required based on the resolved payment type: redirect_callback is required when payment type is dana, dana_microsite, gopay, gopayqr, or linkaja; redirect_callback_params is required when payment type is dana, gopay, or gopayqr.

Response Status Code

  • 102101 : Empty campaign ID
  • 102106 : Donation too large
  • 102107 : Cannot create donation with same amount within one minute
  • 102108 : Donation amount must be in multiples of thousands
  • 102109 : Invalid email or phone number
  • 102111 : Empty redirect callback
  • 102113 : Name cannot be empty
  • 102303 : Payment method not supported
Authorizations:
(api_key_authapi_secret_auth)
header Parameters
X-Client-Key
required
string
X-Client-Secret
required
string
Request Body schema: application/json
required

Non Login Donation payload

name
required
string [ 1 .. 70 ] characters

Donor's name

email_or_phone
required
string [ 1 .. 255 ] characters

Donor's email or phone number required & validated

campaign_id
required
integer <uint64>

Campaign's unique ID, please see Campaign List endpoint

amount
required
integer >= 1000

Donation amount. Must be a positive multiple of 1000.

payment_methods_id
required
integer

Payment method unique ID, please see Payment Method List endpoint

platform
string

Free-form source/platform label.

comment
string

Donor's comment about donation max 140 chars

is_anonymous
boolean

Flag to hidden donor's name or replaced by Anonymous

send_notification
boolean

Flag to send notification (Email / SMS / WA) message to donor when payment is verified

campaigner_relation
boolean
share_userdata_agreement
boolean
cashtag
string

Jenius cash tag, only used when payment method using Jenius

promo_code
string

Jenius promo code, only used when payment method using Jenius

redirect_callback
string

Gopay redirect callback URL, only used when payment method using Gopay. / must be included at end of URL

redirect_callback_params
string

Redirect callback URL parameters, only used when payment method using Gopay. & must be included at begin of URL

  • These two params will be combined to be redirect_callback{{donation_id}}redirect_callback_params
  • As stated this is only for gopay payment, the URL is the redirection URL after user do payment on Gojek App
payment_token
string

Pre-authorized payment token, when applicable to the payment method.

object

Responses

Request samples

Content type
application/json
{
  • "name": "John Doe",
  • "email_or_phone": "John@mail.com",
  • "campaign_id": 123,
  • "amount": 10000,
  • "payment_methods_id": 123,
  • "platform": "string",
  • "comment": "Some long comment here",
  • "is_anonymous": false,
  • "send_notification": false,
  • "campaigner_relation": true,
  • "share_userdata_agreement": true,
  • "cashtag": "$omet4g5",
  • "promo_code": "pr0m0cod3",
  • "redirect_callback": "https://some-url.to.open/",
  • "redirect_callback_params": "my_param=true",
  • "payment_token": "string",
  • "utm": {
    }
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {},
  • "meta": {
    }
}

Donation Status

Use this to fetch donation or payment detail by using donation id. The donationID path value may also be a partner transaction ID (partner_trx_id) you previously supplied when creating the donation — it is resolved to the internal donation ID transparently.

Donation Status

  • CANCELLED Donation is cancelled
  • PENDING Donation is waiting to be paid
  • VERIFIED Donation has been verified
  • TO_WALLET Donation is reverse to donor's wallet
  • PAID Donation has been paid to campaigner
  • DRAFT Quite same with PENDING
Authorizations:
(api_key_authapi_secret_auth)
path Parameters
donationID
required
string

Donation unique ID, or a previously supplied partner transaction ID.

header Parameters
X-Client-Key
required
string
X-Client-Secret
required
string

Responses

Request samples

curl --location -g --request GET 'https://sekawan.ktbs.xyz/v1/auth/donations/{{donation_id}}' \
--header 'Content-Type: application/json' \
--header 'X-Client-Secret: {{client_secret}}' \
--header 'X-Client-Key: {{client_key}}'

Response samples

Content type
application/json
{}

Payment

List and choose payment methods enabled for your client.

Payment Method List

This endpoint consisting of Kitabisa’s digital payment such as GoPay, DANA, LinkAja, VA BCA, and VA Mandiri. The transaction will directly go to Kitabisa’s bank account.

UI Reference

Please see Here

Authorizations:
(api_key_authapi_secret_auth)
header Parameters
X-Client-Key
required
string
X-Client-Secret
required
string

Responses

Request samples

curl --location --request GET 'https://sekawan.ktbs.xyz/v1/auth/payment-method' \
--header 'X-Client-Key: {{client_key}}' \
--header 'X-Client-Secret: {{client_secret}}' \
--header 'Content-Type: application/json'

Response samples

Content type
application/json
{}

Campaign

What is the campaign? contains a page where displaying certain issues that are fundraised by individuals, communities, and NGOs. In Kitabisa, every campaign differentiates by its short URL.

Campaign List

This endpoint uses to fetch the campaign list that you’ve requested from our rep.
**Every request will return a maximum of 5 campaigns. If there are more than 5 campaigns, please hit the endpoint with the additional URL query param next and fill it with the next token from the previous response.

Authorizations:
(api_key_authapi_secret_auth)
query Parameters
next
string
Example: next=Va7AkScYQW9JRkFBQUFBQUFBQUFBbE1qZzNNek09Ag

Next token used for fetching next list of campaign

header Parameters
X-Client-Key
required
string
X-Client-Secret
required
string

Responses

Request samples

curl --location --request GET 'https://sekawan.ktbs.xyz/v1/auth/campaigns' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'X-Client-Key: {{client_key}}' \
--header 'X-Client-Secret: {{client_secret}}' \
--data-raw ''

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {},
  • "meta": {
    }
}

Campaign List (search & filter)

Broader campaign listing than /campaigns: supports free-text search, sorting, and category filtering on top of the campaigns mapped to your client. If partner_id is not passed as a query param, it falls back to the client's configured partner_id parameter.

Response Status Code

  • 123001 Campaign not found
Authorizations:
(api_key_authapi_secret_auth)
query Parameters
partner_id
string

Overrides the client's configured partner_id parameter.

next
string
Example: next=2

Page number token (1-based) used for pagination.

keyword
string

Free-text search across the client's mapped campaigns.

sort
string

Sort key forwarded to the campaign search backend, e.g. rating.

category_slug
string

Restrict results to a single campaign category by slug.

header Parameters
X-Client-Key
required
string
X-Client-Secret
required
string

Responses

Request samples

curl --location --request GET 'https://sekawan.ktbs.xyz/v1/auth/campaigns-all?keyword=medis&sort=rating' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'X-Client-Key: {{client_key}}' \
--header 'X-Client-Secret: {{client_secret}}' \
--data-raw ''

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {},
  • "meta": {
    }
}

Campaign Detail

Returns full detail for a single campaign — story, deadline, accumulated donation, progress updates, total donors, and images. The campaign must be mapped to the calling client.

Response Status Code

  • 123001 Campaign not found
Authorizations:
(api_key_authapi_secret_auth)
path Parameters
campaignID
required
string

Campaign numeric ID (e.g. 146839) or short URL/slug (e.g. babtusantim).

header Parameters
X-Client-Key
required
string
X-Client-Secret
required
string

Responses

Request samples

curl --location --request GET 'https://sekawan.ktbs.xyz/v1/auth/campaign/38661' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'X-Client-Key: {{client_key}}' \
--header 'X-Client-Secret: {{client_secret}}' \
--data-raw ''

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "meta": {
    }
}

Banner List

Use this endpoint to fetch all banner images.
**All banner response has beed ordered by weight value descending.

Authorizations:
(api_key_authapi_secret_auth)
header Parameters
X-Client-Key
required
string
X-Client-Secret
required
string

Responses

Request samples

curl --location --request GET 'https://sekawan.ktbs.xyz/v1/auth/banners' \
--header 'X-Client-Secret: {{client_secret}}' \
--header 'X-Client-Key: {{client_key}}'

Response samples

Content type
application/json
{}

Zakat

Aside general issues, Kitabisa also provide services for moslem to pay zakat regularly. To pay zakat, the calculation of total wealth shall reach minimum nisab.
**Nisab set as the fix tresholds at which a Muslim pay zakat on eligible kinds of wealth.

Zakat Profession Calculator

This endpoint use to fetch amount to 2.5% of monthly income, debt (if any), and other assets.
Example: if your total assets (after any debts owed) amounted to £10,000, then you would be required to pay £250 as Zakat.

Authorizations:
(api_key_authapi_secret_auth)
header Parameters
X-Client-Key
required
string
X-Client-Secret
required
string
Request Body schema: application/json
required

Zakat profession calculator payload

monthly_income
number non-empty
other_income
number
debt
number

Responses

Request samples

Content type
application/json
{
  • "monthly_income": 16500000,
  • "other_income": 12000000,
  • "debt": 12000000
}

Response samples

Content type
application/json
{
  • "code": 121000,
  • "data": [
    ],
  • "meta": {
    }
}