curl --request POST \
--url https://sandbox-api.marqeta.com/v3/applications \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'X-Marqeta-Program-Short-Code: <x-marqeta-program-short-code>' \
--data '
{
"user": {
"id": "8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==",
"first_name": "John",
"last_name": "Doe",
"email": "john@mail.com",
"phone_number": "+14155552671",
"middle_name": "Garrett",
"date_of_birth": {
"day": 1,
"month": 1,
"year": 1980
},
"place_of_birth": {
"city": "San Francisco",
"region": "CA",
"country_iso2": "US"
},
"country_iso2": "US",
"role": "DRIVER",
"loyalty_tier": "GOLD",
"signup_date": "2021-09-01T12:00:00Z"
}
}
'import requests
url = "https://sandbox-api.marqeta.com/v3/applications"
payload = { "user": {
"id": "8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==",
"first_name": "John",
"last_name": "Doe",
"email": "john@mail.com",
"phone_number": "+14155552671",
"middle_name": "Garrett",
"date_of_birth": {
"day": 1,
"month": 1,
"year": 1980
},
"place_of_birth": {
"city": "San Francisco",
"region": "CA",
"country_iso2": "US"
},
"country_iso2": "US",
"role": "DRIVER",
"loyalty_tier": "GOLD",
"signup_date": "2021-09-01T12:00:00Z"
} }
headers = {
"X-Marqeta-Program-Short-Code": "<x-marqeta-program-short-code>",
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Marqeta-Program-Short-Code': '<x-marqeta-program-short-code>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
user: {
id: '8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==',
first_name: 'John',
last_name: 'Doe',
email: 'john@mail.com',
phone_number: '+14155552671',
middle_name: 'Garrett',
date_of_birth: {day: 1, month: 1, year: 1980},
place_of_birth: {city: 'San Francisco', region: 'CA', country_iso2: 'US'},
country_iso2: 'US',
role: 'DRIVER',
loyalty_tier: 'GOLD',
signup_date: '2021-09-01T12:00:00Z'
}
})
};
fetch('https://sandbox-api.marqeta.com/v3/applications', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox-api.marqeta.com/v3/applications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'user' => [
'id' => '8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==',
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john@mail.com',
'phone_number' => '+14155552671',
'middle_name' => 'Garrett',
'date_of_birth' => [
'day' => 1,
'month' => 1,
'year' => 1980
],
'place_of_birth' => [
'city' => 'San Francisco',
'region' => 'CA',
'country_iso2' => 'US'
],
'country_iso2' => 'US',
'role' => 'DRIVER',
'loyalty_tier' => 'GOLD',
'signup_date' => '2021-09-01T12:00:00Z'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json",
"X-Marqeta-Program-Short-Code: <x-marqeta-program-short-code>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox-api.marqeta.com/v3/applications"
payload := strings.NewReader("{\n \"user\": {\n \"id\": \"8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@mail.com\",\n \"phone_number\": \"+14155552671\",\n \"middle_name\": \"Garrett\",\n \"date_of_birth\": {\n \"day\": 1,\n \"month\": 1,\n \"year\": 1980\n },\n \"place_of_birth\": {\n \"city\": \"San Francisco\",\n \"region\": \"CA\",\n \"country_iso2\": \"US\"\n },\n \"country_iso2\": \"US\",\n \"role\": \"DRIVER\",\n \"loyalty_tier\": \"GOLD\",\n \"signup_date\": \"2021-09-01T12:00:00Z\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Marqeta-Program-Short-Code", "<x-marqeta-program-short-code>")
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox-api.marqeta.com/v3/applications")
.header("X-Marqeta-Program-Short-Code", "<x-marqeta-program-short-code>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"user\": {\n \"id\": \"8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@mail.com\",\n \"phone_number\": \"+14155552671\",\n \"middle_name\": \"Garrett\",\n \"date_of_birth\": {\n \"day\": 1,\n \"month\": 1,\n \"year\": 1980\n },\n \"place_of_birth\": {\n \"city\": \"San Francisco\",\n \"region\": \"CA\",\n \"country_iso2\": \"US\"\n },\n \"country_iso2\": \"US\",\n \"role\": \"DRIVER\",\n \"loyalty_tier\": \"GOLD\",\n \"signup_date\": \"2021-09-01T12:00:00Z\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.marqeta.com/v3/applications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Marqeta-Program-Short-Code"] = '<x-marqeta-program-short-code>'
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"user\": {\n \"id\": \"8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@mail.com\",\n \"phone_number\": \"+14155552671\",\n \"middle_name\": \"Garrett\",\n \"date_of_birth\": {\n \"day\": 1,\n \"month\": 1,\n \"year\": 1980\n },\n \"place_of_birth\": {\n \"city\": \"San Francisco\",\n \"region\": \"CA\",\n \"country_iso2\": \"US\"\n },\n \"country_iso2\": \"US\",\n \"role\": \"DRIVER\",\n \"loyalty_tier\": \"GOLD\",\n \"signup_date\": \"2021-09-01T12:00:00Z\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "16c4fb2d-3321-46b3-acf6-567ceba2d3fc",
"status": "KYC",
"kyc_url": "https://kyc-provider.example.com/verify?code=8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8"
}{
"reason": {
"code": "APPLICATION_ERROR",
"message": "<string>"
},
"extras": {}
}{
"reason": {
"code": "APPLICATION_ERROR",
"message": "<string>"
},
"extras": {}
}Post Application
Submits a new financial-service account application to Marqeta
curl --request POST \
--url https://sandbox-api.marqeta.com/v3/applications \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'X-Marqeta-Program-Short-Code: <x-marqeta-program-short-code>' \
--data '
{
"user": {
"id": "8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==",
"first_name": "John",
"last_name": "Doe",
"email": "john@mail.com",
"phone_number": "+14155552671",
"middle_name": "Garrett",
"date_of_birth": {
"day": 1,
"month": 1,
"year": 1980
},
"place_of_birth": {
"city": "San Francisco",
"region": "CA",
"country_iso2": "US"
},
"country_iso2": "US",
"role": "DRIVER",
"loyalty_tier": "GOLD",
"signup_date": "2021-09-01T12:00:00Z"
}
}
'import requests
url = "https://sandbox-api.marqeta.com/v3/applications"
payload = { "user": {
"id": "8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==",
"first_name": "John",
"last_name": "Doe",
"email": "john@mail.com",
"phone_number": "+14155552671",
"middle_name": "Garrett",
"date_of_birth": {
"day": 1,
"month": 1,
"year": 1980
},
"place_of_birth": {
"city": "San Francisco",
"region": "CA",
"country_iso2": "US"
},
"country_iso2": "US",
"role": "DRIVER",
"loyalty_tier": "GOLD",
"signup_date": "2021-09-01T12:00:00Z"
} }
headers = {
"X-Marqeta-Program-Short-Code": "<x-marqeta-program-short-code>",
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Marqeta-Program-Short-Code': '<x-marqeta-program-short-code>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
user: {
id: '8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==',
first_name: 'John',
last_name: 'Doe',
email: 'john@mail.com',
phone_number: '+14155552671',
middle_name: 'Garrett',
date_of_birth: {day: 1, month: 1, year: 1980},
place_of_birth: {city: 'San Francisco', region: 'CA', country_iso2: 'US'},
country_iso2: 'US',
role: 'DRIVER',
loyalty_tier: 'GOLD',
signup_date: '2021-09-01T12:00:00Z'
}
})
};
fetch('https://sandbox-api.marqeta.com/v3/applications', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox-api.marqeta.com/v3/applications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'user' => [
'id' => '8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==',
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john@mail.com',
'phone_number' => '+14155552671',
'middle_name' => 'Garrett',
'date_of_birth' => [
'day' => 1,
'month' => 1,
'year' => 1980
],
'place_of_birth' => [
'city' => 'San Francisco',
'region' => 'CA',
'country_iso2' => 'US'
],
'country_iso2' => 'US',
'role' => 'DRIVER',
'loyalty_tier' => 'GOLD',
'signup_date' => '2021-09-01T12:00:00Z'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json",
"X-Marqeta-Program-Short-Code: <x-marqeta-program-short-code>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox-api.marqeta.com/v3/applications"
payload := strings.NewReader("{\n \"user\": {\n \"id\": \"8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@mail.com\",\n \"phone_number\": \"+14155552671\",\n \"middle_name\": \"Garrett\",\n \"date_of_birth\": {\n \"day\": 1,\n \"month\": 1,\n \"year\": 1980\n },\n \"place_of_birth\": {\n \"city\": \"San Francisco\",\n \"region\": \"CA\",\n \"country_iso2\": \"US\"\n },\n \"country_iso2\": \"US\",\n \"role\": \"DRIVER\",\n \"loyalty_tier\": \"GOLD\",\n \"signup_date\": \"2021-09-01T12:00:00Z\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Marqeta-Program-Short-Code", "<x-marqeta-program-short-code>")
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox-api.marqeta.com/v3/applications")
.header("X-Marqeta-Program-Short-Code", "<x-marqeta-program-short-code>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"user\": {\n \"id\": \"8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@mail.com\",\n \"phone_number\": \"+14155552671\",\n \"middle_name\": \"Garrett\",\n \"date_of_birth\": {\n \"day\": 1,\n \"month\": 1,\n \"year\": 1980\n },\n \"place_of_birth\": {\n \"city\": \"San Francisco\",\n \"region\": \"CA\",\n \"country_iso2\": \"US\"\n },\n \"country_iso2\": \"US\",\n \"role\": \"DRIVER\",\n \"loyalty_tier\": \"GOLD\",\n \"signup_date\": \"2021-09-01T12:00:00Z\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.marqeta.com/v3/applications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Marqeta-Program-Short-Code"] = '<x-marqeta-program-short-code>'
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"user\": {\n \"id\": \"8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8_-AyiMUmZHkd-zp7qrhiJITsCBlOeJ4db0NOfG5kas5QDcVR1cxU36EGwaxcgB0Qk4xgj-ViS-TMw==\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@mail.com\",\n \"phone_number\": \"+14155552671\",\n \"middle_name\": \"Garrett\",\n \"date_of_birth\": {\n \"day\": 1,\n \"month\": 1,\n \"year\": 1980\n },\n \"place_of_birth\": {\n \"city\": \"San Francisco\",\n \"region\": \"CA\",\n \"country_iso2\": \"US\"\n },\n \"country_iso2\": \"US\",\n \"role\": \"DRIVER\",\n \"loyalty_tier\": \"GOLD\",\n \"signup_date\": \"2021-09-01T12:00:00Z\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "16c4fb2d-3321-46b3-acf6-567ceba2d3fc",
"status": "KYC",
"kyc_url": "https://kyc-provider.example.com/verify?code=8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8"
}{
"reason": {
"code": "APPLICATION_ERROR",
"message": "<string>"
},
"extras": {}
}{
"reason": {
"code": "APPLICATION_ERROR",
"message": "<string>"
},
"extras": {}
}/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.
kyc_url only if status is KYC.Application lifecycle
An application only moves forward through its lifecycle, never backward, with status changes only occurring from a previous state to a subsequent state in the list. For example, an application can transition fromSUBMITTED to KYC or APPROVED. Once a state is reached, it cannot move back to a previous state.
| Status | Description | Final State |
|---|---|---|
| SUBMITTED | Submitted and received by the banking partner. | No |
| KYC | Know Your Customer (KYC) verification is in progress. | No |
| MANUAL_REVIEW | Under manual review by the banking partner’s team. | No |
| APPROVED | Approved. Marqeta can now create an account for the applicant. | Yes |
| REJECTED | Rejected. Marqeta creates no account. | Yes |
| EXPIRED | Expired. Marqeta creates no account. | Yes |
/applications.
Outbound application events
Marqeta sends application status-change events to your configured webhook endpoint. Every event payload includesapplication_id and user_id. The payload also includes kyc_url if the event type is APPLICATION_KYC. Some events are optional, which means that you can opt to not send these.
| Event type | Delivery | Notes |
|---|---|---|
| APPLICATION_SUBMITTED | Optional | — |
| APPLICATION_KYC | Required | Might include kyc_url |
| APPLICATION_MANUAL_REVIEW | Optional | — |
| APPLICATION_APPROVED | Required | Final status |
| APPLICATION_REJECTED | Required | Final status |
| APPLICATION_EXPIRED | Optional | Final status |
Authorizations
Token used to verify caller identity and authorize use of the service.
Headers
Identifies the program this request belongs to. Every application, and every piece of program-configured reference data it refers to, is scoped by this value.
A missing or empty value is rejected with 400. A value the credential is not authorized for is rejected with 401.
50Body
Information on the user that is applying for an account.
Show child attributes
Show child attributes
Information about the user's national ID.
Show child attributes
Show child attributes
Information about the user's address. Note that depending on the country, some of the address components may not be available.
Show child attributes
Show child attributes
Information about the user's address. Note that depending on the country, some of the address components may not be available.
Show child attributes
Show child attributes
Information about the user's tax profile.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Information about the user device used to submit the application.
Show child attributes
Show child attributes
Options for application creation. Not currently implemented — any value supplied is ignored.
Show child attributes
Show child attributes
Information about the user's financial profile.
Show child attributes
Show child attributes
Map of additional program-specific information. See Application.extras.
Show child attributes
Show child attributes
Response
Successful operation
Marqeta-generated application ID.
"16c4fb2d-3321-46b3-acf6-567ceba2d3fc"
The status of the application.
It can be used to determine the next steps in the application process.
- "SUBMITTED" The application has been submitted and received.
- "KYC" The application is in KYC (Know Your Customer) status.
- "MANUAL_REVIEW" The application is under manual review.
- "APPROVED" The application has been approved (final state).
- "REJECTED" The application has been rejected (final state).
- "EXPIRED" The application has expired (final state).
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.
Not every program produces every status — MANUAL_REVIEW and EXPIRED
in particular depend on the program's KYC workflow and banking partner.
Treat any status in this list as possible, and do not depend on a
specific one being emitted.
For asynchronous flows the initial state is SUBMITTED, and status
changes are delivered to the platform via Application event webhooks.
SUBMITTED, KYC, MANUAL_REVIEW, APPROVED, REJECTED, EXPIRED "KYC"
The webview URL for starting the KYC flow with the user. This must be present if the status value is KYC.
"https://kyc-provider.example.com/verify?code=8E13_EWEF5a9GuatLqwm5eD6kQRFloKKxIkHM14YiIbkrxpfSNft8"
Was this page helpful?