Staging
split.pay

API 参考

你的服务器创建分摊付款、读取结果和接收 webhook 所需的一切。

split.pay API · v0.1.0 · OpenAPI 3.1

下载 OpenAPI (JSON)

快速入门

API 密钥与模式

在商户后台的“开发者”中创建密钥。以 sp_test_ 开头的密钥只能看到测试数据,不会产生真实资金流动;sp_live_ 密钥用于正式数据。模式由密钥决定,因此请求中没有模式参数。密钥只显示一次:请只保存在你的服务器上。

身份验证

以 Bearer 令牌发送密钥:Authorization: Bearer sp_test_… 每个密钥有权限范围,下面每个接口都注明所需范围;缺少该范围的密钥会收到 403 insufficient_scope。

幂等性

标有 Idempotency-Key 的接口必须带此请求头(8 到 255 个字符,可用字母、数字和 . _ : -)。用相同密钥重复请求会返回第一次的响应,并带有请求头 Idempotent-Replayed: true;相同密钥但请求不同则返回 409 idempotency_key_reused。

分页

列表返回 data 和 next_cursor。把 next_cursor 作为 cursor 传入即可获取下一页;limit 范围为 1 到 100。

买家费用及承担方

第一份(position 1)无需支付手续费;其余每份在份额之外加上 GET /v1/processing-fees 返回的按币种固定费用。示例:100.00 美元分成 4 份,第 1 份支付 25.00,第 2 至 4 份各支付 25.30,付款人合计支付 100.90。付款人合计支付 = amount + fee × (参与者数 − 1)。请把买家(正在结账的人)列在第一位,让其享受免费份额。若支付处理方的实际固定费用更高,差额由您承担。

错误

错误为 JSON:{ "error": { "type", "code", "message", "request_id", "details" } }。请在代码中依据 HTTP 状态和 code 判断,不要依赖 message。联系支持时请提供 request_id。

速率限制

每个 API 密钥每分钟 600 次请求,每个 IP 地址每分钟 3000 次。超出限制将返回 429 rate_limited;请等待 Retry-After 请求头给出的秒数。

Webhook 与签名

通过 POST /v1/webhook-endpoints 创建端点并保存其签名密钥。每次投递都带有 Splitpay-Signature 请求头:t=<Unix 秒>,v1=<用密钥对 "t.body" 计算的十六进制 HMAC-SHA256>,基于原始请求体计算。若没有匹配的 v1,或 t 与你的时钟相差超过 5 分钟,请拒绝该请求。投递至少一次:请按事件 id 去重。

停机后补齐

GET /v1/events 返回与你的端点收到的相同的事件信封。停机后,列出离线以来创建的事件(created_from),并跳过已处理的 id。事件保留 90 天。

Checkout SDK

Checkout SDK 会在您的网站上方以弹出窗口打开付款页面,顾客无需离开您的网站。从 split.pay 付款页面的源加载脚本,并把新会话的 payment_url 传给 SplitPay.open。该脚本没有依赖,不设置 cookie,也不做任何跟踪。

<script src="https://pay.example.com/sdk/v1/splitpay.js"></script>
<script>
  // payment_url comes from POST /v1/split-sessions, created on your server.
  const checkout = SplitPay.open(paymentUrl, {
    onEvent: ({ type, state }) => {
      if (type === 'session_paid') showOrderStatus(); // a hint: your server confirms
    },
    onClose: ({ reason }) => showOrderStatus(), // reason: 'closed' | 'blocked'
    fallback: 'redirect', // or 'none'
  });
  // checkout.close(), checkout.focus(), checkout.closed
</script>

onEvent 收到 { type, state }(state 为会话的公开状态)。类型:

  • share_authorized — 顾客已授权自己的份额。
  • session_authorized — 所有份额均已授权。
  • session_paid — 会话已支付。
  • session_cancelled — 会话已取消。
  • session_expired — 会话已过期。
  • return — 顾客在离开前点击了返回商家按钮。
  • cancel — 顾客在离开前点击了取消。

如果浏览器拦截了弹出窗口,当前标签页会跳转到付款页面(fallback 为 "redirect",默认值)。使用 fallback "none" 时,会以 reason "blocked" 调用 onClose,您可以改为显示一个按钮。窗口关闭时 onClose 也会被调用一次。若网址不在脚本所在的源上,SplitPay.open 会抛出 TypeError。只有会话设置了 return_url 或 cancel_url 时才会发送消息,且只发送到该网址的源。

