DRAFTThe sandbox is not live yet. Every example here was returned by the platform's code in a test run on 2026-10-28, priced with example fees: no fee amount in them is an SMP price. Paths and fields can change before launch. Live keys are issued only after our bank program is approved.Sandbox not live yet · examples from a test run on 2026-10-28 · example fees

Reference · 15 operations

Agent portal

An agent's own view: their links, the merchants they brought, their earnings and payouts.

Partnershttps://partners.socialmatterspay.com
GET /v1/agent/me

The agent account

Agent session

Host https://partners.socialmatterspay.com

Responses

StatusMeaning
200OK
401Error — error shape and codes

Fields of the response (200)

FieldNotes
idstring—
partner_idstring—
partner_namestringThe partner's display name.
namestring—
emailstring—
statusenumThe agent portal only admits an active agent, so a signed-in call sees active. one of invited, active, deactivated
cut_bpsintegerThe agent's share of the commission pool, in basis points.
payout_account_on_fileboolean—
payout_account_last4string | null—
payout_account_typeenumone of checking, savings,
tax_id_on_fileboolean—
tax_id_last4string | null—
tax_form_statusenumone of not_received, received, verified
payout_hold_reasonsarray of enumWhy this recipient's commission payouts are held now, in the order the payout run applies them; empty when nothing holds them. Commission keeps accruing meanwhile. one of recipient_suspended, missing_payout_account, missing_tax_id, tax_form_not_received
partnershipobject
2 child fields
ends_onstring | null (date)The date the partnership ends (UTC); from that date the partner and its agents earn no commission. Null while none is set.
endedbooleanTrue once the end date has come.
Example

The signed-in agent

GET /v1/agent/me
curl https://partners.socialmatterspay.com/v1/agent/me \
  -H 'Authorization: Bearer agent_session_token'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "id": "62a14022-b94b-4d55-b7d7-bd0eb19611c2",
  "partner_id": "1506590a-fda8-428f-8ed1-cf5a8e52f8f5",
  "partner_name": "Ridgeline",
  "name": "Sam Ortiz",
  "email": "sam@ridgeline.example",
  "status": "active",
  "cut_bps": 4000,
  "payout_hold_reasons": [
    "missing_payout_account",
    "missing_tax_id",
    "tax_form_not_received"
  ],
  "payout_account_on_file": false,
  "payout_account_last4": null,
  "payout_account_type": null,
  "tax_id_on_file": false,
  "tax_id_last4": null,
  "tax_form_status": "not_received",
  "partnership": {
    "ends_on": null,
    "ended": false
  }
}
PUT /v1/agent/payout-account

Set the bank account the agent is paid to (sealed at rest)

Agent session

Host https://partners.socialmatterspay.com

Request body

FieldNotes
account_number requiredstring—
routing_number requiredstring—
account_type requiredenumone of checking, savings
account_holder_name requiredstring—

Responses

StatusMeaning
200OK
400Error — error shape and codes
401Error — error shape and codes

Fields of the response (200)

FieldNotes
payout_account_on_fileboolean = true—
payout_account_last4string—
payout_account_typeenumone of checking, savings
Example

Set the agent's payout account

PUT /v1/agent/payout-account
curl -X PUT https://partners.socialmatterspay.com/v1/agent/payout-account \
  -H 'Authorization: Bearer agent_session_token' \
  -H 'Content-Type: application/json' \
  -d '{
  "account_number": "5566778899",
  "routing_number": "110000000",
  "account_type": "checking",
  "account_holder_name": "Sam Ortiz"
}'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "payout_account_on_file": true,
  "payout_account_last4": "8899",
  "payout_account_type": "checking"
}
PUT /v1/agent/tax-id

Set the agent's tax ID (sealed at rest; required before any payout)

Agent session

Host https://partners.socialmatterspay.com

Request body

FieldNotes
tax_id requiredstring—

Responses

StatusMeaning
200OK
400Error — error shape and codes
401Error — error shape and codes

Fields of the response (200)

FieldNotes
tax_id_on_fileboolean = true—
tax_id_last4string—
Example

