GET /v1/agent/me
The agent account
Host https://partners.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
200 | OK |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes | ||||
|---|---|---|---|---|---|
idstring | — | ||||
partner_idstring | — | ||||
partner_namestring | The partner's display name. | ||||
namestring | — | ||||
emailstring | — | ||||
statusenum | The agent portal only admits an active agent, so a signed-in call sees active. one of invited, active, deactivated | ||||
cut_bpsinteger | The agent's share of the commission pool, in basis points. | ||||
payout_account_on_fileboolean | — | ||||
payout_account_last4string | null | — | ||||
payout_account_typeenum | one of checking, savings, | ||||
tax_id_on_fileboolean | — | ||||
tax_id_last4string | null | — | ||||
tax_form_statusenum | one of not_received, received, verified | ||||
payout_hold_reasonsarray of enum | Why 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
|
Example
The signed-in agent
curl https://partners.socialmatterspay.com/v1/agent/me \
-H 'Authorization: Bearer agent_session_token'
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)
Host https://partners.socialmatterspay.com
Request body
| Field | Notes |
|---|---|
account_number requiredstring | — |
routing_number requiredstring | — |
account_type requiredenum | one of checking, savings |
account_holder_name requiredstring | — |
Responses
| Status | Meaning |
|---|---|
200 | OK |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes |
|---|---|
payout_account_on_fileboolean = true | — |
payout_account_last4string | — |
payout_account_typeenum | one of checking, savings |
Example
Set the agent's 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"
}'
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)
Host https://partners.socialmatterspay.com
Request body
| Field | Notes |
|---|---|
tax_id requiredstring | — |
Responses
| Status | Meaning |
|---|---|
200 | OK |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes |
|---|---|
tax_id_on_fileboolean = true | — |
tax_id_last4string | — |
Example
Record the agent's 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"
}'
HTTP 200
Cache-Control: no-store
{
"tax_id_on_file": true,
"tax_id_last4": "6789"
}
GET /v1/agent/links
The agent's referral links
Host https://partners.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
200 | OK |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
linksarray of object | 7 child fields
|
Example
The agent's links
curl https://partners.socialmatterspay.com/v1/agent/links \
-H 'Authorization: Bearer agent_session_token'
HTTP 200
Cache-Control: no-store
{
"links": [
{
"id": "ad78c3b9-8360-4dc1-8712-c5c8257e7ca0",
"code": "z8cg3sg5mr",
"label": "Sam — webinars",
"status": "active",
"click_count": 0,
"created_at": "2026-10-28T00:22:38.109Z",
"merchants": 0
}
]
}
GET /v1/agent/merchants
Merchants the agent referred
Host https://partners.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
200 | OK |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
merchantsarray of object | 15 child fields
|
Example
Merchants the agent brought
curl https://partners.socialmatterspay.com/v1/agent/merchants \
-H 'Authorization: Bearer agent_session_token'
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
Host https://partners.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
fromquery · string | — |
toquery · string | — |
Responses
| Status | Meaning |
|---|---|
200 | OK |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
summaryobject | Commission totals in cents. earned + clawback - voided = paid + payable.5 child fields
| ||||||||||||||||||||||||||||||||||||||||||||
entriesarray of object | The agent's entries earned in the range, newest first.22 child fields
|
Example
The agent's earnings
curl https://partners.socialmatterspay.com/v1/agent/earnings?from=2026-10-01&to=2026-10-28 \
-H 'Authorization: Bearer agent_session_token'
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
Host https://partners.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
200 | OK |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
payoutsarray of object | 15 child fields
|
Example
The agent's payouts
curl https://partners.socialmatterspay.com/v1/agent/payouts \
-H 'Authorization: Bearer agent_session_token'
HTTP 200
Cache-Control: no-store
{
"payouts": []
}
GET /v1/agent/statements/{period}
Monthly statement (period = YYYY-MM)
Host https://partners.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
period requiredpath · string | — |
Responses
| Status | Meaning |
|---|---|
200 | OK |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
periodobject | 3 child fields
| ||||||||||||||||||
merchantsarray of object | 7 child fields
| ||||||||||||||||||
clawbacksarray of object | 8 child fields
| ||||||||||||||||||
payoutsarray of object | 8 child fields
| ||||||||||||||||||
feesarray of object | SMP fees on the agent for the month.9 child fields
| ||||||||||||||||||
fee_collectionsarray of object | Always empty for an agent; SMP debits only the partner.9 child fields
| ||||||||||||||||||
totalsobject | Totals in cents for the month.8 child fields
|
Example
The agent's monthly statement
curl https://partners.socialmatterspay.com/v1/agent/statements/2026-10 \
-H 'Authorization: Bearer agent_session_token'
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
Host https://partners.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
200 | OK |
401 | Error — error shape and codes |
Fields of data (200)
| Field | Notes | ||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
objectstring = "payout_bank" | — | ||||||||||||||||||||||||||||||||||||||||||||||
connectionobject | null | The payout bank connected now. Null when none is connected.8 child fields
| ||||||||||||||||||||||||||||||||||||||||||||||
fee_debit_authorizationobject | null | The 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_fileboolean | Whether account numbers are on file, typed or connected. | ||||||||||||||||||||||||||||||||||||||||||||||
methodsarray of enum | The 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 | null | SMP's 10-character ACH Company ID. Null until the sponsor bank assigns one. | ||||||||||||||||||||||||||||||||||||||||||||||
environmentenum | one of production, sandbox |
Example
Where the agent's commissions are paid
curl https://partners.socialmatterspay.com/v1/agent/bank \
-H 'Authorization: Bearer agent_session_token'
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
Host https://partners.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
201 | OK |
401 | Error — error shape and codes |
502 | Error — error shape and codes |
503 | Error — error shape and codes |
Fields of data (201)
| Field | Notes |
|---|---|
objectstring = "link_token" | — |
link_tokenstring | The 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
curl -X POST https://partners.socialmatterspay.com/v1/agent/bank/link-token \
-H 'Authorization: Bearer agent_session_token'
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
Host https://partners.socialmatterspay.com
Request body
| Field | Notes |
|---|---|
method requiredenum | one of sandbox, plaid |
public_tokenstring | Plaid Link's public token (method plaid) |
account_idstring | The Plaid account picked in Link (method plaid) |
Responses
| Status | Meaning |
|---|---|
201 | OK |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
422 | Error — error shape and codes |
502 | Error — error shape and codes |
503 | Error — error shape and codes |
Fields of data (201)
| Field | Notes |
|---|---|
objectstring = "bank_link_intent" | — |
idstring | — |
link_methodenum | one of sandbox, plaid |
bank_namestring | — |
account_last4string | — |
account_holder_namestring | The agent's name. |
entry_codenull | Always null; an agent signs no fee debit authorization. |
authorization_textnull | Always null for an agent. |
text_sha256null | Always null for an agent. |
expires_atstring (date-time) | 30 minutes after the intent is created. |
suggested_signerstring | The agent's name. |
Example
Change the payout bank (an agent signs no debit authorization)
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"
}'
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
Host https://partners.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Responses
| Status | Meaning |
|---|---|
200 | OK |
401 | Error — error shape and codes |
404 | Error — error shape and codes |
409 | Error — error shape and codes |
410 | Error — error shape and codes |
Fields of data (200)
| Field | Notes |
|---|---|
objectstring = "bank_link_intent" | — |
idstring | — |
link_methodenum | one of sandbox, plaid |
bank_namestring | — |
account_last4string | — |
account_holder_namestring | The partner's legal name, or the agent's name. |
entry_codeenum | The 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 | null | The exact words the signer must accept. Null for an agent. |
text_sha256string | null | SHA-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)
curl https://partners.socialmatterspay.com/v1/agent/bank/intents/e702801f-2fad-49ea-949c-75fd3e018f41 \
-H 'Authorization: Bearer agent_session_token'
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
Host https://partners.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Request body
| Field | Notes |
|---|---|
acceptedboolean = true | Both boxes ticked: the signer read and signs the words (not needed for an agent) |
signer_namestring | — |
signer_titlestring | — |
text_sha256string | SHA-256 of the authorization words shown (not needed for an agent) |
password requiredstring | The login's password, re-entered |
Responses
| Status | Meaning |
|---|---|
201 | OK |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
403 | Error — error shape and codes |
404 | Error — error shape and codes |
409 | Error — error shape and codes |
410 | Error — error shape and codes |
429 | Error — error shape and codes |
Fields of data (201)
| Field | Notes |
|---|---|
objectstring = "payout_bank_connection" | — |
idstring | — |
link_methodenum | one of sandbox, plaid |
bank_namestring | — |
account_last4string | — |
connected_atstring (date-time) | — |
connected_emailstring | The login email that confirmed the connection. |
authorizationobject | null | The 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
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"
}'
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
Host https://partners.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
200 | Applications |
401 | Error — error shape and codes |
403 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes | ||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
applicationsarray of object | The merchant applications the agent started, newest first, at most 200.20 child fields
|
Example
The applications this agent started
curl https://partners.socialmatterspay.com/v1/agent/applications \
-H 'Authorization: Bearer agent_session_token'
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)
Host https://partners.socialmatterspay.com
Request body
| Field | Notes | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
403 | 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 | — | ||||||
statusstring = "draft" | — | ||||||
link_sent_tostring | The merchant's email address with most of the name masked; the link to finish the application was sent there. | ||||||
proposed_pricingobject | A price as a rate plus a fixed fee per payment, with an optional cap.3 child fields
| ||||||
proposed_pricing_textstring | — |
Example
Start a merchant's application as an agent
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
}
}'
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"
}
}