这些事件只是给您页面的提示。请务必在您的服务器上确认结果:用 GET /v1/split-sessions/{id} 读取会话,或依靠 webhook 和事件流。

接口

Split sessions

One bill paid by several people.

POST/v1/split-sessions

Create a split session

Creates a split session and its payment link. Share payment_url with the people who pay.

范围: split_sessions:write

参数
名称位置类型必填说明
Idempotency-Keyheaderstring是Makes the request safe to repeat: the same key returns the first response (header Idempotent-Replayed: true). The same key with a different request is refused with 409 idempotency_key_reused.
请求体
名称类型必填说明
amountinteger是min > 0, max 999999999999
currencystring是pattern ^[A-Z]{3}$
participantsinteger | array<object>否
字段
名称类型必填说明
#1array<object>否
字段
名称类型必填说明
amountinteger是min > 0, max 999999999999
labelstring否min length 1, max length 60
orderobject是
字段
名称类型必填说明
referencestring是min length 1, max length 100
descriptionstring否min length 1, max length 200
return_urlstring否max length 2048
cancel_urlstring否max length 2048
expires_ininteger否min 600, max 518400
响应 201
名称类型必填说明
split_sessionobject是
字段
名称类型必填说明
idstring (uuid)是
stateenum: created | collecting | all_authorized | capturing | paid | expiring | expired | cancelling | cancelled | capture_partial_failure | compensating | failed_reversed是
split_modeenum: merchant_defined | payer_defined是
amountinteger是min > 0, max 999999999999
processing_fee_per_shareinteger是min 0, max 9007199254740991
total_chargedinteger是min 0, max 9007199254740991
currencystring是pattern ^[A-Z]{3}$
orderobject是
字段
名称类型必填说明
idstring (uuid)是
referencestring是
descriptionstring | null是
participantsarray<object>是
字段
名称类型必填说明
idstring (uuid)是
positioninteger是min 1, max 9007199254740991
labelstring | null是
amountinteger是min > 0, max 999999999999
amount_chargedinteger是min > 0, max 999999999999
application_fee_amountinteger是min 0, max 9007199254740991
stateenum: created | waiting_for_payment_method | confirming | requires_action | authorized | capturing | captured | cancelling | cancelled | failed | refunding | partially_refunded | refunded是
amount_refundedinteger是min 0, max 9007199254740991
feesobject是
字段
名称类型必填说明
policy_versionstring是
application_fee_totalinteger是min 0, max 9007199254740991
payment_urlstring是
expires_atstring (date-time)是
created_atstring (date-time)是
amount_refundedinteger是min 0, max 9007199254740991

GET/v1/split-sessions

List split sessions

Newest first. The key decides the mode.

范围: split_sessions:read

参数
名称位置类型必填说明
limitqueryinteger否min 1, max 100, default 25
cursorquerystring (uuid)否
statequeryenum: created | collecting | all_authorized | capturing | paid | expiring | expired | cancelling | cancelled | capture_partial_failure | compensating | failed_reversed否
referencequerystring否min length 1, max length 100
created_fromquerystring (date-time)否
created_toquerystring (date-time)否
响应 200
名称类型必填说明
dataarray<object>是
字段
名称类型必填说明
idstring (uuid)是
stateenum: created | collecting | all_authorized | capturing | paid | expiring | expired | cancelling | cancelled | capture_partial_failure | compensating | failed_reversed是
split_modeenum: merchant_defined | payer_defined是
amountinteger是min > 0, max 999999999999
currencystring是pattern ^[A-Z]{3}$
participant_countinteger是min 0, max 9007199254740991
participants_summaryobject是
字段
名称类型必填说明
countsarray<object>是
字段
名称类型必填说明
stateenum: created | waiting_for_payment_method | confirming | requires_action | authorized | capturing | captured | cancelling | cancelled | failed | refunding | partially_refunded | refunded是
countinteger是min 1, max 9007199254740991
itemsarray<object>是
字段
名称类型必填说明
labelstring | null是
stateenum: created | waiting_for_payment_method | confirming | requires_action | authorized | capturing | captured | cancelling | cancelled | failed | refunding | partially_refunded | refunded是
orderobject是
字段
名称类型必填说明
idstring (uuid)是
referencestring是
descriptionstring | null是
amount_refundedinteger是min 0, max 9007199254740991
sourceenum: merchant_api | merchant_dashboard是
expires_atstring (date-time)是
created_atstring (date-time)是
next_cursorstring | null是

