GET /v1/partner/me
The partner 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 | — | ||||||||||||
legal_namestring | — | ||||||||||||
display_namestring | — | ||||||||||||
entity_typeenum | one of individual, business | ||||||||||||
contact_namestring | — | ||||||||||||
emailstring | — | ||||||||||||
phonestring | null | — | ||||||||||||
website_urlstring | null | — | ||||||||||||
statusenum | The partner portal only admits an approved partner, so a signed-in call sees approved. one of pending, approved, rejected, suspended | ||||||||||||
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
| ||||||||||||
program_termsobject | The program's current terms. A merchant's own commission terms are fixed when it applies.6 child fields
|
Example
Your partner account
curl https://partners.socialmatterspay.com/v1/partner/me \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"id": "1506590a-fda8-428f-8ed1-cf5a8e52f8f5",
"legal_name": "Ridgeline Advisory LLC",
"display_name": "Ridgeline",
"entity_type": "business",
"contact_name": "Morgan Ellis",
"email": "morgan@ridgeline.example",
"phone": null,
"website_url": "https://ridgeline.example",
"status": "approved",
"payout_hold_reasons": [],
"payout_account_on_file": true,
"payout_account_last4": "6655",
"payout_account_type": "checking",
"tax_id_on_file": true,
"tax_id_last4": "4321",
"tax_form_status": "verified",
"partnership": {
"ends_on": null,
"ended": false
},
"program_terms": {
"pool_bps": 2500,
"window_months": 24,
"window_starts": "at the merchant's first settled payment",
"payouts": "monthly on the 1st for the prior calendar month",
"minimum_payout_cents": 0,
"referral_credit_days": 30
}
}
PUT /v1/partner/payout-account
Set the bank account commissions are 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 where commissions are paid
curl -X PUT https://partners.socialmatterspay.com/v1/partner/payout-account \
-H 'Authorization: Bearer partner_session_token' \
-H 'Content-Type: application/json' \
-d '{
"account_number": "9988776655",
"routing_number": "110000000",
"account_type": "checking",
"account_holder_name": "Ridgeline Advisory LLC"
}'
HTTP 200
Cache-Control: no-store
{
"payout_account_on_file": true,
"payout_account_last4": "6655",
"payout_account_type": "checking"
}
PUT /v1/partner/tax-id
Set the 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 tax ID
curl -X PUT https://partners.socialmatterspay.com/v1/partner/tax-id \
-H 'Authorization: Bearer partner_session_token' \
-H 'Content-Type: application/json' \
-d '{
"tax_id": "98-7654321"
}'
HTTP 200
Cache-Control: no-store
{
"tax_id_on_file": true,
"tax_id_last4": "4321"
}
GET /v1/partner/fee-debit-authorization
The authorization in force to debit the partner's account for fees its commissions don't cover
Host https://partners.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
200 | OK |
Fields of the response (200)
| Field | Notes | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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.15 child fields
|
Example
The debit authorization in force
curl https://partners.socialmatterspay.com/v1/partner/fee-debit-authorization \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"authorization": {
"id": "ada_f9525740-1a4e-415b-8934-cce0674e0c64",
"object": "fee_debit_authorization",
"status": "in_force",
"entry_code": "CCD",
"authorization_text": "Ridgeline Advisory LLC authorizes Social Matter Payments LLC to initiate ACH debit entries (CCD) to the business bank account ending in 3444 for fees and other amounts Ridgeline Advisory LLC owes Social Matter Payments LLC under the partner agreement that its commission payouts from Social Matter Payments LLC do not cover. The amount of each debit appears on Ridgeline Advisory LLC's statement before the debit is made. This authorization stays in effect until Social Matter Payments LLC receives written notice of revocation at work@socialmatters.pro in time to act on it. Revoking it does not cancel amounts already owed.",
"text_sha256": "e34143589ec46d06db50db75854f9699b7e796f6db518f607ed6da17da6aa42f",
"account_last4": "3444",
"account_type": "checking",
"account_holder_name": "Ridgeline Advisory LLC",
"signer_name": "Morgan Ellis",
"signer_title": "Managing member",
"accepted_at": "2026-10-28T00:22:37.976Z",
"revoked_at": null,
"revoked_reason": null,
"retain_until": null
}
}
PUT /v1/partner/fee-debit-authorization
A new account (or new words) replaces the authorization in force; the old one is kept, revoked, for two years
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 | — |
accepted requiredboolean = true | — |
signer_name requiredstring | — |
signer_titlestring | — |
text_sha256 requiredstring | — |
Responses
| Status | Meaning |
|---|---|
200 | OK |
400 | Error — error shape and codes |
409 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes |
|---|---|
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 getPartnerFeeDebitAuthorization · authorization. |
Example
Move fee debits to another account
curl -X PUT https://partners.socialmatterspay.com/v1/partner/fee-debit-authorization \
-H 'Authorization: Bearer partner_session_token' \
-H 'Content-Type: application/json' \
-d '{
"account_number": "000777888999",
"routing_number": "110000000",
"account_type": "checking",
"account_holder_name": "Ridgeline Advisory LLC",
"accepted": true,
"signer_name": "Morgan Ellis",
"signer_title": "Managing member",
"text_sha256": "c548e1e6ffef98f6b94b8300208d69df14346ef02c4521f5683e923fb6457844"
}'
HTTP 200
Cache-Control: no-store
{
"authorization": {
"id": "ada_2bfc0df8-0a9c-4c0f-b9db-93d18be2ff45",
"object": "fee_debit_authorization",
"status": "in_force",
"entry_code": "CCD",
"authorization_text": "Ridgeline Advisory LLC authorizes Social Matter Payments LLC to initiate ACH debit entries (CCD) to the business bank account ending in 8999 for fees and other amounts Ridgeline Advisory LLC owes Social Matter Payments LLC under the partner agreement that its commission payouts from Social Matter Payments LLC do not cover. The amount of each debit appears on Ridgeline Advisory LLC's statement before the debit is made. This authorization stays in effect until Social Matter Payments LLC receives written notice of revocation at work@socialmatters.pro in time to act on it. Revoking it does not cancel amounts already owed.",
"text_sha256": "c548e1e6ffef98f6b94b8300208d69df14346ef02c4521f5683e923fb6457844",
"account_last4": "8999",
"account_type": "checking",
"account_holder_name": "Ridgeline Advisory LLC",
"signer_name": "Morgan Ellis",
"signer_title": "Managing member",
"accepted_at": "2026-10-28T00:22:38.212Z",
"revoked_at": null,
"revoked_reason": null,
"retain_until": null
}
}
GET /v1/partner/fees
SMP's fees on the partner ($299 application, $99 a month, $50 a month per accepted agent) and how each month's were settled
Host https://partners.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
200 | OK |
Fields of the response (200)
| Field | Notes | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
application_feeobject | null | The partner program application fee. Null when no application payment is on record.4 child fields
| ||||||||||||||||||||||||||
feesarray of object | Fees SMP assessed on the partner, newest first, including per-agent monthly fees.10 child fields
| ||||||||||||||||||||||||||
collectionsarray of object | How each month's fees were settled, newest first.13 child fields
|
Example
SMP's fees on the partner and how they were settled
curl https://partners.socialmatterspay.com/v1/partner/fees \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"application_fee": {
"provider": "whop",
"amount_cents": 29900,
"status": "paid",
"paid_at": "2026-10-28T00:22:37.983Z"
},
"fees": [
{
"id": "pfa:agent.monthly:62a14022-b94b-4d55-b7d7-bd0eb19611c2:2026-10",
"code": "agent.monthly",
"amount_cents": 5000,
"period": "2026-10",
"subject_agent_id": "62a14022-b94b-4d55-b7d7-bd0eb19611c2",
"agent_name": "Sam Ortiz",
"status": "collected",
"netted_payout_id": null,
"collection_id": "pfc_2e37e987-24f4-40c2-8048-bf454f2d6faf",
"assessed_at": "2026-11-01T00:00:00.000Z"
},
{
"id": "pfa:partner.monthly:1506590a-fda8-428f-8ed1-cf5a8e52f8f5:2026-10",
"code": "partner.monthly",
"amount_cents": 9900,
"period": "2026-10",
"subject_agent_id": null,
"agent_name": null,
"status": "collected",
"netted_payout_id": null,
"collection_id": "pfc_2e37e987-24f4-40c2-8048-bf454f2d6faf",
"assessed_at": "2026-11-01T00:00:00.000Z"
}
],
"collections": [
{
"id": "pfc_2e37e987-24f4-40c2-8048-bf454f2d6faf",
"period_end": "2026-11-01T00:00:00.000Z",
"fees_cents": 14900,
"commissions_applied_cents": 26,
"debit_cents": 14874,
"entry_code": "CCD",
"status": "debit_submitted",
"debit_scheduled_for": "2026-10-28T00:22:38.192Z",
"return_code": null,
"created_at": "2026-10-28T00:22:38.192Z",
"submitted_at": "2026-10-28T00:22:38.194Z",
"settled_at": null,
"returned_at": null
}
]
}
GET /v1/partner/agents
The partner's agents
Host https://partners.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
200 | OK |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
agentsarray of object | 13 child fields
|
Example
List agents
curl https://partners.socialmatterspay.com/v1/partner/agents \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"agents": [
{
"id": "62a14022-b94b-4d55-b7d7-bd0eb19611c2",
"name": "Sam Ortiz",
"email": "sam@ridgeline.example",
"status": "active",
"cut_bps": 4500,
"merchants": 0,
"payout_account_on_file": true,
"tax_id_on_file": true,
"tax_form_status": "not_received",
"payout_hold_reasons": [
"tax_form_not_received"
],
"suspended_at": null,
"created_at": "2026-10-28T00:22:38.047Z",
"deactivated_at": null
}
]
}
POST /v1/partner/agents
Invite an agent and set its cut of the partner pool (basis points)
Host https://partners.socialmatterspay.com
Request body
| Field | Notes |
|---|---|
name requiredstring | — |
email requiredstring (email) | — |
cut_bps requiredinteger | 0 to 10000 |
Responses
| Status | Meaning |
|---|---|
201 | Invited |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
Fields of the response (201)
| Field | Notes |
|---|---|
agent_idstring | — |
statusstring = "invited" | — |
cut_bpsinteger | — |
invite_tokenstring | The one-time token in the invite link; returned only here. It is stored hashed. |
invite_expires_atstring (date-time) | 168 hours after the invite. |
invite_urlstring | null | The link the agent opens to accept. Null when the portal address is not configured. |
Example
Invite an agent at a 40% cut
curl -X POST https://partners.socialmatterspay.com/v1/partner/agents \
-H 'Authorization: Bearer partner_session_token' \
-H 'Content-Type: application/json' \
-d '{
"name": "Sam Ortiz",
"email": "sam@ridgeline.example",
"cut_bps": 4000
}'
HTTP 201
Cache-Control: no-store
{
"agent_id": "62a14022-b94b-4d55-b7d7-bd0eb19611c2",
"status": "invited",
"cut_bps": 4000,
"invite_token": "agent_invite_token",
"invite_expires_at": "2026-11-04T00:22:38.047Z",
"invite_url": "https://partners.socialmatterspay.test/accept-invite?token=agent_invite_token"
}
GET /v1/partner/links
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 | 10 child fields
|
Example
List referral links
curl https://partners.socialmatterspay.com/v1/partner/links \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"links": [
{
"id": "9d8028e9-c0e1-4d36-bd99-b121f7f1886e",
"code": "t5a79n7rgu",
"label": "Partner link",
"status": "active",
"agent_id": null,
"agent_name": null,
"click_count": 0,
"created_at": "2026-10-28T00:22:37.989Z",
"disabled_at": null,
"merchants": 0
},
{
"id": "ad78c3b9-8360-4dc1-8712-c5c8257e7ca0",
"code": "z8cg3sg5mr",
"label": "Sam — webinars",
"status": "active",
"agent_id": "62a14022-b94b-4d55-b7d7-bd0eb19611c2",
"agent_name": "Sam Ortiz",
"click_count": 0,
"created_at": "2026-10-28T00:22:38.109Z",
"disabled_at": null,
"merchants": 0
}
]
}
POST /v1/partner/links
Create a referral link for the partner or one of its agents
Host https://partners.socialmatterspay.com
Request body
| Field | Notes |
|---|---|
labelstring | — |
agent_idstring | — |
Responses
| Status | Meaning |
|---|---|
201 | OK |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
Fields of the response (201)
| Field | Notes |
|---|---|
link_idstring | — |
codestring | — |
pathstring | The link's path on the partner site, /r/ followed by the code. |
Example
Create a referral link for the agent
curl -X POST https://partners.socialmatterspay.com/v1/partner/links \
-H 'Authorization: Bearer partner_session_token' \
-H 'Content-Type: application/json' \
-d '{
"agent_id": "62a14022-b94b-4d55-b7d7-bd0eb19611c2",
"label": "Sam — webinars"
}'
HTTP 201
Cache-Control: no-store
{
"link_id": "ad78c3b9-8360-4dc1-8712-c5c8257e7ca0",
"code": "z8cg3sg5mr",
"path": "/r/z8cg3sg5mr"
}
GET /v1/partner/merchants
Attributed merchants with volume, fees and commission
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 | 16 child fields
|
Example
Merchants you brought
curl https://partners.socialmatterspay.com/v1/partner/merchants \
-H 'Authorization: Bearer partner_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,
"partner_commission_cents": 0,
"agent_commission_cents": 0
}
]
}
GET /v1/partner/earnings
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
| ||||||||||||||||||||||||||||||||||||||||||||||
partner_shareobject | Commission totals in cents. earned + clawback - voided = paid + payable.5 child fields
| ||||||||||||||||||||||||||||||||||||||||||||||
agents_shareobject | Commission totals in cents. earned + clawback - voided = paid + payable.5 child fields
| ||||||||||||||||||||||||||||||||||||||||||||||
entriesarray of object | Entries earned in the range, newest first.23 child fields
|
Example
Earnings for a range
curl https://partners.socialmatterspay.com/v1/partner/earnings?from=2026-10-01&to=2026-10-28 \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"summary": {
"earned_cents": 0,
"voided_cents": 0,
"clawback_cents": 0,
"paid_cents": 0,
"payable_cents": 0
},
"partner_share": {
"earned_cents": 0,
"voided_cents": 0,
"clawback_cents": 0,
"paid_cents": 0,
"payable_cents": 0
},
"agents_share": {
"earned_cents": 0,
"voided_cents": 0,
"clawback_cents": 0,
"paid_cents": 0,
"payable_cents": 0
},
"entries": []
}
GET /v1/partner/payouts
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
Commission payouts
curl https://partners.socialmatterspay.com/v1/partner/payouts \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"payouts": []
}
PATCH /v1/partner/agents/{id}
Change an agent's cut (applies to payments that settle afterwards)
Host https://partners.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Request body
| Field | Notes |
|---|---|
cut_bps requiredinteger | 0 to 10000 |
Responses
| Status | Meaning |
|---|---|
200 | OK |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes |
|---|---|
agent_idstring | — |
cut_bpsinteger | — |
effective_fromstring (date-time) | The new cut applies to payments that settle from this instant. |
Example
Change an agent's cut
curl -X PATCH https://partners.socialmatterspay.com/v1/partner/agents/62a14022-b94b-4d55-b7d7-bd0eb19611c2 \
-H 'Authorization: Bearer partner_session_token' \
-H 'Content-Type: application/json' \
-d '{
"cut_bps": 4500
}'
HTTP 200
Cache-Control: no-store
{
"agent_id": "62a14022-b94b-4d55-b7d7-bd0eb19611c2",
"cut_bps": 4500,
"effective_from": "2026-10-28T00:22:38.102Z"
}
POST /v1/partner/agents/{id}/deactivate
Deactivate an agent: its links and login stop; earned commission is kept
Host https://partners.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Responses
| Status | Meaning |
|---|---|
200 | OK |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes |
|---|---|
agent_idstring | — |
statusstring = "deactivated" | — |
deactivated_atstring (date-time) | Left out when the agent was already deactivated. |
Example
Deactivate an agent
curl -X POST https://partners.socialmatterspay.com/v1/partner/agents/62a14022-b94b-4d55-b7d7-bd0eb19611c2/deactivate \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"agent_id": "62a14022-b94b-4d55-b7d7-bd0eb19611c2",
"status": "deactivated",
"deactivated_at": "2026-10-28T00:22:38.443Z"
}
POST /v1/partner/links/{id}/disable
Disable a referral link
Host https://partners.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Responses
| Status | Meaning |
|---|---|
200 | OK |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes |
|---|---|
link_idstring | — |
statusstring = "disabled" | — |
Example
Turn off a referral link
curl -X POST https://partners.socialmatterspay.com/v1/partner/links/ad78c3b9-8360-4dc1-8712-c5c8257e7ca0/disable \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"link_id": "ad78c3b9-8360-4dc1-8712-c5c8257e7ca0",
"status": "disabled"
}
GET /v1/partner/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 | One line per merchant that earned commission in the month.8 child fields
| ||||||||||||||||||
clawbacksarray of object | Clawbacks created in the month.8 child fields
| ||||||||||||||||||
payoutsarray of object | Payouts made for the month.8 child fields
| ||||||||||||||||||
feesarray of object | SMP fees on the partner for the month.9 child fields
| ||||||||||||||||||
fee_collectionsarray of object | 9 child fields
| ||||||||||||||||||
totalsobject | Totals in cents for the month.8 child fields
|
Example
Monthly statement
curl https://partners.socialmatterspay.com/v1/partner/statements/2026-10 \
-H 'Authorization: Bearer partner_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,
"partner_cents": 26
}
],
"clawbacks": [],
"payouts": [],
"fees": [
{
"id": "pfa:agent.monthly:62a14022-b94b-4d55-b7d7-bd0eb19611c2:2026-10",
"code": "agent.monthly",
"amount_cents": 5000,
"period": "2026-10",
"subject_agent_id": "62a14022-b94b-4d55-b7d7-bd0eb19611c2",
"status": "collected",
"netted_payout_id": null,
"collection_id": "pfc_2e37e987-24f4-40c2-8048-bf454f2d6faf",
"assessed_at": "2026-11-01T00:00:00.000Z"
},
{
"id": "pfa:partner.monthly:1506590a-fda8-428f-8ed1-cf5a8e52f8f5:2026-10",
"code": "partner.monthly",
"amount_cents": 9900,
"period": "2026-10",
"subject_agent_id": null,
"status": "collected",
"netted_payout_id": null,
"collection_id": "pfc_2e37e987-24f4-40c2-8048-bf454f2d6faf",
"assessed_at": "2026-11-01T00:00:00.000Z"
}
],
"fee_collections": [
{
"id": "pfc_2e37e987-24f4-40c2-8048-bf454f2d6faf",
"fees_cents": 14900,
"commissions_applied_cents": 26,
"debit_cents": 14874,
"entry_code": "CCD",
"status": "debit_submitted",
"debit_scheduled_for": "2026-10-28T00:22:38.192Z",
"return_code": null,
"created_at": "2026-10-28T00:22:38.192Z"
}
],
"totals": {
"earned_cents": 46,
"voided_cents": 0,
"clawback_cents": 0,
"paid_out_cents": 0,
"fees_cents": 14900,
"fees_netted_from_payouts_cents": 0,
"fees_collected_cents": 14900,
"fees_open_cents": 0
}
}
GET /v1/partner/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 getPartnerFeeDebitAuthorization · 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 commissions are paid, and the fee debit authorization
curl https://partners.socialmatterspay.com/v1/partner/bank \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"data": {
"object": "payout_bank",
"connection": null,
"fee_debit_authorization": {
"id": "ada_2bfc0df8-0a9c-4c0f-b9db-93d18be2ff45",
"object": "fee_debit_authorization",
"status": "in_force",
"entry_code": "CCD",
"authorization_text": "Ridgeline Advisory LLC authorizes Social Matter Payments LLC to initiate ACH debit entries (CCD) to the business bank account ending in 8999 for fees and other amounts Ridgeline Advisory LLC owes Social Matter Payments LLC under the partner agreement that its commission payouts from Social Matter Payments LLC do not cover. The amount of each debit appears on Ridgeline Advisory LLC's statement before the debit is made. This authorization stays in effect until Social Matter Payments LLC receives written notice of revocation at work@socialmatters.pro in time to act on it. Revoking it does not cancel amounts already owed.",
"text_sha256": "c548e1e6ffef98f6b94b8300208d69df14346ef02c4521f5683e923fb6457844",
"account_last4": "8999",
"account_type": "checking",
"account_holder_name": "Ridgeline Advisory LLC",
"signer_name": "Morgan Ellis",
"signer_title": "Managing member",
"accepted_at": "2026-10-28T00:22:38.212Z",
"revoked_at": null,
"revoked_reason": null,
"retain_until": null
},
"payout_account_on_file": true,
"methods": [
"sandbox"
],
"ach_company_id": null,
"environment": "sandbox"
}
}
POST /v1/partner/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/partner/bank/link-token \
-H 'Authorization: Bearer partner_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/partner/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 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) | 30 minutes after the intent is created. |
suggested_signerstring | The name to prefill as the signer. |
Example
Change the payout bank: the exact words the signer will accept
curl -X POST https://partners.socialmatterspay.com/v1/partner/bank/intents \
-H 'Authorization: Bearer partner_session_token' \
-H 'Content-Type: application/json' \
-d '{
"method": "sandbox"
}'
HTTP 201
Cache-Control: no-store
{
"data": {
"object": "bank_link_intent",
"id": "614c0161-3e4f-4191-8732-18cf7ffcb966",
"link_method": "sandbox",
"bank_name": "Sandbox test bank",
"account_last4": "9606",
"account_holder_name": "Ridgeline Advisory LLC",
"entry_code": "CCD",
"authorization_text": "Ridgeline Advisory LLC authorizes Social Matter Payments LLC to initiate ACH debit entries (CCD) to the business bank account ending in 9606 for fees and other amounts Ridgeline Advisory LLC owes Social Matter Payments LLC under the partner agreement that its commission payouts from Social Matter Payments LLC do not cover. The amount of each debit appears on Ridgeline Advisory LLC's statement before the debit is made. This authorization stays in effect until Social Matter Payments LLC receives written notice of revocation at work@socialmatters.pro in time to act on it. Revoking it does not cancel amounts already owed.",
"text_sha256": "feb5e4e340a42385541178cbaa4db205016c6b96ede4f11d0a6375a7da3c9f0d",
"expires_at": "2026-10-28T00:52:38.222Z",
"suggested_signer": "Morgan Ellis"
}
}
GET /v1/partner/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 same words again (a reload of the review step)
curl https://partners.socialmatterspay.com/v1/partner/bank/intents/614c0161-3e4f-4191-8732-18cf7ffcb966 \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"data": {
"object": "bank_link_intent",
"id": "614c0161-3e4f-4191-8732-18cf7ffcb966",
"link_method": "sandbox",
"bank_name": "Sandbox test bank",
"account_last4": "9606",
"account_holder_name": "Ridgeline Advisory LLC",
"entry_code": "CCD",
"authorization_text": "Ridgeline Advisory LLC authorizes Social Matter Payments LLC to initiate ACH debit entries (CCD) to the business bank account ending in 9606 for fees and other amounts Ridgeline Advisory LLC owes Social Matter Payments LLC under the partner agreement that its commission payouts from Social Matter Payments LLC do not cover. The amount of each debit appears on Ridgeline Advisory LLC's statement before the debit is made. This authorization stays in effect until Social Matter Payments LLC receives written notice of revocation at work@socialmatters.pro in time to act on it. Revoking it does not cancel amounts already owed.",
"text_sha256": "feb5e4e340a42385541178cbaa4db205016c6b96ede4f11d0a6375a7da3c9f0d",
"expires_at": "2026-10-28T00:52:38.222Z"
}
}
POST /v1/partner/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 getPartnerFeeDebitAuthorization · authorization. |
Example
Sign them with the password: the new payout account
curl -X POST https://partners.socialmatterspay.com/v1/partner/bank/intents/614c0161-3e4f-4191-8732-18cf7ffcb966/confirm \
-H 'Authorization: Bearer partner_session_token' \
-H 'Content-Type: application/json' \
-d '{
"accepted": true,
"signer_name": "Morgan Ellis",
"signer_title": "Managing member",
"text_sha256": "feb5e4e340a42385541178cbaa4db205016c6b96ede4f11d0a6375a7da3c9f0d",
"password": "correct horse battery staple"
}'
HTTP 201
Cache-Control: no-store
{
"data": {
"object": "payout_bank_connection",
"id": "d1e59853-2b1d-4e85-9fd2-52b5d0f4957a",
"link_method": "sandbox",
"bank_name": "Sandbox test bank",
"account_last4": "9606",
"connected_at": "2026-10-28T00:22:38.265Z",
"connected_email": "morgan@ridgeline.example",
"authorization": {
"id": "ada_c9a2fd91-aed3-432d-9287-03391f49bfb2",
"object": "fee_debit_authorization",
"status": "in_force",
"entry_code": "CCD",
"authorization_text": "Ridgeline Advisory LLC authorizes Social Matter Payments LLC to initiate ACH debit entries (CCD) to the business bank account ending in 9606 for fees and other amounts Ridgeline Advisory LLC owes Social Matter Payments LLC under the partner agreement that its commission payouts from Social Matter Payments LLC do not cover. The amount of each debit appears on Ridgeline Advisory LLC's statement before the debit is made. This authorization stays in effect until Social Matter Payments LLC receives written notice of revocation at work@socialmatters.pro in time to act on it. Revoking it does not cancel amounts already owed.",
"text_sha256": "feb5e4e340a42385541178cbaa4db205016c6b96ede4f11d0a6375a7da3c9f0d",
"account_last4": "9606",
"account_type": "checking",
"account_holder_name": "Ridgeline Advisory LLC",
"signer_name": "Morgan Ellis",
"signer_title": "Managing member",
"accepted_at": "2026-10-28T00:22:38.265Z",
"revoked_at": null,
"revoked_reason": null,
"retain_until": null
}
}
}
GET /v1/partner/applications
The merchants this partner submitted or referred, and where each application stands (never their numbers)
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 partner's merchant applications, newest first, at most 200.20 child fields
|
Example
The applications this partner started, and where each stands
curl https://partners.socialmatterspay.com/v1/partner/applications \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"applications": [
{
"id": "75684289-bb07-4552-84ff-a5d3b4bca687",
"reference": "SMP-8WKZ-14PC",
"status": "draft",
"legal_name": "Tidewater Supply LLC",
"dba_name": "Tidewater Supply",
"contact_email": "owner@tidewater.example",
"started_by": "partner",
"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.273Z",
"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/partner/applications
Submit a merchant: items 1–8 of the submission list and a price proposal (never below SMP’s floor); the merchant is emailed a link to finish
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 (status 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: the merchant is emailed a link to finish it
curl -X POST https://partners.socialmatterspay.com/v1/partner/applications \
-H 'Authorization: Bearer partner_session_token' \
-H 'Content-Type: application/json' \
-d '{
"contact": {
"email": "owner@tidewater.example",
"phone": "(813) 555-0144",
"name": "Jennifer Thompson"
},
"business": {
"legal_name": "Tidewater Supply LLC",
"dba_name": "Tidewater Supply",
"website_url": "https://tidewater.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-6001",
"address_line1": "9 Bay Rd",
"address_city": "Tampa",
"address_state": "FL",
"address_postal_code": "33606",
"email": "owner@tidewater.example"
}
],
"pricing": {
"bps": 125,
"fixed_cents": 35,
"cap_cents": 450
}
}'
HTTP 201
Cache-Control: no-store
{
"data": {
"object": "application",
"id": "75684289-bb07-4552-84ff-a5d3b4bca687",
"reference": "SMP-8WKZ-14PC",
"status": "draft",
"link_sent_to": "o••••@tidewater.example",
"proposed_pricing": {
"bps": 125,
"fixed_cents": 35,
"cap_cents": 450
},
"proposed_pricing_text": "1.25% + $0.35 per payment, capped at $4.50"
}
}
GET /v1/partner/pricing-floor
SMP’s floor: no proposal may be cheaper in its rate, fixed fee or cap
Host https://partners.socialmatterspay.com
Responses
| Status | Meaning |
|---|---|
200 | The floor |
401 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes | ||||||||
|---|---|---|---|---|---|---|---|---|---|
floorobject | null | The lowest price a partner may propose. Null when SMP's standard price is not set.4 child fields
|
Example
The lowest price a partner may propose: SMP's floor
curl https://partners.socialmatterspay.com/v1/partner/pricing-floor \
-H 'Authorization: Bearer partner_session_token'
HTTP 200
Cache-Control: no-store
{
"floor": {
"bps": 100,
"fixed_cents": 25,
"cap_cents": 400,
"text": "1.00% + $0.25 per payment, capped at $4.00"
}
}
PUT /v1/partner/links/{id}/pricing
The price this partner proposes for merchants who apply through one of its links (null clears it)
Host https://partners.socialmatterspay.com
Parameters
| Field | Notes |
|---|---|
id requiredpath · string | — |
Request body
| Field | Notes | ||||||
|---|---|---|---|---|---|---|---|
pricing requiredobject | null | 3 child fields
|
Responses
| Status | Meaning |
|---|---|
200 | The link’s proposal |
400 | Error — error shape and codes |
401 | Error — error shape and codes |
404 | Error — error shape and codes |
503 | Error — error shape and codes |
Fields of the response (200)
| Field | Notes | ||||||
|---|---|---|---|---|---|---|---|
link_idstring | — | ||||||
proposed_pricingobject | null | The price now proposed on the link. Null when cleared, so merchants get SMP's own price.3 child fields
| ||||||
proposed_pricing_textstring | null | — |
Example
Propose a price for merchants who apply through a link
curl -X PUT https://partners.socialmatterspay.com/v1/partner/links/ad78c3b9-8360-4dc1-8712-c5c8257e7ca0/pricing \
-H 'Authorization: Bearer partner_session_token' \
-H 'Content-Type: application/json' \
-d '{
"pricing": {
"bps": 125,
"fixed_cents": 35,
"cap_cents": 450
}
}'
HTTP 200
Cache-Control: no-store
{
"link_id": "ad78c3b9-8360-4dc1-8712-c5c8257e7ca0",
"proposed_pricing": {
"bps": 125,
"fixed_cents": 35,
"cap_cents": 450
},
"proposed_pricing_text": "1.25% + $0.35 per payment, capped at $4.50"
}