Record the agent's tax ID

PUT /v1/agent/tax-id
curl -X PUT https://partners.socialmatterspay.com/v1/agent/tax-id \
  -H 'Authorization: Bearer agent_session_token' \
  -H 'Content-Type: application/json' \
  -d '{
  "tax_id": "123-45-6789"
}'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "tax_id_on_file": true,
  "tax_id_last4": "6789"
}
GET /v1/agent/merchants

Merchants the agent referred

Agent session

Host https://partners.socialmatterspay.com

Responses

StatusMeaning
200OK
401Error — error shape and codes

Fields of the response (200)

FieldNotes
merchantsarray of object
15 child fields
merchant_idstring—
merchant_namestring—
merchant_statusenumone of application_pending, under_review, approved, active, suspended, terminated
agent_idstring | null—
agent_namestring | null—
referral_codestring—
pool_bpsinteger—
window_monthsinteger—
attributed_atstring (date-time)—
window_starts_atstring | null (date-time)—
window_ends_atstring | null (date-time)—
settled_paymentsinteger—
settled_volume_centsinteger—
smp_fee_centsinteger—
agent_commission_centsinteger—
Example

Merchants the agent brought

GET /v1/agent/merchants
curl https://partners.socialmatterspay.com/v1/agent/merchants \
  -H 'Authorization: Bearer agent_session_token'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "merchants": [
    {
      "merchant_id": "42391a6e-dbb3-463f-9b96-da46e2cee6a4",
      "merchant_name": "Cedar Lane Bakery",
      "merchant_status": "active",
      "agent_id": "62a14022-b94b-4d55-b7d7-bd0eb19611c2",
      "agent_name": "Sam Ortiz",
      "referral_code": "z8cg3sg5mr",
      "pool_bps": 2500,
      "window_months": 24,
      "attributed_at": "2026-10-28T00:22:38.120Z",
      "window_starts_at": null,
      "window_ends_at": null,
      "settled_payments": 1,
      "settled_volume_cents": 12000,
      "smp_fee_cents": 145,
      "agent_commission_cents": 0
    }
  ]
}
GET /v1/agent/earnings

The agent's commission ledger for a date range

Agent session

Host https://partners.socialmatterspay.com

Parameters

FieldNotes
fromquery · string—
toquery · string—

Responses

StatusMeaning
200OK
401Error — error shape and codes

Fields of the response (200)

FieldNotes
summaryobjectCommission totals in cents. earned + clawback - voided = paid + payable.
5 child fields
earned_centsintegerCommission entries earned, including those later voided.
voided_centsintegerCommission entries that were clawed back before being paid.
clawback_centsintegerClawback entries (negative amounts).
paid_centsinteger—
payable_centsintegerAccrued and not yet paid.
entriesarray of objectThe agent's entries earned in the range, newest first.
22 child fields
idstring—
entry_kindenumone of commission, clawback
payment_idstring | null—
fee_assessment_idstring | null—
merchant_idstring—
merchant_namestring—
recipient_typestring = "agent"—
recipient_idstring—
agent_idstring | null—
smp_fee_centsinteger—
pool_bpsinteger—
agent_cut_bpsinteger—
pool_centsinteger—
agent_centsinteger—
amount_centsintegerWhat this entry pays the agent; negative on a clawback.
statusenumone of accrued, clawed_back, paid
reverses_entry_idstring | null—
payout_idstring | null—
earned_atstring (date-time)—
created_atstring (date-time)—
clawed_back_atstring | null (date-time)—
paid_atstring | null (date-time)—
Example

The agent's earnings

GET /v1/agent/earnings
curl https://partners.socialmatterspay.com/v1/agent/earnings?from=2026-10-01&to=2026-10-28 \
  -H 'Authorization: Bearer agent_session_token'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "summary": {
    "earned_cents": 0,
    "voided_cents": 0,
    "clawback_cents": 0,
    "paid_cents": 0,
    "payable_cents": 0
  },
  "entries": []
}
GET /v1/agent/payouts

The agent's commission payouts

Agent session