GET/v1/split-sessions/{split_session_id}

Retrieve a split session

范围: split_sessions:read

参数
名称位置类型必填说明
split_session_idpathstring (uuid)是
响应 200
名称类型必填说明
split_sessionobject是
字段
名称类型必填说明
idstring (uuid)是
stateenum: created | collecting | all_authorized | capturing | paid | expiring | expired | cancelling | cancelled | capture_partial_failure | compensating | failed_reversed是
split_modeenum: merchant_defined | payer_defined是
amountinteger是min > 0, max 999999999999
processing_fee_per_shareinteger是min 0, max 9007199254740991
total_chargedinteger是min 0, max 9007199254740991
currencystring是pattern ^[A-Z]{3}$
orderobject是
字段
名称类型必填说明
idstring (uuid)是
referencestring是
descriptionstring | null是
participantsarray<object>是
字段
名称类型必填说明
idstring (uuid)是
positioninteger是min 1, max 9007199254740991
labelstring | null是
amountinteger是min > 0, max 999999999999
amount_chargedinteger是min > 0, max 999999999999
application_fee_amountinteger是min 0, max 9007199254740991
stateenum: created | waiting_for_payment_method | confirming | requires_action | authorized | capturing | captured | cancelling | cancelled | failed | refunding | partially_refunded | refunded是
amount_refundedinteger是min 0, max 9007199254740991
feesobject是
字段
名称类型必填说明
policy_versionstring是
application_fee_totalinteger是min 0, max 9007199254740991
payment_urlstring是
expires_atstring (date-time)是
created_atstring (date-time)是
amount_refundedinteger是min 0, max 9007199254740991

POST/v1/split-sessions/{split_session_id}/cancel

Cancel a split session

Releases the card holds of a session that is not yet paid.

范围: split_sessions:write

参数
名称位置类型必填说明
split_session_idpathstring (uuid)是
Idempotency-Keyheaderstring是Makes the request safe to repeat: the same key returns the first response (header Idempotent-Replayed: true). The same key with a different request is refused with 409 idempotency_key_reused.
响应 200
名称类型必填说明
split_sessionobject是
字段
名称类型必填说明
idstring (uuid)是
stateenum: created | collecting | all_authorized | capturing | paid | expiring | expired | cancelling | cancelled | capture_partial_failure | compensating | failed_reversed是
split_modeenum: merchant_defined | payer_defined是
amountinteger是min > 0, max 999999999999
processing_fee_per_shareinteger是min 0, max 9007199254740991
total_chargedinteger是min 0, max 9007199254740991
currencystring是pattern ^[A-Z]{3}$
orderobject是
字段
名称类型必填说明
idstring (uuid)是
referencestring是
descriptionstring | null是
participantsarray<object>是
字段
名称类型必填说明
idstring (uuid)是
positioninteger是min 1, max 9007199254740991
labelstring | null是
amountinteger是min > 0, max 999999999999
amount_chargedinteger是min > 0, max 999999999999
application_fee_amountinteger是min 0, max 9007199254740991
stateenum: created | waiting_for_payment_method | confirming | requires_action | authorized | capturing | captured | cancelling | cancelled | failed | refunding | partially_refunded | refunded是
amount_refundedinteger是min 0, max 9007199254740991
feesobject是
字段
名称类型必填说明
policy_versionstring是
application_fee_totalinteger是min 0, max 9007199254740991
payment_urlstring是
expires_atstring (date-time)是
created_atstring (date-time)是
amount_refundedinteger是min 0, max 9007199254740991

Refunds

Return money to the participants of a paid order.

POST/v1/orders/{order_id}/refunds

Refund an order

Without an amount, the whole remaining refundable amount is refunded.

范围: refunds:write

