Skip to main content
POST
Error
Use the Applications API to start onboarding a cardholder into your White Label App (WLA) program. It’s the only step in WLA onboarding that requires a call from you — once Marqeta approves an application, account and card setup happen automatically, with no additional requests on your end.

Submit an application

Send a POST request to /applications with the applicant’s identity details to submit a new application. Authenticate with your API key credential over HTTP Basic auth; this endpoint requires WRITE authority. Marqeta screens the applicant against sanctions and politically exposed persons (PEP) lists for their region, then returns a kyc_url once the application reaches KYC status. Redirect the applicant to that URL to complete Know Your Customer (KYC) or Know Your Business (KYB) verification through a hosted webview that walks them through ID capture and a selfie. The user object is required and must include id, name, email, and phone_number. You can optionally include national_id, address, shipping_address, tax_profile, financial_profile, terms, and device to reduce how much information the applicant has to provide during KYC.
The response includes kyc_url only if status is KYC.
To retrieve a user’s existing applications, see Get Applications.

Application lifecycle

An application only moves forward through its lifecycle, never backward, with status changes only occurring from a perivous state to a subsequent state in the list. For example, an application can transition from SUBMITTED to KYC or APPROVED. Once a state is reached, it cannot move back to a previous state. Subscribe to the outbound application events below to track each status change instead of polling /applications.

Outbound application events

Marqeta sends application status-change events to your configured webhook endpoint. Every event payload includes application_id and user_id. The payload also includes kyc_url if the event type is APPLICATION_KYC. Some events are optional, which means that the you can opt to not send these.
Configure your webhook endpoint using the same webhook resources described in Webhooks, including ping and retry behavior.

Authorizations

Authorization
string
header
required

Token used to verify user identity and also authorize user to use service.

Body

application/json
user
object
required

Information on the user that is applying for an account.

national_id
object

Information about the user's national ID.

address
object

Information about the user's address. Note that depending on the country, some of the address components may not be available.

shipping_address
object

Information about the user's address. Note that depending on the country, some of the address components may not be available.

tax_profile
object

Information about the user's tax profile.

terms
object[]
device
object

Information about the user device used to submit the application.

options
object

Options for application creation.

financial_profile
object

Information about the user's financial profile.

Response

Successful operation

id
string
required

Partner-generated application ID.

Example:

"16c4fb2d-3321-46b3-acf6-567ceba2d3fc"

status
enum<string>

The status of the application. It can be used to determine the next steps in the application process.

Status changes only occur from a previous state to a subsequent state in the list. For example, an application can transition from SUBMITTED to KYC or APPROVED. Once a state is reached, it cannot move back to a previous state. Some events are optional, which means that the partner can opt to not send these.

For asynchronous flows, the initial state is SUBMITTED, and status changes are delivered to the partner via Application event webhooks.

Available options:
SUBMITTED,
KYC,
MANUAL_REVIEW,
APPROVED,
REJECTED,
EXPIRED
Example:

"KYC"

kyc_url
string

The webview URL for starting the KYC flow with the user. This must be present if the status value is KYC.

Example:

"https://bank-partner/kyc_webview?user_id=8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw=="