Host https://partners.socialmatterspay.com

Responses

StatusMeaning
200OK
401Error — error shape and codes

Fields of the response (200)

FieldNotes
payoutsarray of object
15 child fields
idstring—
recipient_typeenumone of partner, agent
recipient_idstring—
gross_centsintegerThe commission entries reserved for this payout.
fees_netted_centsintegerSMP fees taken off the payout.
amount_centsintegergross_cents minus fees_netted_cents.
entries_countinteger—
statusenumone of pending, submitted, failed
bank_referencestring | nullThe bank's reference; set once the payout is submitted.
statement_descriptorstringWhat appears on the recipient's bank statement.
period_endstring (date-time)The start of the month after the one paid for (exclusive end of the period).
failure_reasonstring | null—
created_atstring (date-time)—
submitted_atstring | null (date-time)—
failed_atstring | null (date-time)—
Example

The agent's payouts

GET /v1/agent/payouts
curl https://partners.socialmatterspay.com/v1/agent/payouts \
  -H 'Authorization: Bearer agent_session_token'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "payouts": []
}
GET /v1/agent/statements/{period}

Monthly statement (period = YYYY-MM)

Agent session

Host https://partners.socialmatterspay.com

Parameters

FieldNotes
period requiredpath · string—

Responses

StatusMeaning
200OK
401Error — error shape and codes

Fields of the response (200)

FieldNotes
periodobject
3 child fields
labelstringThe month, YYYY-MM.
startstring (date-time)The first instant of the month (UTC).
endstring (date-time)The first instant of the next month (UTC); the period excludes it.
merchantsarray of object
7 child fields
merchant_idstring—
merchant_namestring—
paymentsinteger—
volume_centsinteger—
smp_fee_centsinteger—
agent_centsinteger—
voided_centsinteger—
clawbacksarray of object
8 child fields
idstring—
payment_idstring | null—
merchant_idstring—
recipient_typeenumone of partner, agent
recipient_idstring—
amount_centsintegerNegative.
statusenumone of accrued, paid
created_atstring (date-time)—
payoutsarray of object
8 child fields
idstring—
recipient_typeenumone of partner, agent
recipient_idstring—
amount_centsinteger—
statusenumone of pending, submitted, failed
bank_referencestring | null—
created_atstring (date-time)—
submitted_atstring | null (date-time)—
feesarray of objectSMP fees on the agent for the month.
9 child fields
idstring—
codestringThe fee code, such as partner.monthly or agent.monthly.
amount_centsinteger—
periodstring | nullThe month (YYYY-MM) of a monthly fee. Null for a one-time fee.
subject_agent_idstring | nullThe agent an agent fee is for (charged to the partner).
statusenumnetted: taken off a commission payout. collected: settled by a fee collection. open: not yet settled. one of open, netted, collected
netted_payout_idstring | null—
collection_idstring | null—
assessed_atstring (date-time)—
fee_collectionsarray of objectAlways empty for an agent; SMP debits only the partner.
9 child fields
idstring—
fees_centsinteger—
commissions_applied_centsinteger—
debit_centsintegerWhat is debited from the partner's bank account. 0 when commissions covered the fees.
entry_codeenumThe Nacha entry class of the debit. Null when there is none. one of CCD, PPD,
statusenumone of netted, debit_scheduled, debit_submitted, debit_settled, debit_returned, debit_failed
debit_scheduled_forstring | null (date-time)—
return_codestring | nullThe Nacha return code of a returned debit.
created_atstring (date-time)—
totalsobjectTotals in cents for the month.
8 child fields
earned_centsintegerCommission earned in the month, including entries later voided.
voided_centsinteger—
clawback_centsintegerClawbacks created in the month (negative).
paid_out_centsintegerPayouts for the month that were submitted to the bank.
fees_centsintegerSMP fees assessed for the month.
fees_netted_from_payouts_centsinteger—
fees_collected_centsinteger—
fees_open_centsinteger—
Example

The agent's monthly statement

