# `Daraja.B2C`
[🔗](https://github.com/okothkongo/daraja/blob/v0.1.1/lib/daraja/b2c.ex#L1)

Business to Customer (B2C) payments.

Initiate disbursement from an M-PESA organization shortcode to a customer MSISDN.

## Example

    client = Daraja.Client.new()

    Daraja.B2C.payment(client, %{
      originator_conversation_id: "my-unique-id-001",
      initiator_name: "testapi",
      security_credential: "base64-credential",
      command_id: "BusinessPayment",
      amount: 10,
      party_a: "600997",
      party_b: "254705912645",
      remarks: "Payment for promotion",
      queue_timeout_url: "https://example.com/b2c/timeout",
      result_url: "https://example.com/b2c/result",
      occasion: "PromoPayout"
    })

# `result`

```elixir
@type result() ::
  {:ok, Daraja.B2C.Response.Success.t()}
  | {:error, :invalid_request, list()}
  | {:error, :auth_failed, Daraja.APIError.t()}
  | {:error, :http_error, Daraja.APIError.t() | term()}
  | {:error, :request_failed,
     Daraja.B2C.Response.Error.t() | Daraja.APIError.t()}
```

# `payment`

```elixir
@spec payment(Daraja.Client.t(), map() | Daraja.B2C.PaymentRequest.t()) :: result()
```

Sends a B2C payment request.

Required params:
- `originator_conversation_id`
- `initiator_name`
- `security_credential` — pre-encrypted Base64 string or `{password, pem}` tuple (auto-encrypted)
- `command_id`
- `amount`
- `party_a`
- `party_b`
- `remarks`
- `queue_timeout_url`
- `result_url`

Optional params:
- `occasion`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