参数
名称位置类型必填说明
order_idpathstring (uuid)是
Idempotency-Keyheaderstring是Makes the request safe to repeat: the same key returns the first response (header Idempotent-Replayed: true). The same key with a different request is refused with 409 idempotency_key_reused.
请求体
名称类型必填说明
amountinteger否min > 0, max 999999999999
reasonenum: requested_by_customer | duplicate | fraudulent | other否
响应 201
名称类型必填说明
refundobject是
字段
名称类型必填说明
idstring (uuid)是
object"refund"是
order_idstring (uuid)是
split_session_idstring (uuid)是
amountinteger是min > 0, max 999999999999
currencystring是pattern ^[A-Z]{3}$
reasonenum: requested_by_customer | duplicate | fraudulent | other | null是
statusenum: pending | processing | succeeded | partially_succeeded | failed是
allocationsarray<object>是
字段
名称类型必填说明
idstring (uuid)是
participant_idstring (uuid)是
amountinteger是min > 0, max 999999999999
statusenum: pending | processing | succeeded | failed是
created_atstring (date-time)是
updated_atstring (date-time)是

GET/v1/refunds/{refund_id}

Retrieve a refund

范围: refunds:read

参数
名称位置类型必填说明
refund_idpathstring (uuid)是
响应 200
名称类型必填说明
refundobject是
字段
名称类型必填说明
idstring (uuid)是
object"refund"是
order_idstring (uuid)是
split_session_idstring (uuid)是
amountinteger是min > 0, max 999999999999
currencystring是pattern ^[A-Z]{3}$
reasonenum: requested_by_customer | duplicate | fraudulent | other | null是
statusenum: pending | processing | succeeded | partially_succeeded | failed是
allocationsarray<object>是
字段
名称类型必填说明
idstring (uuid)是
participant_idstring (uuid)是
amountinteger是min > 0, max 999999999999
statusenum: pending | processing | succeeded | failed是
created_atstring (date-time)是
updated_atstring (date-time)是

GET/v1/refunds

List refunds

Newest first. The key decides the mode.

范围: refunds:read

参数
名称位置类型必填说明
limitqueryinteger否min 1, max 100, default 25
cursorquerystring (uuid)否
statusqueryenum: pending | processing | succeeded | partially_succeeded | failed否
referencequerystring否min length 1, max length 100
created_fromquerystring (date-time)否
created_toquerystring (date-time)否
响应 200
名称类型必填说明
dataarray<object>是
字段
名称类型必填说明
idstring (uuid)是
object"refund"是
order_idstring (uuid)是
split_session_idstring (uuid)是
amountinteger是min > 0, max 999999999999
currencystring是pattern ^[A-Z]{3}$
reasonenum: requested_by_customer | duplicate | fraudulent | other | null是
statusenum: pending | processing | succeeded | partially_succeeded | failed是
allocationsarray<object>是
字段
名称类型必填说明
idstring (uuid)是
participant_idstring (uuid)是
amountinteger是min > 0, max 999999999999
statusenum: pending | processing | succeeded | failed是
created_atstring (date-time)是
updated_atstring (date-time)是
settled_amountinteger | null是
settled_currencystring | null是
next_cursorstring | null是

Payments

The individual payments of your split sessions.

GET/v1/payments

List payments

Newest first. The key decides the mode.

范围: payments:read

参数
名称位置类型必填说明
limitqueryinteger否min 1, max 100, default 25
cursorquerystring (uuid)否
statequeryenum: created | waiting_for_payment_method | confirming | requires_action | authorized | capturing | captured | cancelling | cancelled | failed | refunding | partially_refunded | refunded否
referencequerystring否min length 1, max length 100
created_fromquerystring (date-time)否
created_toquerystring (date-time)否
响应 200
名称类型必填说明
dataarray<object>是
字段
名称类型必填说明
idstring (uuid)是
object"payment"是
split_session_idstring (uuid)是
order_idstring (uuid)是
order_referencestring是
participant_idstring (uuid)是
participant_labelstring | null是
amountinteger是min > 0, max 999999999999
application_fee_amountinteger是min 0, max 9007199254740991
currencystring是pattern ^[A-Z]{3}$
presentment_amountinteger | null是
presentment_currencystring | null是
stateenum: created | waiting_for_payment_method | confirming | requires_action | authorized | capturing | captured | cancelling | cancelled | failed | refunding | partially_refunded | refunded是
amount_refundedinteger是min 0, max 9007199254740991
settled_amountinteger | null是
settled_currencystring | null是
refunded_settledinteger | null是
fees_totalinteger | null是
netinteger | null是
fees_currencystring | null是
gateway_feeinteger | null是
created_atstring (date-time)是
updated_atstring (date-time)是
next_cursorstring | null是

GET/v1/payments/{payment_id}

Retrieve a payment