GET /v1/agent/statements/2026-10
curl https://partners.socialmatterspay.com/v1/agent/statements/2026-10 \
  -H 'Authorization: Bearer agent_session_token'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "period": {
    "label": "2026-10",
    "start": "2026-10-01T00:00:00.000Z",
    "end": "2026-11-01T00:00:00.000Z"
  },
  "merchants": [
    {
      "merchant_id": "42391a6e-dbb3-463f-9b96-da46e2cee6a4",
      "merchant_name": "Cedar Lane Bakery",
      "payments": 1,
      "volume_cents": 12000,
      "smp_fee_cents": 145,
      "agent_cents": 20,
      "voided_cents": 0
    }
  ],
  "clawbacks": [],
  "payouts": [],
  "fees": [],
  "fee_collections": [],
  "totals": {
    "earned_cents": 20,
    "voided_cents": 0,
    "clawback_cents": 0,
    "paid_out_cents": 0,
    "fees_cents": 0,
    "fees_netted_from_payouts_cents": 0,
    "fees_collected_cents": 0,
    "fees_open_cents": 0
  }
}
GET /v1/agent/bank

The connected payout bank (name and last four), the ways to connect one, and SMP's ACH Company ID

Agent session

Host https://partners.socialmatterspay.com

Responses

StatusMeaning
200OK
401Error — error shape and codes

Fields of data (200)

FieldNotes
objectstring = "payout_bank"—
connectionobject | nullThe payout bank connected now. Null when none is connected.
8 child fields
objectstring = "payout_bank_connection"—
idstring—
link_methodenumone of sandbox, plaid
bank_namestring—
account_last4string—
connected_atstring (date-time)—
connected_emailstringThe login email that confirmed the connection.
authorizationobject | nullThe signed authorization to debit the partner's bank account for fees its commissions do not cover. Null when none is in force. The sealed account numbers are never returned.
15 child fields
idstring—
objectstring = "fee_debit_authorization"—
statusenumrevoked once a newer authorization replaced it; the authorization read on its own is always the one in force. one of in_force, revoked
entry_codeenumThe Nacha entry class of the debit, set by the partner's entity type (CCD for a business, PPD for an individual). one of CCD, PPD
authorization_textstringThe exact words the signer accepted.
text_sha256stringSHA-256 of the authorization text.
account_last4string—
account_typeenumone of checking, savings
account_holder_namestring—
signer_namestring—
signer_titlestring | null—
accepted_atstring (date-time)—
revoked_atstring | null (date-time)—
revoked_reasonstring | null—
retain_untilstring | null (date-time)The date until which a revoked authorization is kept on record.
fee_debit_authorizationobject | nullThe signed authorization to debit the partner's bank account for fees its commissions do not cover. Null when none is in force. The sealed account numbers are never returned. Its fields are listed under agentPayoutBank · connection.authorization.
payout_account_on_filebooleanWhether account numbers are on file, typed or connected.
methodsarray of enumThe ways a bank can be connected here. The test bank exists outside production only; Plaid only where it is configured. one of sandbox, plaid
ach_company_idstring | nullSMP's 10-character ACH Company ID. Null until the sponsor bank assigns one.
environmentenumone of production, sandbox
Example

Where the agent's commissions are paid

GET /v1/agent/bank
curl https://partners.socialmatterspay.com/v1/agent/bank \
  -H 'Authorization: Bearer agent_session_token'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "data": {
    "object": "payout_bank",
    "connection": null,
    "fee_debit_authorization": null,
    "payout_account_on_file": true,
    "methods": [
      "sandbox"
    ],
    "ach_company_id": null,
    "environment": "sandbox"
  }
}
POST /v1/agent/bank/link-token

A Plaid Link token for connecting the payout bank

Agent session

Host https://partners.socialmatterspay.com

Responses

StatusMeaning
201OK
401Error — error shape and codes
502Error — error shape and codes
503Error — error shape and codes

Fields of data (201)

FieldNotes
objectstring = "link_token"—
link_tokenstringThe token that opens Plaid Link.
expirationstring (date-time)—
Example

status 503 in this build: Plaid keys are not configured.

Start a Plaid bank sign-in for the payout account

