Skip to content

Glossary

Terms from the SNAP standard and the Indonesian payments ecosystem, as used consistently across this SDK’s naming and documentation.

TermMeaning
SNAPStandar Nasional Open API Pembayaran — Bank Indonesia’s national standard for open payment APIs, the standard this package implements.
ASPIAsosiasi Sistem Pembayaran Indonesia — the industry association that publishes and maintains the SNAP Developer Portal this package’s endpoint bindings are built against.
PJPPenyedia Jasa Pembayaran — Payment Service Provider. The bank, e-wallet, or other regulated entity on either side of a SNAP transaction.
Penyedia LayananThe server side of a SNAP integration — the PJP receiving and answering a request. ServerVerifier is built for this role (see Verifying inbound requests).
Service CodeA 2-digit code identifying one specific SNAP endpoint within the standard (e.g. 11 for Balance Inquiry). The Status table maps each domain package to its Service Code range.
responseCodeThe SNAP standard’s own 7-digit outcome code, embedded in every response body: HTTPStatus(3) + ServiceCode(2) + CaseCode(2). See ParseResponseCode.
EnvelopeThis package’s decoded generic response shape (snap.Envelope): the transport-level HTTP status plus whatever SNAP envelope fields the body carried. See Transport.
B2BBusiness-to-Business — a client_credentials access-token grant identifying the integration itself, not an individual end customer. Cached by TokenManager.AccessTokenB2B.
B2B2CBusiness-to-Business-to-Consumer — an authorization_code/refresh_token grant tied to one specific end customer, obtained via an OAuth-style flow (see GetOAuthURL). Never cached, since each token belongs to one customer.
Symmetric / Asymmetric signingThe two SNAP signature modes agreed with a partner at registration: symmetric (HMAC-SHA512, a shared ClientSecret) or asymmetric (SHA256withRSA, a crypto.Signer keypair). See Signing.
Mandatory / Optional / ConditionalThe standard’s three field-presence classes. This package expresses them as Go’s omitempty — see the Core Conventions caveat on how Optional and Conditional collapse into one omitempty tag.
Idempotency / X-EXTERNAL-IDMost write endpoints are not idempotent — retrying with a fresh X-EXTERNAL-ID risks a duplicate transaction, since the server’s own duplicate-detection keys on that header. Each endpoint’s reference page states this explicitly.
Virtual Account (VA)A temporary or persistent account number a PJP issues so a payer can pay into it; see the Virtual Account reference group.
MPM / CPMMerchant-Presented Mode and Customer-Presented Mode — the two SNAP QRIS payment flows, distinguished by which party displays the QR code. See QR / MPM (credit side) and CPM (debit side).
OTTOne-Time Token — a short-lived token ApplyOTT issues to authorize a single QR MPM payment.
RTGS / SKNBI / BI-FASTBank Indonesia’s three interbank transfer rails: RTGS (high-value, settles immediately), SKNBI (batch clearing), and BI-FAST (real-time retail transfers). Each has its own Trigger Transfer or Direct Debit endpoint and inbound notification type.
MoneyThis package’s shared {value, currency} amount type (snap.Money) — value is a decimal string, never a float, to avoid binary floating-point rounding on money. See Core Conventions.