API Reference

API Reference

Base URL: https://api.checkerfin.com/v1

Authentication

All API requests are authenticated using your API key in the Authorization header. API keys are prefixed with chkr_live_ for production and chkr_test_ for the test environment.

# Example request with authentication
curl https://api.checkerfin.com/v1/payments/route \
  -H "Authorization: Bearer chkr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"amount": 49700, "currency": "SGD", "method": "paynow"}'

Test-mode keys (chkr_test_) route through simulated providers and do not generate real transactions. Transactions in test mode do not count toward your monthly quota.

Route a payment

POST /payments/route

Select the optimal payment provider for a transaction and return routing metadata. The transaction is not executed; use the returned provider and provider_payload to submit the payment to the provider directly.

Request body

Parameter Type Required Description
amount integer Yes Amount in the smallest currency unit (e.g. cents for SGD)
currency string Yes ISO 4217 currency code (SGD, MYR, THB, PHP, IDR)
method string Yes Payment method: paynow, fast, promptpay, qris, card
reference string No Your internal order or transaction reference
metadata object No Arbitrary key-value pairs passed through to reconciliation records

Response

{
  "transaction_id": "pay_7xKm4r",
  "provider": "hitpay",
  "routing_score": 97,
  "estimated_fee_sgd": 2.98,
  "compliance_status": "passed",
  "provider_payload": { /* provider-specific object */ }
}

Rate limits

API requests are rate-limited per API key. Test-mode and live-mode keys have separate limits. When a rate limit is exceeded, the API returns a 429 rate_limited error.

Plan Requests / second Transactions / month
Developer 10 500
Scale 50 25,000
Enterprise 200 Unlimited

Error codes

Checker uses standard HTTP status codes. All errors return a JSON body with a code and message field.

Status Code Description
400 invalid_request Missing or invalid parameter in the request body
401 unauthorized Missing or invalid API key
403 forbidden API key does not have permission for this action
422 compliance_hold Transaction blocked by compliance rules; check reason field
429 rate_limited Monthly transaction limit reached or per-second rate limit exceeded
503 provider_unavailable All eligible providers for this transaction are currently unavailable

Get payment

GET /payments/:transaction_id

Retrieve the routing metadata and current status for a previously routed payment. Supply the transaction_id returned by POST /payments/route.

Path parameter

ParameterTypeDescription
transaction_id string The ID returned when the payment was routed

List payments

GET /payments

Returns a paginated list of routed payments for your account. Results are ordered newest-first. Use cursor for pagination.

Query parameters

ParameterTypeDefaultDescription
limitinteger20Number of records (max 100)
cursorstringnonePagination cursor from previous response
providerstringnoneFilter by provider name
statusstringnoneFilter: routed, settled, failed

Get reconciliation record

GET /reconciliation/:transaction_id

Returns the reconciliation record for a transaction, including settlement match status and any discrepancy details.

List reconciliation records

GET /reconciliation

Returns a paginated list of reconciliation records. Use status=discrepancy to surface unmatched items.

Run compliance check

POST /compliance/check

Run a compliance check on a transaction before routing. Returns pass/fail with a structured reason code. This is called automatically during POST /payments/route but can also be called independently.

Request body

ParameterTypeRequiredDescription
amountintegerYesAmount in smallest currency unit
currencystringYesISO 4217 code
counterparty_idstringNoCounterparty identifier for FATF screening

Webhooks

Checker sends webhook events when key state changes occur. Configure your webhook endpoint in the dashboard. All POST requests include an X-Checker-Signature header for verification.

Event Description
payment.routed A routing decision was made and returned to the caller
reconciliation.matched A settlement event was matched to a transaction record
reconciliation.discrepancy A settlement amount does not match the expected routing amount
compliance.hold A transaction was blocked by a compliance rule
provider.failover Automatic failover occurred to an alternate provider