POST /v1/agent/bank/link-token
curl -X POST https://partners.socialmatterspay.com/v1/agent/bank/link-token \
  -H 'Authorization: Bearer agent_session_token'
Response · 503
HTTP 503
Cache-Control: no-store

{
  "error": "plaid_not_configured",
  "message": "Connecting a bank through Plaid is not available here yet"
}
POST /v1/agent/bank/intents

Resolve the account (Plaid or the sandbox test bank) and fix the debit authorization words

Agent session

Host https://partners.socialmatterspay.com

Request body

FieldNotes
method requiredenumone of sandbox, plaid
public_tokenstringPlaid Link's public token (method plaid)
account_idstringThe Plaid account picked in Link (method plaid)

Responses

StatusMeaning
201OK
400Error — error shape and codes
401Error — error shape and codes
422Error — error shape and codes
502Error — error shape and codes
503Error — error shape and codes

Fields of data (201)

FieldNotes
objectstring = "bank_link_intent"—
idstring—
link_methodenumone of sandbox, plaid
bank_namestring—
account_last4string—
account_holder_namestringThe agent's name.
entry_codenullAlways null; an agent signs no fee debit authorization.
authorization_textnullAlways null for an agent.
text_sha256nullAlways null for an agent.
expires_atstring (date-time)30 minutes after the intent is created.
suggested_signerstringThe agent's name.
Example

Change the payout bank (an agent signs no debit authorization)

POST /v1/agent/bank/intents
curl -X POST https://partners.socialmatterspay.com/v1/agent/bank/intents \
  -H 'Authorization: Bearer agent_session_token' \
  -H 'Content-Type: application/json' \
  -d '{
  "method": "sandbox"
}'
Response · 201
HTTP 201
Cache-Control: no-store

{
  "data": {
    "object": "bank_link_intent",
    "id": "e702801f-2fad-49ea-949c-75fd3e018f41",
    "link_method": "sandbox",
    "bank_name": "Sandbox test bank",
    "account_last4": "9606",
    "account_holder_name": "Sam Ortiz",
    "entry_code": null,
    "authorization_text": null,
    "text_sha256": null,
    "expires_at": "2026-10-28T00:52:38.289Z",
    "suggested_signer": "Sam Ortiz"
  }
}
GET /v1/agent/bank/intents/{id}

An open bank connection intent: the account and the exact authorization words, until it is confirmed or expires

Agent session

Host https://partners.socialmatterspay.com

Parameters

FieldNotes
id requiredpath · string—

Responses

StatusMeaning
200OK
401Error — error shape and codes
404Error — error shape and codes
409Error — error shape and codes
410Error — error shape and codes

Fields of data (200)

FieldNotes
objectstring = "bank_link_intent"—
idstring—
link_methodenumone of sandbox, plaid
bank_namestring—
account_last4string—
account_holder_namestringThe partner's legal name, or the agent's name.
entry_codeenumThe Nacha entry class of the fee debit the partner will authorize. Null for an agent, who signs no authorization. one of CCD, PPD,
authorization_textstring | nullThe exact words the signer must accept. Null for an agent.
text_sha256string | nullSHA-256 of the authorization text, echoed back on confirm. Null for an agent.
expires_atstring (date-time)—
Example

The change again (a reload of the review step)

GET /v1/agent/bank/intents/e702801f-2fad-49ea-949c-75fd3e018f41
curl https://partners.socialmatterspay.com/v1/agent/bank/intents/e702801f-2fad-49ea-949c-75fd3e018f41 \
  -H 'Authorization: Bearer agent_session_token'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "data": {
    "object": "bank_link_intent",
    "id": "e702801f-2fad-49ea-949c-75fd3e018f41",
    "link_method": "sandbox",
    "bank_name": "Sandbox test bank",
    "account_last4": "9606",
    "account_holder_name": "Sam Ortiz",
    "entry_code": null,
    "authorization_text": null,
    "text_sha256": null,
    "expires_at": "2026-10-28T00:52:38.289Z"
  }
}
POST /v1/agent/bank/intents/{id}/confirm

