cardcom-payment-gateway
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCardcom Payment Gateway
Cardcom支付网关
Overview
概述
Cardcom is an Israeli payment processor with a unique strength: integrated invoice and receipt generation compliant with Israeli tax law. While other Israeli gateways handle only the payment, Cardcom can automatically generate tax invoices (hashbonit mas) and receipts (kabala) as part of the payment flow, something Israeli businesses are legally required to issue.
This skill guides integration with Cardcom's REST API V11 for payments, tokenization, recurring billing, and document generation. Every endpoint and field name in this skill is taken from the official Cardcom V11 OpenAPI specification.
Official docs: (interactive API reference with the full OpenAPI schema). V11 is the current API as of 2026; there is no public V12.
https://secure.cardcom.solutions/Api/v11/DocsSupport center:
https://support.cardcom.solutionsCardcom in the Israeli landscape: competes with Tranzila, Israpay, and Bit Business. Pricing is quoted per merchant. Cardcom publishes a starting rate of about 1.2% that falls with volume, but that is a floor and not a quote, so treat it as a starting point only and send the user to Cardcom for an actual figure rather than promising them a rate. The distinguishing feature for Israeli businesses remains the built-in tax document generation. For Tranzila integration use the skill instead.
tranzila-payment-gatewayCardcom是一家以色列支付处理器,其独特优势在于:可集成生成符合以色列税法的发票和收据。其他以色列支付网关仅处理支付,而Cardcom可以在支付流程中自动生成税务发票(hashbonit mas)和收据(kabala),这是以色列企业依法必须开具的文件。
本指南指导如何集成Cardcom的REST API V11以实现支付、令牌化、定期账单和文档生成功能。本指南中的每个端点和字段名称均来自官方Cardcom V11 OpenAPI规范。
官方文档: (包含完整OpenAPI架构的交互式API参考)。截至2026年,V11是当前的API版本;暂无公开的V12版本。
https://secure.cardcom.solutions/Api/v11/Docs支持中心:
https://support.cardcom.solutionsCardcom在以色列市场的定位: 与Tranzila、Israpay和Bit Business竞争。定价需根据商户情况报价。Cardcom公布的起始费率约为1.2%,会随交易量增加而降低,但这只是底价而非正式报价,因此仅作为参考,需引导用户联系Cardcom获取实际费率。对以色列企业而言,其显著特色仍然是内置的税务文档生成功能。如需Tranzila集成,请使用技能。
tranzila-payment-gatewayInstructions
操作步骤
Step 1: Choose Integration Pattern
步骤1:选择集成模式
| Pattern | Card Data Handling | Best For |
|---|---|---|
| Low Profile (iframe/redirect) | Cardcom handles card entry | Most integrations, minimal PCI scope (SAQ-A) |
| Transaction (server-to-server) | Raw card data or token | Charging stored tokens, recurring billing |
| CreateDocument (server-to-server) | No card data | Standalone invoice/receipt generation |
Most Israeli merchants use Low Profile for the initial payment plus token creation, then the Transaction endpoint with the stored token for recurring charges. All payment flows can auto-generate invoices by attaching a object.
Document| 集成模式 | 卡片数据处理方式 | 适用场景 |
|---|---|---|
| Low Profile(iframe/重定向) | 由Cardcom处理卡片信息录入 | 大多数集成场景,PCI合规范围最小(SAQ-A) |
| Transaction(服务器到服务器) | 原始卡片数据或令牌 | 向存储的令牌收费、定期账单 |
| CreateDocument(服务器到服务器) | 无卡片数据 | 独立生成发票/收据 |
大多数以色列商户会使用Low Profile进行初始支付并创建令牌,之后使用Transaction端点结合存储的令牌进行定期扣费。所有支付流程都可以通过附加对象自动生成发票。
DocumentStep 2: Set Up Authentication
步骤2:设置认证
Cardcom API V11 credentials:
- (integer) -- your terminal ID (use
TerminalNumberfor testing)1000 - (string) -- API username
ApiName - (string) -- API password. Required on 19 of the 50 V11 endpoints that take a request body. The rule of thumb: operations that read or act on company-wide data require it; operations that charge a single card do not. It is required on every
ApiPasswordwrite, everyDocuments/*report, everyFinancial/*call, and onTapTransactions/*,Transactions/ListTransactions, andRefundByTransactionId. It is NOT a field onSpecialTransactionsorLowProfile/Createat all, so do not send it there. When in doubt, check theTransactions/Transactionarray for the endpoint's request schema in the V11 OpenAPI spec.required
Test environment:
Terminal with the demo is widely cited in community libraries as the sandbox, with test card , any future expiry, CVV . We have NOT been able to confirm these against an official Cardcom test-credentials page, so treat them as community folklore: confirm your sandbox credentials with Cardcom support before relying on them, and never assume a call against terminal 1000 cannot move money.
1000ApiName4580000000000000123Store credentials securely, never in source code or client-side JavaScript.
Cardcom API V11凭证:
- (整数)-- 终端ID(测试时使用
TerminalNumber)1000 - (字符串)-- API用户名
ApiName - (字符串)-- API密码。在50个接收请求体的V11端点中,有19个需要该密码。经验法则:读取或操作企业级数据的操作需要该密码;单卡扣费操作不需要。所有
ApiPassword写入操作、所有Documents/*报表操作、所有Financial/*调用,以及TapTransactions/*、Transactions/ListTransactions和RefundByTransactionId都需要该密码。SpecialTransactions或LowProfile/Create端点根本不包含该字段,因此请勿在这些请求中发送。如有疑问,请查看V11 OpenAPI规范中端点请求架构的Transactions/Transaction数组。required
测试环境:
社区库中广泛提到,终端搭配演示是沙箱环境,测试卡号为,任意未来有效期,CVV为。我们尚未通过Cardcom官方测试凭证页面确认这些信息,因此仅作为社区参考:在依赖这些信息前,请联系Cardcom支持确认沙箱凭证,切勿假设调用终端1000不会产生真实交易。
1000ApiName4580000000000000123安全存储凭证,切勿存储在源代码或客户端JavaScript中。
Step 3: Implement the Payment Flow
步骤3:实现支付流程
Low Profile Integration (Recommended)
Low Profile集成(推荐)
This is a two-step process.
Step 3a: Create the payment page
POST https://secure.cardcom.solutions/api/v11/LowProfile/Create
Content-Type: application/json
{
"TerminalNumber": 1000,
"ApiName": "your-api-name",
"Operation": "ChargeAndCreateToken",
"ReturnValue": "unique-order-id",
"Amount": 100.00,
"SuccessRedirectUrl": "https://example.com/success",
"FailedRedirectUrl": "https://example.com/failed",
"WebHookUrl": "https://example.com/webhook",
"ISOCoinId": 1,
"Language": "he",
"Document": {
"DocumentTypeToCreate": "TaxInvoiceAndReceipt",
"Name": "Customer Name",
"Email": "customer@example.com",
"Products": [
{ "Description": "Product name", "UnitCost": 100.00, "Quantity": 1 }
]
}
}The response is a : check (success), read on failure. On success it returns (save it) and (redirect the customer there or embed as an iframe). and are also returned when those methods are enabled on your terminal.
CreateLowProfileResponseResponseCode == 0DescriptionLowProfileIdUrlUrlToBitUrlToPayPalThe field controls behaviour: (default), , , , .
OperationChargeOnlyChargeAndCreateTokenCreateTokenOnlySuspendedDealDo3DSAndSubmitStep 3b: Get the results
After payment completes, Cardcom calls your , or you query:
WebHookUrlPOST https://secure.cardcom.solutions/api/v11/LowProfile/GetLpResult
{
"TerminalNumber": 1000,
"ApiName": "your-api-name",
"LowProfileId": "id-from-step-3a"
}The response is a : check . On success it carries (transaction details), (the stored plus /), (the generated document), and (for suspended deals). Each nested object is when not applicable.
LowProfileResultResponseCode == 0TranzactionInfoTokenInfoTokenCardMonthCardYearDocumentInfoSuspendedInfonull这是一个两步流程。
步骤3a:创建支付页面
POST https://secure.cardcom.solutions/api/v11/LowProfile/Create
Content-Type: application/json
{
"TerminalNumber": 1000,
"ApiName": "your-api-name",
"Operation": "ChargeAndCreateToken",
"ReturnValue": "unique-order-id",
"Amount": 100.00,
"SuccessRedirectUrl": "https://example.com/success",
"FailedRedirectUrl": "https://example.com/failed",
"WebHookUrl": "https://example.com/webhook",
"ISOCoinId": 1,
"Language": "he",
"Document": {
"DocumentTypeToCreate": "TaxInvoiceAndReceipt",
"Name": "Customer Name",
"Email": "customer@example.com",
"Products": [
{ "Description": "Product name", "UnitCost": 100.00, "Quantity": 1 }
]
}
}响应为:检查表示成功,失败时读取。成功时会返回(请保存)和(将用户重定向到该地址或嵌入为iframe)。当终端启用相关支付方式时,还会返回和。
CreateLowProfileResponseResponseCode == 0DescriptionLowProfileIdUrlUrlToBitUrlToPayPalOperationChargeOnlyChargeAndCreateTokenCreateTokenOnlySuspendedDealDo3DSAndSubmit步骤3b:获取结果
支付完成后,Cardcom会调用你的,或者你可以主动查询:
WebHookUrlPOST https://secure.cardcom.solutions/api/v11/LowProfile/GetLpResult
{
"TerminalNumber": 1000,
"ApiName": "your-api-name",
"LowProfileId": "id-from-step-3a"
}响应为:检查。成功时会包含(交易详情)、(存储的以及/)、(生成的文档)和(针对暂停交易)。不适用的嵌套对象会为。
LowProfileResultResponseCode == 0TranzactionInfoTokenInfoTokenCardMonthCardYearDocumentInfoSuspendedInfonullAlternative Payment Methods
替代支付方式
The Low Profile response includes URLs for alternative payment methods when enabled on your terminal:
| Method | Response Field | Notes |
|---|---|---|
| Bit | | Israel's most popular mobile payment app, routed through Cardcom |
| PayPal | | International payments |
| Apple Pay | rendered inside the hosted Low Profile page | Listed on |
| Google Pay | rendered inside the hosted Low Profile page | Same as Apple Pay, surfaced as a wallet button on the Low Profile page |
UrlToBitUrlToPayPal当终端启用相关支付方式时,Low Profile响应会包含替代支付方式的URL:
| 支付方式 | 响应字段 | 说明 |
|---|---|---|
| Bit | | 以色列最受欢迎的移动支付应用,通过Cardcom路由 |
| PayPal | | 国际支付 |
| Apple Pay | 在托管的Low Profile页面内渲染 | 在 |
| Google Pay | 在托管的Low Profile页面内渲染 | 与Apple Pay相同,在Low Profile页面上显示为钱包按钮 |
UrlToBitUrlToPayPalStep 4: Generate Israeli Tax Documents
步骤4:生成以色列税务文档
Cardcom's standout feature is automatic document generation with payments. This is critical for Israeli businesses because tax law requires issuing proper documents for every transaction.
The document type is set with the field, a STRING enum (not an integer). Common values:
DocumentTypeToCreate| Value | Hebrew | English | When to Use |
|---|---|---|---|
| --- | Auto | Default; uses your admin-panel configuration |
| hashbonit mas / kabala | Tax Invoice + Receipt | B2C with payment (most common) |
| hashbonit mas | Tax Invoice | B2B, when receipt is issued separately |
| kabala | Receipt | Payment confirmation only |
| --- | Tax Invoice + Receipt Refund | Reversing a |
| --- | Tax Invoice Refund | Reversing a |
| --- | Receipt Refund | Reversing a |
| hashbonit iska / proforma | Proforma Invoice | Pre-sale quote document |
| kabalat trumot | Donation Receipt | Registered non-profits |
The full enum has 25 values and also includes , , , , , , and . Refund variants exist for MOST but not all of these: there is no and no . The 11 that do exist are , , , , , , , , , and . Verify the exact value you need against the official docs at .
DocumentToCreateQuoteOrderOrderConfirmationDeliveryNoteDemandForPaymentProformaDealInvoiceReceiptForTaxInvoiceCouponDocumentAndReceiptQuoteRefundOrderRefundTaxInvoiceAndReceiptRefundReceiptRefundOrderConfirmationRefundDeliveryNoteRefundDemandForPaymentRefundProformaDealInvoiceRefundProformaInvoiceRefundTaxInvoiceRefundDonationReceiptRefundCouponDocumentAndReceiptRefundReceiptForTaxInvoiceRefundhttps://secure.cardcom.solutions/Api/v11/DocsInclude a document in a payment flow:
Add the object to your Low Profile or request. Cardcom generates the document automatically when the payment succeeds.
DocumentCreateTransactionStandalone document creation:
POST https://secure.cardcom.solutions/api/v11/Documents/CreateDocument
{
"ApiName": "your-api-name",
"ApiPassword": "your-api-password",
"Document": {
"DocumentTypeToCreate": "TaxInvoice",
"Name": "Customer Ltd",
"TaxId": "123456789",
"Email": "customer@example.com",
"IsSendByEmail": true,
"Languge": "he",
"ISOCoinID": 1,
"Products": [
{ "Description": "Web development services", "UnitCost": 5000.00, "Quantity": 1 }
]
}
}The response is a : check , then read , , , and (link to the PDF).
DocumentInfoResponseCode == 0DocumentTypeDocumentNumberAccountIdDocumentUrlNote the real V11 field spellings inside the object: (string enum), (the "document To", required, max 50 chars), (business registration or ID number, replaces the older ), (replaces ), (the V11 spelling in THIS schema, missing the second ; note that the Low Profile document object uses the correctly spelled instead), (replaces ), , and with , , , . See for the complete field list.
DocumentDocumentTypeToCreateNameTaxIdVAT_NumberIsSendByEmailSendByEmailLangugeaDocumentLPLanguageISOCoinIDCoinIDIsVatFreeProducts[]DescriptionUnitCostQuantityIsVatFreereferences/document-types.mdCardcom的突出功能是在支付时自动生成文档。这对以色列企业至关重要,因为税法要求为每笔交易开具合规文档。
文档类型由****字段设置,这是一个STRING枚举(而非整数)。常见值如下:
DocumentTypeToCreate| 值 | 希伯来语 | 中文 | 使用场景 |
|---|---|---|---|
| --- | 自动 | 默认值;使用管理面板中的配置 |
| hashbonit mas / kabala | 税务发票+收据 | 带支付的B2C场景(最常见) |
| hashbonit mas | 税务发票 | B2B场景,收据单独开具 |
| kabala | 收据 | 仅支付确认 |
| --- | 税务发票+收据退款 | 撤销 |
| --- | 税务发票退款 | 撤销 |
| --- | 收据退款 | 撤销 |
| hashbonit iska / proforma | 形式发票 | 售前报价文档 |
| kabalat trumot | 捐赠收据 | 注册非营利组织 |
完整的枚举包含25个值,还包括、、、、、、和。大多数类型都有对应的退款变体,但和没有退款类型。存在的11种退款类型为、、、、、、、、、和。请根据上的官方文档确认你需要的确切值。
DocumentToCreateQuoteOrderOrderConfirmationDeliveryNoteDemandForPaymentProformaDealInvoiceReceiptForTaxInvoiceCouponDocumentAndReceiptQuoteOrderTaxInvoiceAndReceiptRefundReceiptRefundOrderConfirmationRefundDeliveryNoteRefundDemandForPaymentRefundProformaDealInvoiceRefundProformaInvoiceRefundTaxInvoiceRefundDonationReceiptRefundCouponDocumentAndReceiptRefundReceiptForTaxInvoiceRefundhttps://secure.cardcom.solutions/Api/v11/Docs在支付流程中包含文档:
在Low Profile的或请求中添加对象。支付成功时,Cardcom会自动生成文档。
CreateTransactionDocument独立创建文档:
POST https://secure.cardcom.solutions/api/v11/Documents/CreateDocument
{
"ApiName": "your-api-name",
"ApiPassword": "your-api-password",
"Document": {
"DocumentTypeToCreate": "TaxInvoice",
"Name": "Customer Ltd",
"TaxId": "123456789",
"Email": "customer@example.com",
"IsSendByEmail": true,
"Languge": "he",
"ISOCoinID": 1,
"Products": [
{ "Description": "Web development services", "UnitCost": 5000.00, "Quantity": 1 }
]
}
}响应为:检查,然后读取、、和(PDF链接)。
DocumentInfoResponseCode == 0DocumentTypeDocumentNumberAccountIdDocumentUrl请注意对象内V11的实际字段拼写:(字符串枚举)、(文档收件人,必填,最多50字符)、(企业注册或身份证号码,替代旧版的)、(替代)、(此架构中的V11拼写,缺少第二个;请注意,Low Profile的文档对象使用正确拼写的)、(替代)、,以及包含、、、的。完整字段列表请参考。
DocumentDocumentTypeToCreateNameTaxIdVAT_NumberIsSendByEmailSendByEmailLangugeaDocumentLPLanguageISOCoinIDCoinIDIsVatFreeDescriptionUnitCostQuantityIsVatFreeProducts[]references/document-types.mdStep 4.5: Allocation Numbers (Mispar Haktzaa) on Tax Invoices
步骤4.5:税务发票上的分配编号(Mispar Haktzaa)
Do not look for an allocation-number field in the API. There isn't one, and that is not an
omission. Cardcom built a direct interface to the Tax Authority, so when you issue a tax
invoice over the threshold the allocation number is requested automatically at document
creation, server-side. The request body carries no
field, and a developer hunting for one in the OpenAPI spec will conclude, wrongly, that
Cardcom does not support the requirement.
CreateDocumentAllocationNumberIt is not on by default. It needs a one-time setup, and without it your customer cannot
deduct their input VAT. An allocation number on a tax invoice is a precondition for the
recipient to deduct input VAT on any invoice whose pre-VAT amount exceeds the statutory
threshold. The setup, done once by the business owner or director on the Tax Authority
site, is:
- Identify (הזדהות) in the Tax Authority personal area, registering if necessary.
- For a company or a VAT-registered group (איחוד עוסקים), complete corporation registration (רישום פרטי תאגיד).
- In the Tax Authority digital-actions authorization system (מערכת הרשאה לפעולות דיגיטליות, linked from the ITA allocation-number service page), grant the authorization and select BOTH Israel-Invoice subjects, not one of them. One covers verifying the allocation number on a supplier's invoice; the other covers requesting an allocation number for an invoice you issue to a customer. Granting only the first is the common mistake, and it leaves your own invoices without a number. The exact wording of the two subjects is only visible inside that system, which is behind a login, so match them by meaning rather than by a string quoted here.
- Choose the authorization duration, and have the grantee confirm it.
Threshold schedule (amounts are pre-VAT):
The model itself took effect on 1 January 2024.
| Effective from | Threshold |
|---|---|
| 2025 | 20,000 NIS |
| 1 January 2026 | 10,000 NIS |
| 1 June 2026 | 5,000 NIS (in force now) |
An osek patur is unaffected, because they do not issue tax invoices and do not deduct input
VAT. If an integration was written earlier in 2026 against the 10,000 figure, invoices
between 5,000 and 10,000 are the band to re-check.
不要在API中寻找分配编号字段,因为它不存在,这并非遗漏。 Cardcom内置了与税务机关的直接接口,因此当你开具超过阈值的税务发票时,会在文档创建时自动向服务器端请求分配编号。请求体中没有字段,开发者如果在OpenAPI规范中找不到该字段,可能会错误地认为Cardcom不支持此要求。
CreateDocumentAllocationNumber该功能默认未启用,需要一次性设置,否则你的客户无法抵扣进项增值税。 对于税前金额超过法定阈值的发票,分配编号是收件人抵扣进项增值税的前提条件。企业所有者或负责人需要在税务机关网站上完成以下一次性设置:
- 在税务机关个人区域进行身份验证(הזדהות),必要时完成注册。
- 对于公司或增值税注册集团(איחוד עוסקים),完成企业注册(רישום פרטי תאגיד)。
- 在税务机关数字操作授权系统(מערכת הרשאה לפעולות דיגיטליות,可从以色列税务局分配编号服务页面跳转)中授予权限,并选择两个Israel-Invoice主题,而非其中一个。一个主题用于验证供应商发票上的分配编号;另一个主题用于为你开具给客户的发票请求分配编号。仅授予第一个主题是常见错误,这会导致你自己的发票没有编号。这两个主题的确切表述仅在登录后的系统内可见,因此请根据含义匹配,而非此处引用的字符串。
- 选择授权期限,并由被授权人确认。
阈值时间表(金额为税前金额):
该规则于2024年1月1日生效。
| 生效日期 | 阈值 |
|---|---|
| 2025年 | 20,000 新谢克尔 |
| 2026年1月1日 | 10,000 新谢克尔 |
| 2026年6月1日 | 5,000 新谢克尔(当前生效) |
免税企业(osek patur)不受影响,因为它们不开具税务发票,也不抵扣进项增值税。如果集成是在2026年初基于10,000新谢克尔的阈值开发的,请重新检查5,000至10,000新谢克尔区间的发票。
Step 5: Implement Token-Based Recurring Payments
步骤5:实现基于令牌的定期支付
For subscriptions and recurring billing (hora'ot keva), Cardcom supports two flavours:
- Card-based recurring, charging a stored credit-card on a schedule. Covered in this step.
Token - MASAV bank standing orders, debiting the customer's Israeli bank account directly. Managed through the endpoints (
RecuringPayments,RecuringPayments/GetRecurringPayment,GetRecurringPaymentHistory). Use this when the customer prefers a bank debit over a card charge or when the card is unavailable. The Cardcom dashboard provisions the underlying instruction.IsBankNumberValid
For card-based recurring:
-
Create a token during the first payment. Use Low Profile with(or
Operation: "ChargeAndCreateToken"). The"CreateTokenOnly"returnsLowProfileResultwithTokenInfo,Token,CardMonth, andCardYear(the date the token is purged from Cardcom).TokenExDate -
Store the token securely. Save thestring, card expiry, and last 4 digits. The token is bound to your terminal.
Token -
Charge the token via the Transaction endpoint:
POST https://secure.cardcom.solutions/api/v11/Transactions/Transaction
{
"TerminalNumber": 1000,
"ApiName": "your-api-name",
"Token": "token-uuid",
"CardExpirationMMYY": "1227",
"Amount": 99.00,
"ISOCoinId": 1,
"Document": {
"DocumentTypeToCreate": "TaxInvoiceAndReceipt",
"Name": "Subscriber Name",
"Email": "customer@example.com",
"IsSendByEmail": true,
"Products": [
{ "Description": "Monthly subscription", "UnitCost": 99.00, "Quantity": 1 }
]
}
}The response is a : check (note and also count as success for J2/J5 validation-only transactions), then read , , , and . Each token charge can automatically generate and email an invoice when a object is attached.
TransactionInfoResponseCode == 0700701TranzactionIdTokenDocumentNumberDocumentUrlDocument对于订阅和定期账单(hora'ot keva),Cardcom支持两种方式:
- 基于卡片的定期支付,按计划向存储的信用卡扣费。本步骤将介绍此方式。
Token - MASAV银行定期订单,直接从客户的以色列银行账户扣款。通过端点管理(
RecuringPayments、RecuringPayments/GetRecurringPayment、GetRecurringPaymentHistory)。当客户偏好银行扣款而非卡片支付,或卡片不可用时,使用此方式。Cardcom仪表板会配置底层指令。IsBankNumberValid
基于卡片的定期支付步骤:
-
首次支付时创建令牌。使用Low Profile并设置(或
Operation: "ChargeAndCreateToken")。"CreateTokenOnly"会返回LowProfileResult,包含TokenInfo、Token、CardMonth和CardYear(令牌从Cardcom中清除的日期)。TokenExDate -
安全存储令牌。保存字符串、卡片有效期和最后4位数字。令牌与你的终端绑定。
Token -
通过Transaction endpoint向令牌扣费:
POST https://secure.cardcom.solutions/api/v11/Transactions/Transaction
{
"TerminalNumber": 1000,
"ApiName": "your-api-name",
"Token": "token-uuid",
"CardExpirationMMYY": "1227",
"Amount": 99.00,
"ISOCoinId": 1,
"Document": {
"DocumentTypeToCreate": "TaxInvoiceAndReceipt",
"Name": "Subscriber Name",
"Email": "customer@example.com",
"IsSendByEmail": true,
"Products": [
{ "Description": "Monthly subscription", "UnitCost": 99.00, "Quantity": 1 }
]
}
}响应为:检查(注意,对于J2/J5仅验证交易,和也视为成功),然后读取、、和。每次令牌扣费都可以通过附加对象自动生成并发送发票邮件。
TransactionInfoResponseCode == 0700701TranzactionIdTokenDocumentNumberDocumentUrlDocumentStep 6: Process Refunds
步骤6:处理退款
Refund a transaction by its Cardcom transaction id:
POST https://secure.cardcom.solutions/api/v11/Transactions/RefundByTransactionId
{
"ApiName": "your-api-name",
"ApiPassword": "your-api-password",
"TransactionId": 219282004,
"PartialSum": 100.00,
"CancelOnly": false,
"AllowMultipleRefunds": false
}ApiPasswordPartialSumCancelOnly: trueRefundByTransactionIdRespResponseCode == 0NewTranzactionIdTo issue the matching credit document, call with a refund such as or .
Documents/CreateDocumentDocumentTypeToCreateTaxInvoiceAndReceiptRefundTaxInvoiceRefund通过Cardcom交易ID退款:
POST https://secure.cardcom.solutions/api/v11/Transactions/RefundByTransactionId
{
"ApiName": "your-api-name",
"ApiPassword": "your-api-password",
"TransactionId": 219282004,
"PartialSum": 100.00,
"CancelOnly": false,
"AllowMultipleRefunds": false
}退款需要。用于退还部分交易金额(省略该字段则退还全额)。用于在交易到账前撤销交易。响应为:检查,然后读取(退款交易的ID)。
ApiPasswordPartialSumCancelOnly: trueRefundByTransactionIdRespResponseCode == 0NewTranzactionId要开具对应的信用凭证,请调用并设置退款类型的,例如或。
Documents/CreateDocumentDocumentTypeToCreateTaxInvoiceAndReceiptRefundTaxInvoiceRefundStep 6.5: Query Transactions for Reporting
步骤6.5:查询交易用于报表
To pull a date range of transactions (reconciliation, monthly reports, dashboards):
POST https://secure.cardcom.solutions/api/v11/Transactions/ListTransactions
{
"ApiName": "your-api-name",
"ApiPassword": "your-api-password",
"FromDate": "01062026",
"ToDate": "30062026",
"TranStatus": "Success",
"Page": 1,
"Page_size": 100
}Four things about this endpoint trip up almost every integration:
- is required. This is a company-wide read, not a single charge.
ApiPassword - There is no field. The schema sets
TerminalNumber, so sendingadditionalProperties: falseis rejected outright. To scope results to one terminal, use the optionalTerminalNumberinstead.LimitForTerminal - Dates are strings, not ISO.
DDMMYYYYis 1 June 2026.01062026 - and
Pageare both required, andPage_sizemust be between 10 and 2000. Paging starts at 1, not 0.Page_size
The response is a : check , then read (an array of ), plus the echoed and . Keep requesting the next page until a page returns fewer rows than .
GetTranzactionsRespResponseCode == 0TranzactionsTransactionInfoPagePage_sizePage_sizeTransactions/SpecialTransactionsApiNameApiPasswordFromDateToDate拉取指定日期范围的交易(对账、月度报表、仪表盘):
POST https://secure.cardcom.solutions/api/v11/Transactions/ListTransactions
{
"ApiName": "your-api-name",
"ApiPassword": "your-api-password",
"FromDate": "01062026",
"ToDate": "30062026",
"TranStatus": "Success",
"Page": 1,
"Page_size": 100
}几乎每个集成都会在这个端点遇到四个问题:
- 必须提供。这是对企业级数据的读取操作,而非单卡扣费。
ApiPassword - 没有字段。架构设置了
TerminalNumber,因此发送additionalProperties: false会直接被拒绝。要将结果限定到单个终端,请使用可选的TerminalNumber字段。LimitForTerminal - 日期格式为字符串,而非ISO格式。
DDMMYYYY表示2026年6月1日。01062026 - 和
Page都是必填字段,且Page_size必须在10到2000之间。分页从1开始,而非0。Page_size
响应为:检查,然后读取(数组),以及返回的和。持续请求下一页,直到返回的行数少于。
GetTranzactionsRespResponseCode == 0TranzactionsTransactionInfoPagePage_sizePage_sizeTransactions/SpecialTransactionsApiNameApiPasswordFromDateToDateStep 7: Suspended Deals (Deferred Charges)
步骤7:暂停交易(延迟扣费)
A suspended deal authorizes a payment intent without an immediate charge:
- Create a Low Profile session with .
Operation: "SuspendedDeal" - The returns
LowProfileResultwith aSuspendedInfo.SuspendedDealId - Charge the suspended deal later through the Cardcom admin panel or the endpoint (the
SuspendedDeals/Chargegroup also exposesSuspendedDealsandCancel).GetSuspendedDealInfo
Useful for pre-authorizations and services billed after delivery. Verify the exact request fields against the official docs before wiring the charge-later call.
SuspendedDeals/Charge暂停交易是指授权支付意向但不立即扣费:
- 创建Low Profile会话并设置。
Operation: "SuspendedDeal" - 会返回
LowProfileResult,包含SuspendedInfo。SuspendedDealId - 之后通过Cardcom管理面板或端点扣费(
SuspendedDeals/Charge组还提供SuspendedDeals和Cancel功能)。GetSuspendedDealInfo
适用于预授权和交付后计费的服务。在配置延迟扣费调用前,请根据官方文档确认请求的确切字段。
SuspendedDeals/ChargeStep 8: Handle Errors
步骤8:处理错误
Every V11 endpoint returns a integer and a string. means success; any non-zero value is a developer/transaction error and carries the human-readable reason.
ResponseCodeDescriptionResponseCode == 0Descriptionpython
import requests
resp = requests.post(
"https://secure.cardcom.solutions/api/v11/Transactions/Transaction",
json=payload,
).json()
if resp.get("ResponseCode") == 0:
deal_id = resp["TranzactionId"]
else:
log_error(f"Cardcom error {resp.get('ResponseCode')}: {resp.get('Description')}")Always check both the HTTP status (200 means the request was received) AND (0 means the operation succeeded). The official docs at carry the full numeric error reference; do not hardcode error-code-to-message mappings, read instead. See for the handling pattern.
ResponseCodehttps://secure.cardcom.solutions/Api/v11/DocsDescriptionreferences/api-responses.md每个V11端点都会返回整数和字符串。表示成功;任何非零值都是开发/交易错误,包含人类可读的错误原因。
ResponseCodeDescriptionResponseCode == 0Descriptionpython
import requests
resp = requests.post(
"https://secure.cardcom.solutions/api/v11/Transactions/Transaction",
json=payload,
).json()
if resp.get("ResponseCode") == 0:
deal_id = resp["TranzactionId"]
else:
log_error(f"Cardcom error {resp.get('ResponseCode')}: {resp.get('Description')}")始终同时检查HTTP状态码(200表示请求已接收)和(0表示操作成功)。上的官方文档包含完整的错误代码参考;请勿硬编码错误代码与消息的映射关系,直接读取即可。错误处理模式请参考。
ResponseCodehttps://secure.cardcom.solutions/Api/v11/DocsDescriptionreferences/api-responses.mdExamples
示例
Example 1: E-commerce Checkout with Invoice
示例1:带发票的电商结账
User says: "I need to accept payments on my Israeli e-commerce site and generate tax invoices automatically"
Actions:
- Choose Low Profile with .
DocumentTypeToCreate: "TaxInvoiceAndReceipt" - Create the Low Profile page via with product details in the
LowProfile/Createobject.Document - Implement a handler that calls
WebHookUrl. Result: Customer pays and receives an automatic hashbonit mas/kabala emailed as a PDF.LowProfile/GetLpResult
用户需求:"我需要在以色列电商网站上接收付款,并自动生成税务发票"
操作步骤:
- 选择Low Profile模式,设置。
DocumentTypeToCreate: "TaxInvoiceAndReceipt" - 通过创建Low Profile页面,在
LowProfile/Create对象中包含产品详情。Document - 实现处理程序,调用
WebHookUrl。 结果:客户完成付款后,会自动收到以PDF形式发送的hashbonit mas/kabala邮件。LowProfile/GetLpResult
Example 2: Monthly SaaS Subscription
示例2:SaaS月度订阅
User says: "I run a SaaS product, I need to charge users 149 NIS monthly and send them invoices"
Actions:
- First payment: with
LowProfile/Create.Operation: "ChargeAndCreateToken" - Store the ,
Token,CardMonthfromCardYear.TokenInfo - Monthly cron: with the token and a
Transactions/Transactionobject for each billing cycle. Result: Automated recurring billing with monthly invoice generation.Document
用户需求:"我运营一个SaaS产品,需要每月向用户收取149新谢克尔并发送发票"
操作步骤:
- 首次支付:调用并设置
LowProfile/Create。Operation: "ChargeAndCreateToken" - 存储中的
TokenInfo、Token、CardMonth。CardYear - 每月定时任务:调用,使用令牌并为每个计费周期添加
Transactions/Transaction对象。 结果:自动定期扣费并生成月度发票。Document
Example 3: Standalone Invoice Without Payment
示例3:无支付的独立发票
User says: "I need to generate a tax invoice for a bank transfer payment I already received"
Actions:
- Use (no payment processing).
Documents/CreateDocument - Set .
DocumentTypeToCreate: "TaxInvoice" - Include ,
Name,TaxId, setProducts[]with the customer email. Result: Tax invoice generated and emailed without credit card processing.IsSendByEmail: true
用户需求:"我需要为已收到的银行转账付款生成税务发票"
操作步骤:
- 使用(无需支付处理)。
Documents/CreateDocument - 设置。
DocumentTypeToCreate: "TaxInvoice" - 包含、
Name、TaxId,设置Products[]并填写客户邮箱。 结果:生成税务发票并发送邮件,无需信用卡处理。IsSendByEmail: true
Example 4: Process a Refund with Credit Note
示例4:处理退款并开具信用凭证
User says: "Customer wants a refund for order #5678, need to issue a credit note too"
Actions:
- Call with
Transactions/RefundByTransactionIdandTransactionId.ApiPassword - Check and read
ResponseCode == 0.NewTranzactionId - Call with
Documents/CreateDocument. Result: Refund processed and the matching credit document generated.DocumentTypeToCreate: "TaxInvoiceAndReceiptRefund"
用户需求:"客户想要为订单#5678退款,还需要开具信用凭证"
操作步骤:
- 调用,传入
Transactions/RefundByTransactionId和TransactionId。ApiPassword - 检查并读取
ResponseCode == 0。NewTranzactionId - 调用并设置
Documents/CreateDocument。 结果:完成退款并生成对应的信用凭证。DocumentTypeToCreate: "TaxInvoiceAndReceiptRefund"
Example 5: Accept Bit, Apple Pay, and Google Pay
示例5:支持Bit、Apple Pay和Google Pay
User says: "I want to let customers pay with Bit, Apple Pay, and Google Pay in addition to credit cards"
Actions:
- Enable each method (Bit, Apple Pay, Google Pay) on your Cardcom terminal via the dashboard.
- Create a Low Profile session as usual via .
LowProfile/Create - Display from the response alongside the card form. Apple Pay and Google Pay surface as wallet buttons inside the Low Profile page itself, no extra URL needed. Result: Customers can choose between credit card, Bit, Apple Pay, and Google Pay, same webhook flow.
UrlToBit
用户需求:"我希望让客户除了信用卡外,还可以使用Bit、Apple Pay和Google Pay付款"
操作步骤:
- 通过仪表板在Cardcom终端上启用每种支付方式(Bit、Apple Pay、Google Pay)。
- 如常通过创建Low Profile会话。
LowProfile/Create - 在卡片表单旁显示响应中的。Apple Pay和Google Pay会直接在Low Profile页面内显示为钱包按钮,无需额外URL。 结果:客户可以选择信用卡、Bit、Apple Pay或Google Pay付款,使用相同的webhook流程。
UrlToBit
Community Libraries
社区库
- @tsdiapi/cardcom (TypeScript/Node.js) -- V11 API client with payments, refunds, tokenization, transaction queries. Install:
npm install @tsdiapi/cardcom - CardCom/OpenFields-FrontEnd-React (React) -- official OpenFields example. See
https://github.com/CardCom/OpenFields-FrontEnd-React - CardCom/OpenFields-Backend-Node (Node.js) -- official Node.js backend example. See
https://github.com/CardCom/OpenFields-Backend-Node
- @tsdiapi/cardcom(TypeScript/Node.js)-- V11 API客户端,支持支付、退款、令牌化、交易查询。安装命令:
npm install @tsdiapi/cardcom - CardCom/OpenFields-FrontEnd-React(React)-- 官方OpenFields示例。查看地址:
https://github.com/CardCom/OpenFields-FrontEnd-React - CardCom/OpenFields-Backend-Node(Node.js)-- 官方Node.js后端示例。查看地址:
https://github.com/CardCom/OpenFields-Backend-Node
Reference Links
参考链接
| Resource | URL |
|---|---|
| V11 API documentation (OpenAPI reference) | |
| Cardcom support center | |
| OpenFields React example | |
| OpenFields Node.js example | |
| 资源 | URL |
|---|---|
| V11 API文档(OpenAPI参考) | |
| Cardcom支持中心 | |
| OpenFields React示例 | |
| OpenFields Node.js示例 | |
Bundled Resources
捆绑资源
References
参考资料
- -- Cardcom REST API V11 endpoint reference: LowProfile, Transactions, Documents, RecuringPayments, Financial, and CompanyOperations paths with their key request/response fields. Consult when building API integrations.
references/api-endpoints.md - -- the V11
references/api-responses.md+ResponseCoderesponse pattern, the per-operation response objects, and the recommended error-handling flow. Consult when debugging failed API calls.Description - -- the
references/document-types.mdstring enum, theDocumentTypeToCreateobject field list, and VAT handling per Israeli tax law. Consult when determining which document type to generate.Document
- -- Cardcom REST API V11端点参考:LowProfile、Transactions、Documents、RecuringPayments、Financial和CompanyOperations路径及其关键请求/响应字段。构建API集成时参考。
references/api-endpoints.md - -- V11的
references/api-responses.md+ResponseCode响应模式、各操作的响应对象,以及推荐的错误处理流程。调试失败的API调用时参考。Description - --
references/document-types.md字符串枚举、DocumentTypeToCreate对象字段列表,以及根据以色列税法处理增值税的说明。确定要生成的文档类型时参考。Document
Scripts
脚本
- -- Validates a Cardcom V11 API response: checks
scripts/validate_cardcom_response.py, surfacesResponseCode, and verifies expected fields for transaction, token, and document operations. OnlyDescription0 counts as success; 700/701 are rejected unless you passResponseCode, because they mean a J2/J5 card check passed and NO money moved. Run:--validation-onlypython scripts/validate_cardcom_response.py --help
- -- 验证Cardcom V11 API响应:检查
scripts/validate_cardcom_response.py、提取ResponseCode,并验证交易、令牌和文档操作的预期字段。只有Description为0才视为成功;除非传递ResponseCode,否则700/701会被拒绝,因为它们表示J2/J5卡片验证通过但未产生交易。运行命令:--validation-onlypython scripts/validate_cardcom_response.py --help
Gotchas
注意事项
- The V11 success check is , NOT
ResponseCode == 0.DealResponse == 0does not exist in V11; agents trained on older Cardcom examples invent it. Every V11 endpoint returnsDealResponseplus aResponseCodestring.Description - is a STRING enum (
DocumentTypeToCreate,"TaxInvoiceAndReceipt","TaxInvoice", ...), not an integer code. Integer document codes like"Receipt"or101belong to legacy400interfaces, not V11..aspx - The must be sent as an integer, not a string. Agents commonly wrap it in quotes.
TerminalNumber - is required on 19 of the 50 V11 endpoints that take a request body, not just refunds and documents. Company-wide reads and writes need it (
ApiPassword,ListTransactions,SpecialTransactions, allRefundByTransactionIdwrites, allDocuments/*reports, allFinancial/*); single-card charges do not. It is not even a property onTapTransactions/*orLowProfile/Create, so sending it there is wrong too. Agents routinely omit it onTransactionbecause older guidance described it as "refunds and documents only".ListTransactions - The reporting endpoints and
ListTransactionsdo NOT acceptSpecialTransactions, and both setTerminalNumber, so including it fails the call. Scope to a terminal withadditionalProperties: falseonLimitForTerminal. Their dates areListTransactionsstrings, andDDMMYYYYadditionally requiresListTransactionsplus aPagebetween 10 and 2000.Page_size - Watch the real V11 field spellings: /
ISOCoinID,ISOCoinId(notIsSendByEmail),SendByEmail(notTaxId). The language field is spelled differently depending on which document object you are in, and every one of these schemas rejects unknown properties, so getting it wrong fails the call outright:VAT_Number(standaloneDocument) andCreateDocument(DocumentTran) use the misspelledTransaction, whileLanguge, the document you attach toDocumentLP, uses the correctly spelledLowProfile/Create. ApplyingLanguageeverywhere breaks the Low Profile flow, which is the flow this skill recommends first.Languge - The current Israeli VAT rate is 18% (effective January 2025; the January 2026 budget proposal to raise it to 19% was rejected). Cardcom calculates VAT server-side, so document amounts are treated per the flag.
IsVatFree - PCI scope: hosted Low Profile keeps you in SAQ-A. Server-to-server with raw
Transaction/CardNumberlands in SAQ-D. The current standard is PCI DSS v4.0.1 (a limited revision published June 2024), and the 51 future-dated requirements became effective 31 March 2025, so all of them are now in force. Prefer Low Profile or tokens unless you have a real reason to touch raw card data.CVV2 - Settlement timing is configured on the terminal, not per request, and is not settable via the API. Cardcom publishes three cycles: monthly (transactions from the 1st through the day before month-end are credited on the 6th of the following month), weekly (Sunday through Friday, credited the Wednesday of the following week), and bi-monthly (the 1st to the 15th credited on the 2nd of the following month; the 16th through the day before month-end credited on the 8th). Still confirm the cycle actually configured on the merchant's terminal before promising a business a specific day.
- Apple Pay and Google Pay don't have separate URL fields like /
UrlToBit. They surface as wallet buttons inside the hosted Low Profile page once enabled on the terminal in the admin panel.UrlToPayPal
- V11的成功判断条件是,而非
ResponseCode == 0。DealResponse == 0在V11中不存在;基于旧版Cardcom示例训练的工具会错误地使用该字段。每个V11端点都会返回DealResponse和ResponseCode字符串。Description - 是STRING枚举(
DocumentTypeToCreate、"TaxInvoiceAndReceipt"、"TaxInvoice"等),而非整数代码。整数文档代码如"Receipt"或101属于旧版400接口,不适用于V11。.aspx - 必须以整数形式发送,而非字符串。工具通常会错误地将其用引号包裹。
TerminalNumber - 在50个接收请求体的V11端点中,有19个需要,而不仅仅是退款和文档操作。企业级的读取和写入操作需要该密码(
ApiPassword、ListTransactions、SpecialTransactions、所有RefundByTransactionId写入操作、所有Documents/*报表操作、所有Financial/*);单卡扣费操作不需要。TapTransactions/*或LowProfile/Create端点甚至没有该属性,因此在这些请求中发送该密码是错误的。工具通常会在Transaction请求中遗漏该密码,因为旧版指南称其仅用于“退款和文档操作”。ListTransactions - 报表端点和
ListTransactions不接受SpecialTransactions,且两者都设置了TerminalNumber,因此包含该字段会导致调用失败。在additionalProperties: false中使用ListTransactions将结果限定到单个终端。它们的日期格式为LimitForTerminal字符串,且DDMMYYYY还需要ListTransactions和10到2000之间的Page。Page_size - 注意V11的实际字段拼写:/
ISOCoinID、ISOCoinId(而非IsSendByEmail)、SendByEmail(而非TaxId)。语言字段的拼写取决于你使用的文档对象,所有这些架构都会拒绝未知属性,因此拼写错误会直接导致调用失败:VAT_Number(独立Document)和CreateDocument(DocumentTran)使用拼写错误的Transaction,而Languge(附加到DocumentLP的文档)使用正确拼写的LowProfile/Create。如果统一使用Language,会破坏本指南推荐的Low Profile流程。Languge - 当前以色列的增值税率为18%(2025年1月生效;2026年1月将税率提高到19%的预算提案已被否决)。Cardcom在服务器端计算增值税,因此文档金额会根据标志处理。
IsVatFree - PCI合规范围:托管的Low Profile使你处于SAQ-A合规级别。使用原始/
CardNumber的服务器到服务器CVV2会处于SAQ-D合规级别。当前的标准是PCI DSS v4.0.1(2024年6月发布的有限修订版),51项未来生效的要求已于2025年3月31日生效,因此所有要求目前均已实施。除非有充分理由需要处理原始卡片数据,否则优先选择Low Profile或令牌方式。Transaction - 结算时间在终端上配置,而非按请求设置,且无法通过API设置。Cardcom公布了三种结算周期:月度(当月1日至月末前一天的交易,次月6日到账)、每周(周日至周五的交易,次周三到账)、双月度(1日至15日的交易,次月2日到账;16日至月末前一天的交易,次月8日到账)。在向企业承诺具体到账日期前,仍需确认商户终端上实际配置的结算周期。
- Apple Pay和Google Pay没有像/
UrlToBit那样的单独URL字段。在管理面板中启用终端上的这些支付方式后,它们会直接在托管的Low Profile页面内显示为钱包按钮。UrlToPayPal
Troubleshooting
故障排除
Error: a non-zero ResponseCode
on LowProfile/Create
ResponseCodeLowProfile/Create错误:LowProfile/Create
返回非零ResponseCode
LowProfile/CreateResponseCodeCause: a validation or authentication problem with the request.
Solution: Read the string in the response, it names the exact issue. Verify is an integer and is correct. The full numeric error reference is at .
DescriptionTerminalNumberApiNamehttps://secure.cardcom.solutions/Api/v11/Docs原因:请求存在验证或认证问题。
解决方案:读取响应中的字符串,它会指明确切问题。验证是整数且正确。完整的错误代码参考请查看。
DescriptionTerminalNumberApiNamehttps://secure.cardcom.solutions/Api/v11/DocsError: "Low Profile page loads but payment fails"
错误:"Low Profile页面加载但支付失败"
Cause: often a or redirect URL issue.
Solution: Ensure , , and are publicly accessible HTTPS URLs. Localhost URLs do not work, use a tunnel (ngrok) for development.
WebHookUrlSuccessRedirectUrlFailedRedirectUrlWebHookUrl原因:通常是或重定向URL问题。
解决方案:确保、和是可公开访问的HTTPS URL。本地主机URL无法工作,开发时请使用隧道工具(如ngrok)。
WebHookUrlSuccessRedirectUrlFailedRedirectUrlWebHookUrlError: "Refund returns a non-zero ResponseCode
"
ResponseCode错误:"退款返回非零ResponseCode
"
ResponseCodeCause: missing, or the transaction is already deposited and you sent .
Solution: Include on every refund request. Use only before deposit; after deposit, send a real refund (omit or set it ).
ApiPasswordCancelOnly: trueApiPasswordCancelOnly: trueCancelOnlyfalse原因:缺少,或交易已到账但你发送了。
解决方案:在每个退款请求中包含。仅在交易到账前使用;交易到账后,请发送真实退款(省略或设置为)。
ApiPasswordCancelOnly: trueApiPasswordCancelOnly: trueCancelOnlyfalseError: "Invoice created but not emailed"
错误:"发票已创建但未发送邮件"
Cause: not set or email address missing.
Solution: Set and include a valid in the object. Check spam folders, Cardcom sends from its own domain.
IsSendByEmailIsSendByEmail: trueEmailDocument原因:未设置或缺少邮箱地址。
解决方案:设置并在对象中包含有效的。检查垃圾邮件文件夹,Cardcom从其自有域名发送邮件。
IsSendByEmailIsSendByEmail: trueDocumentEmailError: "Token charge succeeds but no invoice"
错误:"令牌扣费成功但未生成发票"
Cause: object missing from the request.
Solution: Include the full object with , , and in every token charge. Document generation is opt-in per transaction.
DocumentTransactionDocumentDocumentTypeToCreateNameProducts原因:请求中缺少对象。
解决方案:在每个令牌扣费请求中包含完整的对象,包括、和。文档生成是按交易可选的功能。
TransactionDocumentDocumentDocumentTypeToCreateNameProducts