范围: payments:read

参数
名称位置类型必填说明
payment_idpathstring (uuid)是
响应 200
名称类型必填说明
paymentobject是
字段
名称类型必填说明
idstring (uuid)是
object"payment"是
split_session_idstring (uuid)是
order_idstring (uuid)是
order_referencestring是
participant_idstring (uuid)是
participant_labelstring | null是
amountinteger是min > 0, max 999999999999
application_fee_amountinteger是min 0, max 9007199254740991
currencystring是pattern ^[A-Z]{3}$
presentment_amountinteger | null是
presentment_currencystring | null是
stateenum: created | waiting_for_payment_method | confirming | requires_action | authorized | capturing | captured | cancelling | cancelled | failed | refunding | partially_refunded | refunded是
amount_refundedinteger是min 0, max 9007199254740991
settled_amountinteger | null是
settled_currencystring | null是
refunded_settledinteger | null是
fees_totalinteger | null是
netinteger | null是
fees_currencystring | null是
gateway_feeinteger | null是
created_atstring (date-time)是
updated_atstring (date-time)是

Events

The events behind your webhooks, to catch up after downtime.

GET/v1/events

List events

Each event is the envelope a webhook endpoint received. Use it to catch up after downtime.

范围: events:read

参数
名称位置类型必填说明
limitqueryinteger否min 1, max 100, default 25
cursorquerystring (uuid)否
typequeryenum: split_session.paid | split_session.failed | split_session.cancelled | split_session.expired | refund.succeeded | refund.partially_succeeded | refund.failed | dispute.created | dispute.updated | dispute.closed否
created_fromquerystring (date-time)否
created_toquerystring (date-time)否
响应 200
名称类型必填说明
dataarray<object | object | object>是
字段
名称类型必填说明
#1object否
字段
名称类型必填说明
idstring (uuid)是
object"event"是
created_atstring (date-time)是
livemodeboolean是
typeenum: split_session.paid | split_session.failed | split_session.cancelled | split_session.expired是
dataobject是
字段
名称类型必填说明
objectobject是
字段
名称类型必填说明
idstring (uuid)是
stateenum: created | collecting | all_authorized | capturing | paid | expiring | expired | cancelling | cancelled | capture_partial_failure | compensating | failed_reversed是
split_modeenum: merchant_defined | payer_defined是
amountinteger是min > 0, max 999999999999
processing_fee_per_shareinteger是min 0, max 9007199254740991
total_chargedinteger是min 0, max 9007199254740991
currencystring是pattern ^[A-Z]{3}$
orderobject是
字段
名称类型必填说明
idstring (uuid)是
referencestring是
descriptionstring | null是
participantsarray<object>是
feesobject是
字段
名称类型必填说明
policy_versionstring是
application_fee_totalinteger是min 0, max 9007199254740991
payment_urlstring是
expires_atstring (date-time)是
created_atstring (date-time)是
amount_refundedinteger是min 0, max 9007199254740991
#2object否
字段
名称类型必填说明
idstring (uuid)是
object"event"是
created_atstring (date-time)是
livemodeboolean是
typeenum: refund.succeeded | refund.partially_succeeded | refund.failed是
dataobject是
字段
名称类型必填说明
objectobject是
字段
名称类型必填说明
idstring (uuid)是
object"refund"是
order_idstring (uuid)是
split_session_idstring (uuid)是
amountinteger是min > 0, max 999999999999
currencystring是pattern ^[A-Z]{3}$
reasonenum: requested_by_customer | duplicate | fraudulent | other | null是
statusenum: pending | processing | succeeded | partially_succeeded | failed是
allocationsarray<object>是
created_atstring (date-time)是
updated_atstring (date-time)是
#3object否
字段
名称类型必填说明
idstring (uuid)是
object"event"是
created_atstring (date-time)是
livemodeboolean是
typeenum: dispute.created | dispute.updated | dispute.closed是
dataobject是
字段
名称类型必填说明
objectobject是
字段
名称类型必填说明
idstring (uuid)是
object"dispute"是
payment_idstring (uuid) | null是
amountinteger是min > 0, max 999999999999
currencystring是pattern ^[A-Z]{3}$
statusenum: needs_response | under_review | won | lost | closed是
reasonenum: fraudulent | duplicate | product_not_received | product_unacceptable | credit_not_processed | subscription_canceled | unrecognized | processing_error | general是
evidence_due_bystring (date-time) | null是
created_atstring (date-time)是
next_cursorstring | null是

