1. Auth
BNW CORE SERVICE
  • Card Vaulting
    • Create a card vault session
      POST
  • Fee Lookups
    • Compute fees for a transaction
      POST
  • Intent Action Status Lookups
    • Look up the status of an intent action
      GET
  • Payment Intents
    • Create a payment intent
      POST
    • Cancel a payment intent
      PATCH
    • List payment intents
      GET
    • Retrieve a payment intent
      GET
  • Intent Actions
    • Create an intent action
      POST
    • Advance an intent action to the next step
      PATCH
    • Retrieve the authentication session for a pending redirect action
      GET
  • Accounts
    • Create a new account
      POST
    • List accounts
      GET
    • Close an account
      DELETE
    • Update an account
      PATCH
    • Retrieve an account
      GET
    • Retrieve an account's daily payout limit status
      GET
  • API Keys
    • Create an API key
    • List API keys
    • Update an API key
    • Retrieve an API key
    • Revoke an API key
    • Rotate an API key's secret
  • App Setting Values
    • Delete an app setting value
    • Retrieve an app setting value
    • List app setting values
    • Create or update an app setting value
  • Entities
    • Create an entity
    • List entities
    • Close an entity
    • Update an entity
    • Retrieve an entity
    • Set the selected entity
    • Retrieve public metadata for the authenticated entity
    • Create an entity sandbox session
    • Retrieve one of your entities, including your membership
    • List my entities
  • Counterparties
    • Create a counterparty
    • List counterparties
    • Update a counterparty
    • Retrieve a counterparty
  • Maker Checker Approver Groups
    • Create a maker-checker approver group
    • List maker-checker approver groups
    • Deactivate a maker-checker approver group
    • Update a maker-checker approver group
    • Retrieve a maker-checker approver group
  • Bulk Payout Intent Actions
    • Create bulk payout intent actions
    • Retrieve a bulk payout intent action batch
    • Preview bulk payout intent actions
  • Payout Intent Action Retries
    • Retry a failed payout intent action
  • Payout Intent Actions
    • Create a payout intent action
    • List payout intent actions
    • Retrieve a payout intent action
  • Payout Intents
    • Create a payout intent
    • List payout intents
    • Retrieve a payout intent
    • Edit a payout intent
    • Cancel a payout intent's active schedule
    • Edit a payout intent's active schedule
    • Cancel a payout intent
  • Virtual Cards
    • Create a virtual card
    • List virtual cards
    • Update a virtual card
    • Retrieve a virtual card
  • Maker Checker Action Decisions
    • Record a decision on a maker-checker action
  • Maker Checker Actions
    • Retrieve a maker-checker action's status
    • List maker-checker actions
    • Withdraw a maker-checker action
  • Payment Pages
    • Create a payment page
    • List payment pages
    • Delete a payment page
    • Edit a payment page
    • Retrieve a payment page
    • Retrieve a published payment page by slug
  • Invoices
    • Create an invoice
    • List invoices
    • Retrieve an invoice
    • Edit an invoice
    • Retrieve an invoice as a PDF
    • Download a public invoice as a PDF
    • Retrieve a public invoice by invoice number
    • Send a reminder for an invoice
    • Send or resend an invoice
  • Entity Data
    • Retrieve the data submission checklist for an entity
    • Submit entity data for KYC requirements
    • List entity data
    • Review and decide on entity data submission
  • Unified Verifs
    • Proxy a DELETE request to the Verification API
    • Proxy a GET request to the Verification API
    • Proxy a PATCH request to the Verification API
    • Forward a POST request to the Verification API
  • Identity Session
    • List identity sessions
    • Complete the MFA step of a pending login session
    • Request a login MFA challenge or one-time-passcode
  • Identity Sessions
    • Terminate all active sessions for an identity
    • Terminate an identity session
  • Entity Sandboxes
    • Create an additional named entity sandbox
    • Delete an entity sandbox
    • Rename an entity sandbox
  • Identity Mfa
    • Passkeys
    • Enroll a new MFA method for the authenticated identity
    • List MFA methods for the authenticated identity
    • Retrieve an identity MFA method
    • Advance or transition the state of an existing MFA method
  • Auth
    • Log in with email and password
      POST
    • Register a new identity
      POST
    • Request an email verification link
      POST
    • Verify an email address
      PATCH
    • Request a password reset
      POST
    • Complete a password reset with a one-time token
      PATCH
    • Change the authenticated identity's password
      PATCH
    • Confirm a pending email address change
      PATCH
    • Request a change of the authenticated identity's email address
      POST
    • Resend an identity-confirmation email
      POST
    • Confirm a phone number change for the current identity
      PATCH
    • Request a phone number change for the current identity
      POST
  • Virtual Card Actions
    • Perform an action on a virtual card
  • ACLs
    • List all ACL definitions
  • Account Transfers
    • Create an account transfer
    • List account transfers
    • Retrieve an account transfer
  • ACL Roles
    • List all ACL roles
  • Counterparty Instruments
    • Add a bank account to a counterparty
    • List counterparty instruments
    • Remove a counterparty's bank account
  • Currency Conversion Quotes
    • Create a currency conversion quote
  • Entity Access
    • Change a team member's role on an entity
    • Remove a member's access to an entity
    • List an entity's team members
  • Entity Access Invites
    • Accept an entity access invitation
    • Invite a new member to an entity
    • List entity access invites
    • Revoke an entity access invite
  • Entity Ownership Transfers
    • Transfer ownership of an entity
  • Identity
    • Update the authenticated identity's name
    • Retrieve the authenticated identity
  • Money Action Confirmations
    • Confirm a money-moving action with PIN (and, where required, an authenticator code)
  • Payout Intent Action Returns
    • Record a payout intent action as returned
  • Payout Intent Action Status Logs
    • List a payout intent action's status history
  • Payout Intent Schedule Actions
    • Apply an action to a payout intent's schedule
  • Sandbox
    • Credit test money into an entity's sandbox wallet
    • Reset a shadow entity's sandbox
    • Get or create the sandbox identity for the authenticated identity
    • Provision a sandbox identity and master API key
    • Exchange the sandbox master API key for a login session
    • Fund an entity's test wallet with sandbox test money
  • Transactions
    • Retrieve a transaction
    • List transactions
  • Virtual Card Activity
    • List a virtual card's activity
  • Virtual Card Sessions
    • Create a virtual card viewing session
  • Virtual Card Topups
    • Top up a virtual card
  • Virtual Card Transaction Callbacks
    • Handle an inbound virtual card transaction callback
  • Virtual Card Withdrawals
    • Withdraw funds from a virtual card
  • Schemas
    • ErrorResponse
    • SuccessResponse
    • AccountBalance
    • Account
  1. Auth

