1. Identity Mfa
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
      POST
    • List API keys
      GET
    • Update an API key
      PATCH
    • Retrieve an API key
      GET
    • Revoke an API key
      DELETE
    • Rotate an API key's secret
      POST
  • 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
      POST
    • List MFA methods for the authenticated identity
      GET
    • Retrieve an identity MFA method
      GET
    • Advance or transition the state of an existing MFA method
      PATCH
  • Auth
    • Log in with email and password
    • Register a new identity
    • Request an email verification link
    • Verify an email address
    • Request a password reset
    • Complete a password reset with a one-time token
    • Change the authenticated identity's password
    • Confirm a pending email address change
    • Request a change of the authenticated identity's email address
    • Resend an identity-confirmation email
    • Confirm a phone number change for the current identity
    • Request a phone number change for the current identity
  • 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. Identity Mfa

Advance or transition the state of an existing MFA method

PATCH
/identity-mfas/{id}
Drives an identity MFA method through its lifecycle: verifying a pending enrollment/deactivation code, verifying a passkey registration, changing or resetting a secure-pin PIN, initiating deactivation, disabling a secure-pin or passkey method, or reactivating an inactive method. The identity is always taken from the authenticated session's JWT and cross-checked against the record's identity_id — a 404 is returned if the id does not belong to the caller. Exactly one of the following transitions is applied per request, determined by the record's current status/type combined with the fields supplied in the body; any other combination returns a 400:
Verify a pending code — supply code while the record is pending (initial enrollment) or pending-deactivation (confirming a deactivation). For email-mobile methods this is checked against the emailed one-time code; for authenticator methods it is checked against the current TOTP code. On success from pending, the record becomes active; if it is an authenticator method, a fresh set of one-time backup codes is generated and returned in backup_codes (visible only in this response). On success from pending-deactivation, the record becomes inactive. Failed attempts are rate-limited: after 5 failed attempts within a 15-minute window, further attempts return a 429 until the window elapses.
Verify a passkey registration — supply attestation_response while the record is a pending passkey method. The response is verified against the registration challenge issued when the method was created (which must not have expired), and the resulting credential must not already be registered to any identity. On success the record becomes active and its WebAuthn credential is stored.
Change a PIN — supply both current_pin and new_pin while the record is an active secure-pin method. current_pin must match the currently configured PIN (rate-limited the same way as code verification, and returns 401 on mismatch); new_pin must be exactly 6 digits and must not be a trivially guessable sequence (all one digit, or an ascending/descending run such as 123456 or 654321).
Reset a PIN — supply security_answers (both configured questions, in any order) and new_pin, but omit current_pin, while the record is an active secure-pin method. Both security answers must match the previously configured hashes (rate-limited the same way) before the same new_pin rules from the change-PIN transition apply.
Initiate deactivation — supply status: "pending-deactivation" while the record is active. Rejected with a 403 if this would leave the identity with zero remaining active login-context methods. For email-mobile methods this immediately emails a one-time confirmation code (expires in 5 minutes) that must then be supplied via the code-verification transition above to complete deactivation; other method types move to pending-deactivation without this endpoint generating a follow-up code.
Disable a secure-pin method — supply status: "inactive" with security_answers (both configured questions, in any order) while the record is an active secure-pin method. Both answers must match the previously configured hashes or a 400 is returned; this path is also subject to the same 5-attempts/15-minute rate limit.
Disable a passkey method — supply status: "inactive" while the record is an active passkey method. No further verification is required beyond the last-active-login-method check (403) described above.
Reactivate — supply status: "active" while the record is inactive. No additional verification is required for this transition.
The full, updated record is returned on success. Sensitive fields (the encrypted TOTP secret, PIN hash, security answer hashes, backup code hashes, and the passkey's public key/credential id/challenge) are never included in the response.

Request

Authorization
JWT Bearer
Add the parameter
Authorization
to Headers
Example:
Authorization: ********************
or
Path Params

Body Params application/jsonRequired

Examples

Responses

🟢200
application/json
The MFA method's state transition was applied and the updated record is returned.
Bodyapplication/json

🟠400
🟠401
🟠403
🟠404
🟠409
🟠429
Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location --request PATCH '/identity-mfas/01HXYZ1234567890ABCDEFGHIJ' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
    "code": "482913"
}'
Response Response Example
200 - Authenticator method activated via code verification, returning backup codes
{
    "message": "Identity MFA updated successfully",
    "status": "success",
    "data": {
        "id": "01HXYZ1234567890ABCDEFGHIJ",
        "identity_id": "01HABC9876543210ZYXWVUTSRQ",
        "type": "authenticator",
        "status": "active",
        "contexts": [
            "login"
        ],
        "system_meta": {
            "email": null,
            "mobile": null,
            "security_questions": null,
            "has_backup_codes": true,
            "passkey": null
        },
        "backup_codes": [
            "8f2a1c7d",
            "3e9b6f21",
            "a04d7c88",
            "1b5e9a33",
            "6c7f2d10",
            "d9e83a56",
            "f42c1b09",
            "7a3d6e94",
            "0e5b8c72",
            "2c9f4a61"
        ],
        "created": 1722869520000,
        "updated": 1722955920000
    }
}
Modified at 2026-09-30 00:29:30
Previous
Retrieve an identity MFA method
Next
Log in with email and password
Built with