GET/v1/events/{event_id}

Retrieve an event

范围: events:read

参数
名称位置类型必填说明
event_idpathstring (uuid)是
响应 200
名称类型必填说明
#1object否
字段
名称类型必填说明
idstring (uuid)是
object"event"是
created_atstring (date-time)是
livemodeboolean是
typeenum: split_session.paid | split_session.failed | split_session.cancelled | split_session.expired是
dataobject是
字段
名称类型必填说明
objectobject是
字段
名称类型必填说明
idstring (uuid)是
stateenum: created | collecting | all_authorized | capturing | paid | expiring | expired | cancelling | cancelled | capture_partial_failure | compensating | failed_reversed是
split_modeenum: merchant_defined | payer_defined是
amountinteger是min > 0, max 999999999999
processing_fee_per_shareinteger是min 0, max 9007199254740991
total_chargedinteger是min 0, max 9007199254740991
currencystring是pattern ^[A-Z]{3}$
orderobject是
字段
名称类型必填说明
idstring (uuid)是
referencestring是
descriptionstring | null是
participantsarray<object>是
字段
名称类型必填说明
idstring (uuid)是
positioninteger是min 1, max 9007199254740991
labelstring | null是
amountinteger是min > 0, max 999999999999
amount_chargedinteger是min > 0, max 999999999999
application_fee_amountinteger是min 0, max 9007199254740991
stateenum: created | waiting_for_payment_method | confirming | requires_action | authorized | capturing | captured | cancelling | cancelled | failed | refunding | partially_refunded | refunded是
amount_refundedinteger是min 0, max 9007199254740991
feesobject是
字段
名称类型必填说明
policy_versionstring是
application_fee_totalinteger是min 0, max 9007199254740991
payment_urlstring是
expires_atstring (date-time)是
created_atstring (date-time)是
amount_refundedinteger是min 0, max 9007199254740991
#2object否
字段
名称类型必填说明
idstring (uuid)是
object"event"是
created_atstring (date-time)是
livemodeboolean是
typeenum: refund.succeeded | refund.partially_succeeded | refund.failed是
dataobject是
字段
名称类型必填说明
objectobject是
字段
名称类型必填说明
idstring (uuid)是
object"refund"是
order_idstring (uuid)是
split_session_idstring (uuid)是
amountinteger是min > 0, max 999999999999
currencystring是pattern ^[A-Z]{3}$
reasonenum: requested_by_customer | duplicate | fraudulent | other | null是
statusenum: pending | processing | succeeded | partially_succeeded | failed是
allocationsarray<object>是
字段
名称类型必填说明
idstring (uuid)是
participant_idstring (uuid)是
amountinteger是min > 0, max 999999999999
statusenum: pending | processing | succeeded | failed是
created_atstring (date-time)是
updated_atstring (date-time)是
#3object否
字段
名称类型必填说明
idstring (uuid)是
object"event"是
created_atstring (date-time)是
livemodeboolean是
typeenum: dispute.created | dispute.updated | dispute.closed是
dataobject是
字段
名称类型必填说明
objectobject是
字段
名称类型必填说明
idstring (uuid)是
object"dispute"是
payment_idstring (uuid) | null是
amountinteger是min > 0, max 999999999999
currencystring是pattern ^[A-Z]{3}$
statusenum: needs_response | under_review | won | lost | closed是
reasonenum: fraudulent | duplicate | product_not_received | product_unacceptable | credit_not_processed | subscription_canceled | unrecognized | processing_error | general是
evidence_due_bystring (date-time) | null是
created_atstring (date-time)是

Reports

CSV downloads.

GET/v1/reports/payments.csv

Download the payments report

UTF-8 CSV with a header row; at most 25 months per download.

范围: reports:read

参数
名称位置类型必填说明
fromquerystring (date-time)是
toquerystring (date-time)是
tzquerystring是min length 1, max length 64
响应 200

UTF-8 CSV 文件。

GET/v1/reports/refunds.csv

Download the refunds report

UTF-8 CSV with a header row; at most 25 months per download.

范围: reports:read

参数
名称位置类型必填说明
fromquerystring (date-time)是
toquerystring (date-time)是
tzquerystring是min length 1, max length 64
响应 200

UTF-8 CSV 文件。

GET/v1/reports/split-sessions.csv