Agree to the exact words and make the bank the payout account

Agent session

Host https://partners.socialmatterspay.com

Parameters

FieldNotes
id requiredpath · string—

Request body

FieldNotes
acceptedboolean = trueBoth boxes ticked: the signer read and signs the words (not needed for an agent)
signer_namestring—
signer_titlestring—
text_sha256stringSHA-256 of the authorization words shown (not needed for an agent)
password requiredstringThe login's password, re-entered

Responses

StatusMeaning
201OK
400Error — error shape and codes
401Error — error shape and codes
403Error — error shape and codes
404Error — error shape and codes
409Error — error shape and codes
410Error — error shape and codes
429Error — error shape and codes

Fields of data (201)

FieldNotes
objectstring = "payout_bank_connection"—
idstring—
link_methodenumone of sandbox, plaid
bank_namestring—
account_last4string—
connected_atstring (date-time)—
connected_emailstringThe login email that confirmed the connection.
authorizationobject | nullThe signed authorization to debit the partner's bank account for fees its commissions do not cover. Null when none is in force. The sealed account numbers are never returned. Its fields are listed under agentPayoutBank · connection.authorization.
Example

Confirm it with the password

POST /v1/agent/bank/intents/e702801f-2fad-49ea-949c-75fd3e018f41/confirm
curl -X POST https://partners.socialmatterspay.com/v1/agent/bank/intents/e702801f-2fad-49ea-949c-75fd3e018f41/confirm \
  -H 'Authorization: Bearer agent_session_token' \
  -H 'Content-Type: application/json' \
  -d '{
  "password": "correct horse battery staple"
}'
Response · 201
HTTP 201
Cache-Control: no-store

{
  "data": {
    "object": "payout_bank_connection",
    "id": "66ce6a91-5a2f-42f4-8716-7d8d71c015b1",
    "link_method": "sandbox",
    "bank_name": "Sandbox test bank",
    "account_last4": "9606",
    "connected_at": "2026-10-28T00:22:38.331Z",
    "connected_email": "sam@ridgeline.example",
    "authorization": null
  }
}
GET /v1/agent/applications

The merchants this agent submitted or referred

Agent session

Host https://partners.socialmatterspay.com

Responses

StatusMeaning
200Applications
401Error — error shape and codes
403Error — error shape and codes

Fields of the response (200)

FieldNotes
applicationsarray of objectThe merchant applications the agent started, newest first, at most 200.
20 child fields
idstring—
referencestring—
statusenumone of draft, submitted, info_requested, approved, declined
legal_namestring | null—
dba_namestring | null—
contact_emailstring—
started_byenumone of applicant, partner, agent
referral_statusenumone of none, attributed, pending_review, invalid, withheld, rejected
proposed_bpsinteger | null—
proposed_fixed_centsinteger | null—
proposed_cap_centsinteger | null—
pricing_decisionenumWhether SMP accepted the proposed price or changed it. Null until decided. one of accepted, changed,
approved_bpsinteger | null—
approved_fixed_centsinteger | null—
approved_cap_centsinteger | null—
created_atstring (date-time)—
submitted_atstring | null (date-time)—
decided_atstring | null (date-time)—
proposed_pricing_textstring | nullThe proposed price in words: its percentage, its fixed part per payment, and its cap when it has one. Null when none was proposed.
approved_pricing_textstring | nullThe price SMP set, in words. Null until one is set.
Example

The applications this agent started

GET /v1/agent/applications
curl https://partners.socialmatterspay.com/v1/agent/applications \
  -H 'Authorization: Bearer agent_session_token'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "applications": [
    {
      "id": "7f62bbbb-ff11-4aaa-8e19-8e34ef5b4df4",
      "reference": "SMP-B6XJ-XE34",
      "status": "draft",
      "legal_name": "Saltmarsh Supply LLC",
      "dba_name": "Saltmarsh Supply",
      "contact_email": "owner@saltmarsh.example",
      "started_by": "agent",
      "referral_status": "attributed",
      "proposed_bps": 125,
      "proposed_fixed_cents": 35,
      "proposed_cap_cents": 450,
      "pricing_decision": null,
      "approved_bps": null,
      "approved_fixed_cents": null,
      "approved_cap_cents": null,
      "created_at": "2026-10-28T00:22:38.334Z",
      "submitted_at": null,
      "decided_at": null,
      "proposed_pricing_text": "1.25% + $0.35 per payment, capped at $4.50",
      "approved_pricing_text": null
    }
  ]
}
POST /v1/agent/applications

