# daraja v0.1.0 - Table of Contents

> Safaricom Daraja API library
    https://developer.safaricom.co.ke
    

## Pages

- [Daraja](readme.md)
- [LICENSE](license.md)
- [Changelog](changelog.md)

## Modules

- [Daraja](Daraja.md): Elixir client for the Safaricom Daraja API.
- [Daraja.APIError](Daraja.APIError.md): Structured error for `:auth_failed`, `:http_error`, and unparsed `:request_failed`
outcomes.
- [Daraja.Auth](Daraja.Auth.md): Handles OAuth 2.0 authentication with the Daraja API.
- [Daraja.B2B](Daraja.B2B.md): Business to Business (B2B) payments.
- [Daraja.B2B.Callback](Daraja.B2B.Callback.md): Helpers for parsing asynchronous B2B callback payloads posted to `ResultURL`.
- [Daraja.B2B.Callback.Result](Daraja.B2B.Callback.Result.md): Parsed B2B callback result payload.
- [Daraja.B2B.PaymentRequest](Daraja.B2B.PaymentRequest.md): Input struct for a B2B payment request.
- [Daraja.B2B.Response](Daraja.B2B.Response.md): Response structs for the B2B Payment Request API.

- [Daraja.B2B.Response.Error](Daraja.B2B.Response.Error.md): Returned when Safaricom rejects a B2B payment request.
- [Daraja.B2B.Response.Success](Daraja.B2B.Response.Success.md): Returned when Safaricom accepts a B2B payment request.
- [Daraja.B2C](Daraja.B2C.md): Business to Customer (B2C) payments.
- [Daraja.B2C.Callback](Daraja.B2C.Callback.md): Helpers for parsing asynchronous B2C callback payloads posted to `ResultURL`.
- [Daraja.B2C.Callback.Result](Daraja.B2C.Callback.Result.md): Parsed B2C callback result payload.
- [Daraja.B2C.PaymentRequest](Daraja.B2C.PaymentRequest.md): Input struct for a B2C payment request.
- [Daraja.B2C.Response](Daraja.B2C.Response.md): Response structs for the B2C Payment Request API.

- [Daraja.B2C.Response.Error](Daraja.B2C.Response.Error.md): Returned when Safaricom rejects a B2C payment request.
- [Daraja.B2C.Response.Success](Daraja.B2C.Response.Success.md): Returned when Safaricom accepts a B2C payment request.
- [Daraja.C2B](Daraja.C2B.md): Customer to Business (C2B) — receive payment notifications for Paybill or Till numbers.
- [Daraja.C2B.Callback](Daraja.C2B.Callback.md): Helpers for parsing inbound C2B callback payloads posted by M-PESA to
the merchant's registered validation and confirmation URLs.
- [Daraja.C2B.Callback.Confirmation](Daraja.C2B.Callback.Confirmation.md): Payload received at the `ConfirmationURL` after M-PESA completes a transaction.
- [Daraja.C2B.Callback.Validation](Daraja.C2B.Callback.Validation.md): Payload received at the `ValidationURL` before M-PESA completes a transaction.
- [Daraja.C2B.RegisterUrlRequest](Daraja.C2B.RegisterUrlRequest.md): Input struct for a C2B Register URL request.
- [Daraja.C2B.Response](Daraja.C2B.Response.md): Response structs for the C2B Register URL and Simulate APIs.

- [Daraja.C2B.Response.Error](Daraja.C2B.Response.Error.md): Returned when Safaricom rejects a C2B request.
- [Daraja.C2B.Response.Success](Daraja.C2B.Response.Success.md): Returned when Safaricom successfully accepts a C2B request.
- [Daraja.C2B.SimulateRequest](Daraja.C2B.SimulateRequest.md): Input struct for a C2B Simulate transaction request (sandbox only).
- [Daraja.Callback.Guard](Daraja.Callback.Guard.md): Optional idempotency guard for inbound M-PESA callbacks.
- [Daraja.Callback.Security](Daraja.Callback.Security.md): Optional verification helpers for inbound M-PESA webhook requests.
- [Daraja.CallbackURL](Daraja.CallbackURL.md): Validates callback URLs before they are registered with Safaricom.
- [Daraja.Client](Daraja.Client.md): Connection-level handle holding Daraja credentials, merchant defaults, and the
target environment.
- [Daraja.Express](Daraja.Express.md): M-Pesa Express (STK Push) — initiates a payment prompt on a customer's phone.
- [Daraja.Express.Callback](Daraja.Express.Callback.md): Helpers for parsing STK Push (M-Pesa Express) callback payloads posted by
M-PESA to the merchant's `CallBackURL`.
- [Daraja.Express.Callback.Result](Daraja.Express.Callback.Result.md): Parsed STK Push callback payload.
- [Daraja.Express.Request](Daraja.Express.Request.md): Input struct for an STK Push request.
- [Daraja.Express.Response](Daraja.Express.Response.md): Response structs for the STK Push API.

- [Daraja.Express.Response.Error](Daraja.Express.Response.Error.md): Returned when Safaricom rejects the STK Push request.
- [Daraja.Express.Response.Success](Daraja.Express.Response.Success.md): Returned when Safaricom successfully accepts the STK Push request.
- [Daraja.HTTP.Retry](Daraja.HTTP.Retry.md): Opt-in HTTP retry with exponential backoff and jitter.
- [Daraja.HTTPClient](Daraja.HTTPClient.md): Behaviour for making HTTP requests.
- [Daraja.HTTPClient.Compliance](Daraja.HTTPClient.Compliance.md): Security checklist for custom `Daraja.HTTPClient` implementations.
- [Daraja.HTTPClient.Finch](Daraja.HTTPClient.Finch.md): Default HTTP client implementation using Finch.
- [Daraja.HTTPResponse](Daraja.HTTPResponse.md): Maps HTTP status codes from Safaricom Daraja API responses before JSON parsing.
- [Daraja.SecurityCredential](Daraja.SecurityCredential.md): Utilities for building Daraja security credentials.
- [Daraja.Supervisor](Daraja.Supervisor.md): Optional supervisor that starts `Daraja.TokenCache`. Add it to your
application's supervision tree to enable token caching across all API calls
- [Daraja.TokenCache](Daraja.TokenCache.md): ETS-backed GenServer that caches Daraja access tokens to eliminate the
network round-trip on every API call.