Download the split sessions report

UTF-8 CSV with a header row; at most 25 months per download.

范围: reports:read

参数
名称位置类型必填说明
fromquerystring (date-time)是
toquerystring (date-time)是
tzquerystring是min length 1, max length 64
响应 200

UTF-8 CSV 文件。

Webhook endpoints

Where split.pay delivers your events.

POST/v1/webhook-endpoints

Create a webhook endpoint

The signing secret is returned only here and when it is rotated.

范围: webhook_endpoints:write

请求体
名称类型必填说明
urlstring是max length 2048
enabled_eventsarray<any> | array<enum: split_session.paid | split_session.failed | split_session.cancelled | split_session.expired | refund.succeeded | refund.partially_succeeded | refund.failed | dispute.created | dispute.updated | dispute.closed>是
descriptionstring否min length 1, max length 200
响应 201
名称类型必填说明
webhook_endpointobject是
字段
名称类型必填说明
idstring (uuid)是
object"webhook_endpoint"是
urlstring是
enabled_eventsarray<string>是
statusenum: enabled | disabled是
descriptionstring | null是
created_atstring (date-time)是
updated_atstring (date-time)是
secretstring是

GET/v1/webhook-endpoints

List webhook endpoints

范围: webhook_endpoints:read

响应 200
名称类型必填说明
dataarray<object>是
字段
名称类型必填说明
idstring (uuid)是
object"webhook_endpoint"是
urlstring是
enabled_eventsarray<string>是
statusenum: enabled | disabled是
descriptionstring | null是
created_atstring (date-time)是
updated_atstring (date-time)是
next_cursorstring | null是

GET/v1/webhook-endpoints/{webhook_endpoint_id}

Retrieve a webhook endpoint

范围: webhook_endpoints:read

参数
名称位置类型必填说明
webhook_endpoint_idpathstring (uuid)是
响应 200
名称类型必填说明
webhook_endpointobject是
字段
名称类型必填说明
idstring (uuid)是
object"webhook_endpoint"是
urlstring是
enabled_eventsarray<string>是
statusenum: enabled | disabled是
descriptionstring | null是
created_atstring (date-time)是
updated_atstring (date-time)是

PATCH/v1/webhook-endpoints/{webhook_endpoint_id}

Update a webhook endpoint

范围: webhook_endpoints:write

参数
名称位置类型必填说明
webhook_endpoint_idpathstring (uuid)是
请求体
名称类型必填说明
urlstring否max length 2048
enabled_eventsarray<any> | array<enum: split_session.paid | split_session.failed | split_session.cancelled | split_session.expired | refund.succeeded | refund.partially_succeeded | refund.failed | dispute.created | dispute.updated | dispute.closed>否
statusenum: enabled | disabled否
descriptionstring | null否
响应 200
名称类型必填说明
webhook_endpointobject是
字段
名称类型必填说明
idstring (uuid)是
object"webhook_endpoint"是
urlstring是
enabled_eventsarray<string>是
statusenum: enabled | disabled是
descriptionstring | null是
created_atstring (date-time)是
updated_atstring (date-time)是

DELETE/v1/webhook-endpoints/{webhook_endpoint_id}

Delete a webhook endpoint

Past deliveries stay available for history.

范围: webhook_endpoints:write

参数
名称位置类型必填说明
webhook_endpoint_idpathstring (uuid)是
响应 204

无响应体。

POST/v1/webhook-endpoints/{webhook_endpoint_id}/rotate-secret

Rotate the signing secret

Returns the new secret once. The previous secret keeps signing for 24 hours, so deliveries made in that window carry two signatures.

范围: webhook_endpoints:write

参数
名称位置类型必填说明
webhook_endpoint_idpathstring (uuid)是
响应 200
名称类型必填说明
webhook_endpointobject是
字段
名称类型必填说明
idstring (uuid)是
object"webhook_endpoint"是
urlstring是
enabled_eventsarray<string>是
statusenum: enabled | disabled是
descriptionstring | null是
created_atstring (date-time)是
updated_atstring (date-time)是
secretstring是

Reference data

Currencies and split.pay fees.

GET/v1/processing-fees

List the split.pay fee per share

The fixed fee per share, for each currency. Share #1 pays no fee; every other share adds it, so the total the payers pay is amount + fee × (participants − 1).

范围: split_sessions:read

