# daraja v0.1.1 - 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.