Changelog

New features, improvements and fixes to the Atlas API and dashboard.

August 2026

Customer wallet fields use camelCase

BreakingAPICustomersNG

The wallet object in customer responses now always has these fields: id, accountName, accountNumber, type, category, status, currency, provider, businessId and walletId.

What you need to do

Read wallet details from the camelCase fields, for example walletId and accountNumber.

See the customers guide.

July 2026

Creating a customer requires `type` and `has_wallet`

BreakingAPICustomersNG

Creating a customer has new requirements:

  • type is required: individual or business.
  • has_wallet is required: true or false.
  • Disposable email addresses are rejected.
  • Customer endpoints are available to NGN businesses only.

What you need to do

Send type and has_wallet on every create customer request, and use a real email address for each customer.

Create customer request
{
  "type": "individual",
  "first_name": "Ada",
  "last_name": "Okafor",
  "email": "ada@example.com",
  "phone": "+2348012345678",
  "has_wallet": false
}

June 2026

API key mode must match your account

Atlas now rejects requests where the API key's mode doesn't match your account's mode:

  • a test key on an account in live mode, or
  • a live key on an account in test mode.

The API returns 401 with a message telling you which key to use.

What you need to do

Use test keys while your account is in test mode, and switch to live keys when it goes live. See the authentication guide.

May 2026

Checkout webhooks use `event_type`

Checkout webhooks now send the event name in event_type, like every other Atlas webhook. The eventType field introduced on 22 May 2026 is no longer sent.

Checkout webhook (excerpt)
{
  "event_type": "CHECKOUT_COMPLETED",
  "data": { "...": "..." }
}

What you need to do

Read event_type from checkout webhooks. If you read eventType, switch to event_type.

See the webhooks guide.

Dedicated checkout webhooks

Checkout payments now send a dedicated checkout webhook, with the checkout in the payload. The pay-in webhook is no longer sent for payments made through checkout.

Checkout webhooks use these events:

  • CHECKOUT_PROCESSED: the payment was received and is being processed.
  • CHECKOUT_COMPLETED: the checkout was paid.
  • CHECKOUT_FAILED: the payment failed or the checkout was cancelled.

On this date the event name was sent in an eventType field. It was renamed on 26 May 2026; see checkout webhooks use event_type.

What you need to do

Handle the checkout events above for checkout payments. Pay-in webhooks still arrive for inflows that are not linked to a checkout.

See the webhooks guide.

FX swap status `canceled` is now `cancelled`

FX swap responses now return cancelled for cancelled swaps, instead of canceled. Swaps also include a reason field explaining a cancellation.

What you need to do

If you compare swap status to canceled, compare to cancelled instead.

Cancelled swap (excerpt)
{
  "status": "cancelled",
  "reason": "<why the swap was cancelled>"
}

March 2026

Checkout payments send checkout events

Pay-in webhooks for payments made through checkout now set event_type to:

  • CHECKOUT_COMPLETE when the payment succeeds, or
  • CHECKOUT_FAILED when it fails.

Before this change they used IN_FLOW_SUCCESS_EVENT, the same event as other inflows. Pay-ins that are not linked to a checkout still use IN_FLOW_SUCCESS_EVENT. Checkout pay-in payloads also include checkoutReference.

These events were replaced on 22 May 2026; see dedicated checkout webhooks.

What you need to do

If you matched checkout payments on IN_FLOW_SUCCESS_EVENT, also handle CHECKOUT_COMPLETE and CHECKOUT_FAILED.

On this page