Submit a merchant as an agent (attributed to the agent and its partner)

Agent session

Host https://partners.socialmatterspay.com

Request body

FieldNotes
contact requiredobject
3 child fields
email requiredstring—
phone requiredstring—
namestring—
business requiredobject
3 child fields
legal_name requiredstring—
dba_namestring—
website_url requiredstring—
sales requiredobject
4 child fields
monthly_volume_cents requiredinteger—
avg_ticket_cents requiredinteger—
max_ticket_cents requiredinteger—
integration_types requiredarray of string—
owners requiredarray of objectEvery owner of 25% or more and one control person. at least 1 item. at most 5 items
13 child fields
full_name requiredstringThe person's full legal name. up to 120 characters
titlestringup to 80 characters
ownership_pct requirednumberKept to two decimals. 0 to 100
is_control_personbooleantrue for the one person who controls the business
dob requiredstring (date)—
emailstringWhere their own link to add their ID is sent
phonestringA US phone number
address_line1 requiredstringA street address, not a PO box. up to 200 characters
address_line2stringup to 200 characters
address_city requiredstringup to 100 characters
address_state requiredstringA US state's two-letter code
address_postal_code requiredstring—
ssn requiredstringNine digits; sealed on arrival and never returned in full
pricing requiredobject
3 child fields
bps requiredinteger0 to 10000
fixed_cents requiredintegerat least 0
cap_centsinteger | nullat least 1

Responses

StatusMeaning
201The draft
400Error — error shape and codes
401Error — error shape and codes
403Error — error shape and codes
409Error — error shape and codes
503Error — error shape and codes

Fields of data (201)

FieldNotes
objectstring = "application"—
idstring—
referencestring—
statusstring = "draft"—
link_sent_tostringThe merchant's email address with most of the name masked; the link to finish the application was sent there.
proposed_pricingobjectA price as a rate plus a fixed fee per payment, with an optional cap.
3 child fields
bpsintegerThe rate in basis points (100 = 1%).
fixed_centsinteger—
cap_centsinteger | nullThe most the fee can be on one payment. Null for no cap.
proposed_pricing_textstring—
Example

Start a merchant's application as an agent

POST /v1/agent/applications
curl -X POST https://partners.socialmatterspay.com/v1/agent/applications \
  -H 'Authorization: Bearer agent_session_token' \
  -H 'Content-Type: application/json' \
  -d '{
  "contact": {
    "email": "owner@saltmarsh.example",
    "phone": "(813) 555-0144",
    "name": "Jennifer Thompson"
  },
  "business": {
    "legal_name": "Saltmarsh Supply LLC",
    "dba_name": "Saltmarsh Supply",
    "website_url": "https://saltmarsh.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-6002",
      "address_line1": "9 Bay Rd",
      "address_city": "Tampa",
      "address_state": "FL",
      "address_postal_code": "33606",
      "email": "owner@saltmarsh.example"
    }
  ],
  "pricing": {
    "bps": 125,
    "fixed_cents": 35,
    "cap_cents": 450
  }
}'
Response · 201
HTTP 201
Cache-Control: no-store

{
  "data": {
    "object": "application",
    "id": "7f62bbbb-ff11-4aaa-8e19-8e34ef5b4df4",
    "reference": "SMP-B6XJ-XE34",
    "status": "draft",
    "link_sent_to": "o••••@saltmarsh.example",
    "proposed_pricing": {
      "bps": 125,
      "fixed_cents": 35,
      "cap_cents": 450
    },
    "proposed_pricing_text": "1.25% + $0.35 per payment, capped at $4.50"
  }
}