响应 200
名称类型必填说明
processing_feesarray<object>是
字段
名称类型必填说明
currencystring是pattern ^[A-Z]{3}$
processing_fee_per_shareinteger是min 0, max 9007199254740991

GET/v1/currencies

List supported currencies

Public: no API key needed.

无需 API 密钥

响应 200
名称类型必填说明
currenciesarray<object>是
字段
名称类型必填说明
codestring是pattern ^[A-Z]{3}$
exponentinteger是min 0, max 3
processing_fee_per_shareinteger | null是

Webhook 事件

  • split_session.paid — The session was paid in full.
  • split_session.failed — The session failed after authorisation and its payments were reversed.
  • split_session.cancelled — The session was cancelled.
  • split_session.expired — The session expired before everyone paid.
内容
名称类型必填说明
idstring (uuid)是
object"event"是
created_atstring (date-time)是
livemodeboolean是
typeenum: split_session.paid | split_session.failed | split_session.cancelled | split_session.expired是
dataobject是
字段
名称类型必填说明
objectobject是
字段
名称类型必填说明
idstring (uuid)是
stateenum: created | collecting | all_authorized | capturing | paid | expiring | expired | cancelling | cancelled | capture_partial_failure | compensating | failed_reversed是
split_modeenum: merchant_defined | payer_defined是
amountinteger是min > 0, max 999999999999
processing_fee_per_shareinteger是min 0, max 9007199254740991
total_chargedinteger是min 0, max 9007199254740991
currencystring是pattern ^[A-Z]{3}$
orderobject是
字段
名称类型必填说明
idstring (uuid)是
referencestring是
descriptionstring | null是
participantsarray<object>是
字段
名称类型必填说明
idstring (uuid)是
positioninteger是min 1, max 9007199254740991
labelstring | null是
amountinteger是min > 0, max 999999999999
amount_chargedinteger是min > 0, max 999999999999
application_fee_amountinteger是min 0, max 9007199254740991
stateenum: created | waiting_for_payment_method | confirming | requires_action | authorized | capturing | captured | cancelling | cancelled | failed | refunding | partially_refunded | refunded是
amount_refundedinteger是min 0, max 9007199254740991
feesobject是
字段
名称类型必填说明
policy_versionstring是
application_fee_totalinteger是min 0, max 9007199254740991
payment_urlstring是
expires_atstring (date-time)是
created_atstring (date-time)是
amount_refundedinteger是min 0, max 9007199254740991
  • refund.succeeded — A refund completed.
  • refund.partially_succeeded — A refund completed for some participants only.
  • refund.failed — A refund failed.
内容
名称类型必填说明
idstring (uuid)是
object"event"是
created_atstring (date-time)是
livemodeboolean是
typeenum: refund.succeeded | refund.partially_succeeded | refund.failed是
dataobject是
字段
名称类型必填说明
objectobject是
字段
名称类型必填说明
idstring (uuid)是
object"refund"是
order_idstring (uuid)是
split_session_idstring (uuid)是
amountinteger是min > 0, max 999999999999
currencystring是pattern ^[A-Z]{3}$
reasonenum: requested_by_customer | duplicate | fraudulent | other | null是
statusenum: pending | processing | succeeded | partially_succeeded | failed是
allocationsarray<object>是
字段
名称类型必填说明
idstring (uuid)是
participant_idstring (uuid)是
amountinteger是min > 0, max 999999999999
statusenum: pending | processing | succeeded | failed是
created_atstring (date-time)是
updated_atstring (date-time)是
  • dispute.created — A customer opened a dispute.
  • dispute.updated — A dispute changed.
  • dispute.closed — A dispute was closed.
内容
名称类型必填说明
idstring (uuid)是
object"event"是
created_atstring (date-time)是
livemodeboolean是
typeenum: dispute.created | dispute.updated | dispute.closed是
dataobject是
字段
名称类型必填说明
objectobject是
字段
名称类型必填说明
idstring (uuid)是
object"dispute"是
payment_idstring (uuid) | null是
amountinteger是min > 0, max 999999999999
currencystring是pattern ^[A-Z]{3}$
statusenum: needs_response | under_review | won | lost | closed是
reasonenum: fraudulent | duplicate | product_not_received | product_unacceptable | credit_not_processed | subscription_canceled | unrecognized | processing_error | general是
evidence_due_bystring (date-time) | null是
created_atstring (date-time)是