Log in with email and password

POST
/identity-sessions
Authenticates an identity using an email address and password. On success this creates either a fully active session or a pending-MFA session, depending on whether the identity has any active multi-factor authentication methods enrolled.
This endpoint is intentionally unauthenticated (no Authorization header is required or checked) since it is the entry point used to obtain a session.
Before validating credentials, the request is checked against per-IP and per-account failed-login-attempt windows and against the IP blocklist:
If the originating IP address has recorded MAX_LOGIN_ATTEMPTS (default 5) failed attempts within the trailing LOGIN_LOCK_WINDOW_MS window (default 15 minutes), the request is rejected before the account is even looked up.
If the IP address is on the blocklist, the request is rejected immediately.
Once the account is identified, the same failed-attempt threshold is enforced per-account within the same trailing window.
Every attempt (matched account or not) is recorded for attempt-tracking purposes; a failed attempt against an unknown email is recorded against the IP only, while a failed attempt against a known email is recorded against both the IP and the account.
The identity's email-password auth method must exist, be in active status, and have been verified (verified_at set) before a password check is performed. The parent identity must not be disabled or suspended.
If the credentials are valid and the identity has one or more active MFA methods enrolled, a pending-mfa session is created (short-lived, expiring after MFA_PENDING_SESSION_EXPIRES_IN_MS, default 5 minutes) and the response indicates mfa_required: true along with the available next steps for completing MFA. If the identity has no active MFA methods, a normal active session is created immediately and mfa_required: false is returned along with the full session token and identity summary.

Request

Body Params application/jsonRequired

Examples

Responses

🟢201
application/json
Authentication succeeded. Either a pending-MFA session or a fully active session was created, depending on whether the identity has active MFA methods enrolled.
Bodyapplication/json

🟠400
🟠404
Request Request Example
Shell
JavaScript
Java
Swift
curl --location '/identity-sessions' \
--header 'Content-Type: application/json' \
--data-raw '{
    "email": "jane.doe@example.com",
    "password": "S3cur3P@ssword!"
}'
Response Response Example
201 - No MFA enrolled - session is immediately active
{
    "message": "Success",
    "status": "success",
    "data": {
        "mfa_required": false,
        "session_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uX2lkIjoiMDFIWDhYS1haUFlTVkFFOEhIWlhNVFpGUlIifQ.abc123",
        "session_id": "01HX8XKXZPYSVAE8HHZXMTZFRR",
        "identity_id": "01HX8XKXZPYSVAE8HHZXMTZFAA",
        "expires_at": 1754560800000,
        "identity": {
            "name": "Jane Doe",
            "primary_email": "jane.doe@example.com",
            "status": "active"
        }
    }
}
Modified at 2026-09-28 12:45:48
Previous
Advance or transition the state of an existing MFA method
Next
Register a new identity
Built with