curl --request GET \
--url https://app.dimepayments.com/api/merchant/application-status \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"data": []
}'import requests
url = "https://app.dimepayments.com/api/merchant/application-status"
payload = { "data": [] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({data: []})
};
fetch('https://app.dimepayments.com/api/merchant/application-status', 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://app.dimepayments.com/api/merchant/application-status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://app.dimepayments.com/api/merchant/application-status"
payload := strings.NewReader("{\n \"data\": []\n}")
req, _ := http.NewRequest("GET", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.get("https://app.dimepayments.com/api/merchant/application-status")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dimepayments.com/api/merchant/application-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": []\n}"
response = http.request(request)
puts response.read_body{
"data": {
"sid": "00069",
"name": "Acme Inc",
"status": "underwriting",
"application_status": "needs_documents",
"boarded": false,
"application_submitted_at": "2024-01-15T14:02:11+00:00"
}
}{
"errors": {
"data.sid": [
"The data.sid field is required."
]
}
}{
"data": {
"message": "Permission Denied."
}
}{
"data": {
"message": "No such Merchant"
}
}Get a Merchant's onboarding status
Where a merchant sits in onboarding, from first contact through to being
boarded and able to take money. Use this to follow up an application you
sent with get-form-link without having to ask us.
status is the headline. application_status is the underlying
application record, and is the field to read when status is
underwriting — that column covers both “sent to the processor and
waiting” and “more documents have been asked for”, and only the second
one needs you to do something.
Rather than polling this, subscribe to the application_status_changed
webhook, which carries exactly these fields and fires on every change.
Poll only to reconcile after an outage.
status is one of: lead, discovery, proposal,
application_in_progress, underwriting, live,
cancellation_pending, churned, declined. A merchant that has not
started onboarding at all may report null.
application_in_progress begins when the merchant opens the onboarding
link and saves the first step — the application record does not exist
until they do. So a link you requested and they never opened leaves them
on lead, discovery or proposal: no status currently tells you an
invitation is outstanding. If you need to chase unopened invitations,
track when you called get-form-link on your side.
application_status is one of: draft, pending_review, submitted,
approved, needs_documents, failed, or null when no application
has been started.
A merchant can be live without application_status being approved.
Declines and holds are resolved out of band with underwriting, and the
signal that the account came good is the credentials that board the
merchant. boarded is the ground truth for “can they take money”.
curl --request GET \
--url https://app.dimepayments.com/api/merchant/application-status \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"data": []
}'import requests
url = "https://app.dimepayments.com/api/merchant/application-status"
payload = { "data": [] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({data: []})
};
fetch('https://app.dimepayments.com/api/merchant/application-status', 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://app.dimepayments.com/api/merchant/application-status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://app.dimepayments.com/api/merchant/application-status"
payload := strings.NewReader("{\n \"data\": []\n}")
req, _ := http.NewRequest("GET", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.get("https://app.dimepayments.com/api/merchant/application-status")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dimepayments.com/api/merchant/application-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": []\n}"
response = http.request(request)
puts response.read_body{
"data": {
"sid": "00069",
"name": "Acme Inc",
"status": "underwriting",
"application_status": "needs_documents",
"boarded": false,
"application_submitted_at": "2024-01-15T14:02:11+00:00"
}
}{
"errors": {
"data.sid": [
"The data.sid field is required."
]
}
}{
"data": {
"message": "Permission Denied."
}
}{
"data": {
"message": "No such Merchant"
}
}
