POST /v1/merchants/apply
Apply as a merchant
Host https://onboard.socialmatterspay.com
EIN, SSN and the payout account are sealed before storage. In the sandbox the merchant is approved and activated at once; in production the application waits for SMP's review. The API key is shown once.
Request body
| Field | Notes | ||||||||
|---|---|---|---|---|---|---|---|---|---|
legal_name requiredstring | — | ||||||||
dba_namestring | — | ||||||||
ein requiredstring | pattern ^\d{2}-?\d{7}$ | ||||||||
owner_name requiredstring | — | ||||||||
owner_ssn requiredstring | pattern ^\d{3}-?\d{2}-?\d{4}$ | ||||||||
owner_dob requiredstring (date) | — | ||||||||
owner_address requiredstring | — | ||||||||
business_address requiredstring | — | ||||||||
business_type requiredstring | — | ||||||||
website_url requiredstring | pattern ^https:// | ||||||||
description requiredstring | — | ||||||||
estimated_monthly_volume_cents requiredinteger | at least 0 | ||||||||
category requiredstring | — | ||||||||
statement_descriptor requiredstring | pattern ^[A-Za-z0-9 .&-]{1,12}$ | ||||||||
payout_account requiredobject | 4 child fields
|
Responses
| Status | Meaning |
|---|---|
201 | Application received |
400 | Error — error shape and codes |
Fields of data (201)
| Field | Notes |
|---|---|
objectstring = "merchant_application" | — |
merchant_idstring | — |
statusstring | — |
ofac_statusstring | — |
api_keystring | Shown once |
messagestring | — |
sanctions_screening_idstring | The screening of this application against the sanctions lists |
referralenum | The referral code sent: none sent, held while the application is reviewed as a possible duplicate, attributed to its partner, or not a code that exists. one of none, pending_review, attributed, invalid |
Examples (2)
Apply as a merchant (sandbox)
curl -X POST https://onboard.socialmatterspay.com/v1/merchants/apply \
-H 'Content-Type: application/json' \
-d '{
"legal_name": "Northwind Supply LLC",
"dba_name": "Northwind Supply",
"ein": "12-3456789",
"owner_name": "Jordan Rivera",
"owner_ssn": "123-45-6789",
"owner_dob": "1984-03-14",
"owner_address": "200 Example Ave, Sheridan WY 82801",
"business_address": "200 Example Ave, Sheridan WY 82801",
"business_type": "llc",
"website_url": "https://northwind.example",
"description": "Sells shop supplies to small businesses",
"estimated_monthly_volume_cents": 5000000,
"category": "retail",
"statement_descriptor": "NORTHWIND",
"payout_account": {
"account_number": "4433221100",
"routing_number": "110000000",
"account_type": "checking",
"account_holder_name": "Northwind Supply LLC"
}
}'
HTTP 201
Cache-Control: no-store
{
"data": {
"object": "merchant_application",
"merchant_id": "a5fc4446-e0a0-4260-ac10-e06060393364",
"status": "active",
"ofac_status": "clear",
"sanctions_screening_id": "7de0e613-98d8-4682-baab-139f204bc455",
"referral": "none",
"api_key": "sk_sandbox_…",
"message": "Sandbox merchant is active. The API key is shown once: store it now."
}
}
Apply as a merchant (production: waits for review)
curl -X POST https://onboard.socialmatterspay.com/v1/merchants/apply \
-H 'Content-Type: application/json' \
-d '{
"legal_name": "Harbor Goods LLC",
"dba_name": "Harbor Goods",
"ein": "23-4567890",
"owner_name": "Sam Ortiz",
"owner_ssn": "234-56-7890",
"owner_dob": "1975-05-30",
"owner_address": "200 Example Ave, Sheridan WY 82801",
"business_address": "200 Example Ave, Sheridan WY 82801",
"business_type": "llc",
"website_url": "https://harbor.example",
"description": "Sells shop supplies to small businesses",
"estimated_monthly_volume_cents": 5000000,
"category": "retail",
"statement_descriptor": "HARBOR",
"payout_account": {
"account_number": "4433221100",
"routing_number": "110000000",
"account_type": "checking",
"account_holder_name": "Harbor Goods LLC"
}
}'
HTTP 201
Cache-Control: no-store
{
"data": {
"object": "merchant_application",
"merchant_id": "1ef360db-ff5e-4b2d-b079-0ae77ebb10a6",
"status": "under_review",
"ofac_status": "clear",
"sanctions_screening_id": "6c3d2c9f-6a1f-49c6-a7a9-584ccb73017f",
"referral": "none",
"api_key": "sk_live_…",
"message": "Application received for review. The API key is shown once and works once the account is active."
}
}
POST /v1/merchants/{id}/documents
Upload a KYB document (the merchant's own key, 10 MB maximum)
Host https://onboard.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Request body (multipart/form-data)
| Field | Notes |
|---|---|
file requiredstring (binary) | — |
type requiredenum | one of ein_letter, photo_id, bank_statement, operating_agreement, other |
Responses
| Status | Meaning |
|---|---|
201 | Stored |
400 | Error — error shape and codes |
403 | Error — error shape and codes |
Fields of data (201)
| Field | Notes |
|---|---|
objectstring = "document" | — |
sha256string | SHA-256 of the stored file. pattern ^[0-9a-f]{64}$ |
keystring | — |
typestring | — |
bytesinteger | — |
Example
Upload a KYB document
curl -X POST https://onboard.socialmatterspay.com/v1/merchants/a5fc4446-e0a0-4260-ac10-e06060393364/documents \
-H 'Authorization: Bearer sk_sandbox_…' \
-F 'type=ein_letter' \
-F 'file=@ein-letter.pdf'
HTTP 201
{
"data": {
"object": "document",
"key": "merchants/a5fc4446-e0a0-4260-ac10-e06060393364/ein_letter/f2d5d65f-dc24-4ae3-889c-2040ec886488-ein-letter.pdf",
"type": "ein_letter",
"bytes": 16,
"sha256": "9879a54b23a427f0572f379114a4a2419a93acbda87f7755682b5149174e37eb"
}
}
POST /v1/merchants/{id}/review
SMP staff decision on an application
Host https://onboard.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Request body
| Field | Notes |
|---|---|
decision requiredenum | one of approved, terminated |
reason requiredstring | — |
reviewed_by requiredstring | — |
risk_tierenum | one of low, standard, elevated, high |
duplicate_acknowledgedboolean | Required (true) to approve an application flagged as matching an existing merchant (409 duplicate_review_open otherwise) |
Responses
| Status | Meaning |
|---|---|
200 | Merchant state (MerchantState) |
401 | Error — error shape and codes |
409 | Error — error shape and codes |
Fields of data (200)
| Field | Notes |
|---|---|
objectstring = "merchant" | — |
merchant_idstring | — |
statusstring | — |
Examples (2)
Approve an application (SMP staff)
curl -X POST https://onboard.socialmatterspay.com/v1/merchants/1ef360db-ff5e-4b2d-b079-0ae77ebb10a6/review \
-H 'Authorization: Bearer smp_staff_token' \
-H 'Content-Type: application/json' \
-d '{
"decision": "approved",
"reason": "KYB documents verified",
"reviewed_by": "underwriting",
"risk_tier": "standard"
}'
HTTP 200
Cache-Control: no-store
{
"data": {
"object": "merchant",
"merchant_id": "1ef360db-ff5e-4b2d-b079-0ae77ebb10a6",
"status": "approved"
}
}
Approving a match needs duplicate_acknowledged (SMP staff)
curl -X POST https://onboard.socialmatterspay.com/v1/merchants/76d35f7a-f7f5-4695-adeb-4bf750ddbc4e/review \
-H 'Authorization: Bearer smp_staff_token' \
-H 'Content-Type: application/json' \
-d '{
"decision": "approved",
"reason": "KYB documents verified",
"reviewed_by": "underwriting"
}'
HTTP 409
Cache-Control: no-store
{
"error": "duplicate_review_open",
"message": "This application matches an existing merchant; approve it with duplicate_acknowledged: true if it is a separate business",
"duplicate_of_merchant_id": "1ef360db-ff5e-4b2d-b079-0ae77ebb10a6",
"duplicate_match": [
{
"kind": "domain",
"merchant_id": "1ef360db-ff5e-4b2d-b079-0ae77ebb10a6"
},
{
"kind": "ein",
"merchant_id": "1ef360db-ff5e-4b2d-b079-0ae77ebb10a6"
},
… 2 more
]
}
POST /v1/merchants/{id}/activate
SMP staff — open the bank sub-account and activate an approved merchant
Host https://onboard.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Responses
| Status | Meaning |
|---|---|
200 | Merchant state (MerchantState) |
401 | Error — error shape and codes |
404 | Error — error shape and codes |
409 | Error — error shape and codes |
Fields of data (200)
| Field | Notes |
|---|---|
objectstring = "merchant" | — |
merchant_idstring | — |
statusstring | — |
Example
No captured example: a sandbox merchant is activated when approved (activate answers 409); production activation opens the merchant's account at the bank, and no bank is connected yet (answers 503 bank_not_connected).
GET /v1/merchants/{id}
SMP staff — an application as a reviewer needs it
Host https://onboard.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Responses
| Status | Meaning |
|---|---|
200 | The merchant |
401 | Error — error shape and codes |
404 | Error — error shape and codes |
Fields of data (200)
| Field | Notes | ||||
|---|---|---|---|---|---|
objectstring = "merchant" | — | ||||
idstring | — | ||||
namestring | — | ||||
legal_namestring | — | ||||
statusstring | — | ||||
risk_tierstring | null | — | ||||
website_urlstring | null | — | ||||
categorystring | null | — | ||||
ofac_statusstring | null | — | ||||
sanctions_screening_idstring | null | — | ||||
limit_per_txn_centsinteger | — | ||||
limit_daily_centsinteger | — | ||||
limit_monthly_centsinteger | — | ||||
duplicate_of_merchant_idstring | null | The existing merchant this application matched | ||||
duplicate_matcharray of object | What matched, for the reviewer2 child fields
| ||||
application_submitted_atstring | null (date-time) | — | ||||
application_reviewed_atstring | null (date-time) | — | ||||
application_reviewed_bystring | null | — | ||||
created_atstring (date-time) | — |
Example
An application that matches an existing merchant (SMP staff)
curl https://onboard.socialmatterspay.com/v1/merchants/76d35f7a-f7f5-4695-adeb-4bf750ddbc4e \
-H 'Authorization: Bearer smp_staff_token'
HTTP 200
Cache-Control: no-store
{
"data": {
"object": "merchant",
"id": "76d35f7a-f7f5-4695-adeb-4bf750ddbc4e",
"name": "Harbor Wholesale",
"legal_name": "Harbor Goods Wholesale LLC",
"status": "under_review",
"risk_tier": "standard",
"website_url": "https://harbor.example",
"category": "retail",
"ofac_status": "clear",
"sanctions_screening_id": "20de39de-2894-4dfc-815d-56c5cf17322a",
"limit_per_txn_cents": 300000,
"limit_daily_cents": 5000000,
"limit_monthly_cents": 50000000,
"duplicate_of_merchant_id": "1ef360db-ff5e-4b2d-b079-0ae77ebb10a6",
"duplicate_match": [
{
"kind": "domain",
"merchant_id": "1ef360db-ff5e-4b2d-b079-0ae77ebb10a6"
},
{
"kind": "ein",
"merchant_id": "1ef360db-ff5e-4b2d-b079-0ae77ebb10a6"
},
… 2 more
],
"application_submitted_at": "2026-10-28T00:22:34.432Z",
"application_reviewed_at": null,
"application_reviewed_by": null,
"created_at": "2026-10-28T00:22:34.432Z"
}
}
PATCH /v1/merchants/{id}/limits
SMP staff — raise or lower a merchant's limits, with the reason on record
Host https://onboard.socialmatterspay.com
Effective on the merchant's next payment. The before and after values are in the audit log.
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Request body
| Field | Notes |
|---|---|
reason requiredstring | up to 2000 characters |
changed_by requiredstring | up to 200 characters |
per_transaction_centsinteger | 1 to 100000000000 |
daily_centsinteger | 1 to 100000000000 |
monthly_centsinteger | 1 to 100000000000 |
Responses
| Status | Meaning |
|---|---|
200 | The limits now in force |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
404 | Error — error shape and codes |
Fields of data (200)
| Field | Notes |
|---|---|
objectstring = "merchant_limits" | — |
merchant_idstring | — |
per_transaction_centsinteger | — |
daily_centsinteger | — |
monthly_centsinteger | — |
Example
Raise a merchant's limits (SMP staff)
curl -X PATCH https://onboard.socialmatterspay.com/v1/merchants/1ef360db-ff5e-4b2d-b079-0ae77ebb10a6/limits \
-H 'Authorization: Bearer smp_staff_token' \
-H 'Content-Type: application/json' \
-d '{
"per_transaction_cents": 1000000,
"daily_cents": 10000000,
"reason": "Wholesale orders up to $10,000 approved",
"changed_by": "underwriting"
}'
HTTP 200
Cache-Control: no-store
{
"data": {
"object": "merchant_limits",
"merchant_id": "1ef360db-ff5e-4b2d-b079-0ae77ebb10a6",
"per_transaction_cents": 1000000,
"daily_cents": 10000000,
"monthly_cents": 50000000
}
}
GET /v1/admin/applications/{id}/certification
Machine to machine (the CRM): an application's certification, from the sandbox (production) or this database (sandbox, local); null data while it has no sandbox account
Host https://onboard.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Responses
| Status | Meaning |
|---|---|
200 | OK |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
404 | Error — error shape and codes |
409 | Error — error shape and codes |
503 | Error — error shape and codes |
Fields of data (200)
| Field | Notes | ||||||||
|---|---|---|---|---|---|---|---|---|---|
methodenum | one of api, plugin, hosted | ||||||||
casesarray of object | 4 child fields
| ||||||||
passedinteger | — | ||||||||
totalinteger | — | ||||||||
readyboolean | — | ||||||||
checked_atstring (date-time) | — |
Example
An application's certification (SMP staff)
curl https://onboard.socialmatterspay.com/v1/admin/applications/8f67c6ec-bbf9-4630-bbc3-9c95203955fe/certification \
-H 'Authorization: Bearer smp_staff_token'
HTTP 200
Cache-Control: no-store
{
"data": {
"method": "api",
"cases": [
{
"id": "bank_linked",
"passed": true,
"evidence": [
"62c83c4a-beaa-473e-81e3-4a0bddcd60f4",
"5f56b123-e891-4bd8-9c17-59a85d555fb5"
],
"detail": "a payer bank account linked through the sandbox"
},
{
"id": "payment_settled",
"passed": true,
"evidence": [
"0b50548d-71bf-440c-8064-47da5449aebc",
"63be7384-a390-4f7f-bd27-c568476d597c"
],
"detail": "a payment reached settled"
},
… 7 more
],
"passed": 9,
"total": 9,
"ready": true,
"checked_at": "2026-10-28T00:23:33.820Z"
}
}
POST /internal/v1/developer-accounts
The sandbox deployment only, called by production's onboarding worker over its SANDBOX_ONBOARD binding: makes an application's sandbox account once (its one site, a sandbox key, an open sandbox sub-balance, a sandbox dashboard login). Anything else answers 404.
Host https://onboard.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
200 | Made before: the same account |
201 | Made now |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
404 | Error — error shape and codes |
409 | Error — error shape and codes |
503 | Error — error shape and codes |
Fields of data (200)
| Field | Notes | ||||
|---|---|---|---|---|---|
merchant_idstring | The sandbox account that this application already had. | ||||
createdboolean | False on this response: the application already had an account, so no key and no dashboard link are returned. | ||||
keystring | null | Always null here: the key was shown once, when the account was made. | ||||
key_prefixstring | — | ||||
dashboardobject | null | Always null here.2 child fields
|
Example
An application's sandbox account, made once (production's onboarding worker)
curl -X POST https://onboard.socialmatterspay.com/internal/v1/developer-accounts \
-H 'Authorization: Bearer developer_program_token' \
-H 'Content-Type: application/json' \
-d '{
"application_ref": "app_example_0001",
"reference": "SMP-EXAMPLE-0001",
"legal_name": "Harbor Goods LLC",
"contact_email": "owner@harbor.example",
"target": {
"kind": "website",
"domain": "harbor.example",
"method": "api"
}
}'
HTTP 201
Cache-Control: no-store
{
"data": {
"merchant_id": "830b2533-7445-48f6-87b7-f3a06ea50d77",
"created": true,
"key": "sk_sandbox_…",
"key_prefix": "sk_sandbox_5414",
"dashboard": null
}
}
GET /internal/v1/developer-accounts/{id}/certification
The sandbox deployment only (production's calls): a sandbox account's certification, by method (api, plugin, hosted)
Host https://onboard.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
methodquery · string | one of api, plugin, hosted |
Responses
| Status | Meaning |
|---|---|
200 | OK |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
404 | Error — error shape and codes |
409 | Error — error shape and codes |
503 | Error — error shape and codes |
Fields of data (200)
| Field | Notes | ||||||||
|---|---|---|---|---|---|---|---|---|---|
methodenum | How the business connects. Only api runs cases; plugin and hosted get the light review, so their cases list is empty and total is 0. one of api, plugin, hosted | ||||||||
casesarray of object | 4 child fields
| ||||||||
passedinteger | How many of the method's cases have passed. | ||||||||
totalinteger | How many cases the method runs. | ||||||||
readyboolean | All the cases the method runs have passed. The page check is a person's, so ready does not mean approved. | ||||||||
checked_atstring (date-time) | — |
Example
That sandbox account's certification (production's onboarding worker)
curl https://onboard.socialmatterspay.com/internal/v1/developer-accounts/4cad9448-209c-48b5-9a1f-95c8585a2db7/certification?method=api \
-H 'Authorization: Bearer developer_program_token'
HTTP 200
Cache-Control: no-store
{
"data": {
"method": "api",
"cases": [
{
"id": "bank_linked",
"passed": true,
"evidence": [
"62c83c4a-beaa-473e-81e3-4a0bddcd60f4",
"5f56b123-e891-4bd8-9c17-59a85d555fb5"
],
"detail": "a payer bank account linked through the sandbox"
},
{
"id": "payment_settled",
"passed": true,
"evidence": [
"0b50548d-71bf-440c-8064-47da5449aebc",
"63be7384-a390-4f7f-bd27-c568476d597c"
],
"detail": "a payment reached settled"
},
… 7 more
],
"passed": 9,
"total": 9,
"ready": true,
"checked_at": "2026-10-28T00:23:33.831Z"
}
}
POST /internal/v1/developer-accounts/{id}/signature-check
The sandbox deployment only (production's calls): sends the sandbox account's webhook endpoints one wrongly signed event and records each answer
Host https://onboard.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Responses
| Status | Meaning |
|---|---|
200 | OK |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
404 | Error — error shape and codes |
409 | Error — error shape and codes |
503 | Error — error shape and codes |
Fields of each item of data (200)
| Field | Notes |
|---|---|
urlstring | The endpoint's URL. |
status_codeinteger | null | The HTTP status the endpoint answered; null when it could not be reached. |
errorstring | null | Why the request failed (a timeout, a refused connection), at most 200 characters; null when the endpoint answered. |
passedboolean | True when the endpoint answered 4xx, refusing the forged event. A 2xx means it would take a forged event. |
Example
Its signature check (production's onboarding worker)
curl -X POST https://onboard.socialmatterspay.com/internal/v1/developer-accounts/4cad9448-209c-48b5-9a1f-95c8585a2db7/signature-check \
-H 'Authorization: Bearer developer_program_token' \
-H 'Content-Type: application/json' \
-d '{}'
HTTP 200
Cache-Control: no-store
{
"data": [
{
"url": "https://sunrise31.example/smp/webhooks",
"status_code": 401,
"error": null,
"passed": true
}
]
}
POST /internal/flush-email
Machine to machine: send the emails still queued in email_outbox (the CRM calls it after a change; a five-minute cron does the same)
Host https://onboard.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
200 | How many were sent, queued for a retry, failed for good, or skipped (no Resend key, or not due yet) |
401 | Error — error shape and codes |
Fields of data (200)
| Field | Notes |
|---|---|
sentinteger | — |
retryinteger | — |
failedinteger | — |
skippedinteger | — |
Example
Send what the email outbox holds now (SMP staff)
curl -X POST https://onboard.socialmatterspay.com/internal/flush-email \
-H 'Authorization: Bearer smp_staff_token'
HTTP 200
Cache-Control: no-store
{
"data": {
"sent": 0,
"retry": 0,
"failed": 0,
"skipped": 8
}
}
POST /internal/partner-drafts
Machine to machine: the partners worker’s merchant submissions (items 1–8 and the price proposal) become a draft; the merchant is emailed a link to finish it
Host https://onboard.socialmatterspay.com
Request body
| Field | Notes | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
partner_id requiredstring | — | ||||||||||||||||||||||||||
agent_idstring | — | ||||||||||||||||||||||||||
partner_user_idstring | — | ||||||||||||||||||||||||||
started_byenum | one of partner, agent | ||||||||||||||||||||||||||
contact requiredobject | 3 child fields
| ||||||||||||||||||||||||||
business requiredobject | 3 child fields
| ||||||||||||||||||||||||||
sales requiredobject | 4 child fields
| ||||||||||||||||||||||||||
owners requiredarray of object | Every owner of 25% or more and one control person. at least 1 item. at most 5 items13 child fields
| ||||||||||||||||||||||||||
pricing requiredobject | 3 child fields
|
Responses
| Status | Meaning |
|---|---|
201 | The draft |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
409 | Error — error shape and codes |
503 | Error — error shape and codes |
Fields of data (201)
| Field | Notes | ||||||
|---|---|---|---|---|---|---|---|
objectstring = "application" | — | ||||||
idstring | — | ||||||
referencestring | The application's reference. | ||||||
statusstring = "draft" | — | ||||||
link_sent_tostring | The merchant's contact email with most of the name before the @ hidden. The link to open the draft was emailed there. | ||||||
proposed_pricingobject | The price the partner proposed, as it was saved.3 child fields
| ||||||
proposed_pricing_textstring | The proposal in words: its percentage, its fixed part per payment, and its cap when it has one. |
Example
A partner's draft application, as the partner portal's Worker files it (SMP staff token)
curl -X POST https://onboard.socialmatterspay.com/internal/partner-drafts \
-H 'Authorization: Bearer smp_staff_token' \
-H 'Content-Type: application/json' \
-d '{
"partner_id": "1506590a-fda8-428f-8ed1-cf5a8e52f8f5",
"contact": {
"email": "owner@kelpbay.example",
"phone": "(813) 555-0144",
"name": "Jennifer Thompson"
},
"business": {
"legal_name": "Kelpbay Supply LLC",
"dba_name": "Kelpbay Supply",
"website_url": "https://kelpbay.example"
},
"sales": {
"monthly_volume_cents": 4000000,
"avg_ticket_cents": 12000,
"max_ticket_cents": 90000,
"integration_types": [
"api"
]
},
"owners": [
{
"full_name": "Jennifer Thompson",
"ownership_pct": 100,
"is_control_person": true,
"dob": "1980-01-01",
"ssn": "123-45-6003",
"address_line1": "9 Bay Rd",
"address_city": "Tampa",
"address_state": "FL",
"address_postal_code": "33606",
"email": "owner@kelpbay.example"
}
],
"pricing": {
"bps": 125,
"fixed_cents": 35,
"cap_cents": 450
}
}'
HTTP 201
Cache-Control: no-store
{
"data": {
"object": "application",
"id": "57b01295-8ed8-4b19-b636-43ac8a6ce0b6",
"reference": "SMP-MK47-4T9Q",
"status": "draft",
"link_sent_to": "o••••@kelpbay.example",
"proposed_pricing": {
"bps": 125,
"fixed_cents": 35,
"cap_cents": 450
},
"proposed_pricing_text": "1.25% + $0.35 per payment, capped at $4.50"
}
}
