
Israeli Payment Orchestrator
- 62 installs
- 29 repo stars
- Updated August 3, 2026
- skills-il/tax-and-finance
Israeli Payment Orchestrator is an agent skill that encodes Israeli card gateway credit-type and installment rules for correct payment API payloads.
About
Israeli Payment Orchestrator is an agent skill for solo builders shipping checkout in Israel who must map Shva and acquirer-specific credit types, installment products, and gateway payloads correctly. It consolidates Hebrew-labeled credit semantics—immediate charge, Isracredit, merchant-financed installments, and interest-bearing credit—so you do not ship wrong `cred_type` values that fail certification or confuse reconciliation. Use it while integrating Tranzila-class APIs, ActiveMerchant adapters, or custom orchestration layers for SaaS and e-commerce. The skill is reference-heavy with sourced claim snippets, making it suitable for agent-assisted implementation and code review of payment flows before you hand off to accountants or PCI-aware deploy steps.
- Documents Shva CreditType (סוג אשראי) codes 1–9 including credit (6) vs Isracredit (2) and club installments (9)
- Separates regular installments (תשלומים), credit installments (קרדיט), and club (מועדון) merchant vs bank interest model
- Grounds claims in gateway matrix references for Israeli orchestration and Tranzila-style parameters
- Helps agents pick correct cred_type and installment caps (often up to 36 payments) per gateway rules
Israeli Payment Orchestrator by the numbers
- 62 all-time installs (skills.sh)
- Ranked #3,145 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/skills-il/tax-and-finance --skill israeli-payment-orchestratorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 62 |
|---|---|
| repo stars | ★ 29 |
| Security audit | 2 / 3 scanners passed |
| Last updated | August 3, 2026 |
| Repository | skills-il/tax-and-finance ↗ |
What it does
Implement Israeli card acquiring, installment semantics, and gateway-specific fields without mixing Shva CreditType codes or installment programs.
Who is it for?
Best when you're building Israeli B2C checkout, billing portals, or marketplace payouts that must speak local acquirer dialects.
Skip if: US/EU-only Stripe-only stacks with no Israeli acquirer, or pure tax filing without payment capture.
When should I use this skill?
Implementing or reviewing Israeli payment capture, installments, or gateway-specific credit type fields.
What you get
After the skill runs, orchestration code and agent-generated handlers use the right Shva-style codes, installment modes, and gateway matrix fields for Israeli checkout.
- Correct cred_type and installment mapping in orchestration code
- Gateway matrix-aligned parameter checklist for Israeli checkout
By the numbers
- Shva CreditType enum distinguishes codes 1, 2, 3, 4, 5, 6, 8, and 9 for Israeli credit products
- Maximum installments typically 36 on referenced Israeli gateway patterns
Files
Israeli Payment Orchestrator
Instructions
Step 1: Assess Payment Requirements
Ask the user about their payment needs:
| Requirement | Hebrew | Description | Impact on Gateway Choice |
|---|---|---|---|
| Installments (tashlumim) | תשלומים | Split payment into monthly installments | Not all gateways support all installment types |
| Recurring billing | חיוב חוזר | Subscription / standing order | Requires token storage and Shva approval |
| Multi-currency | רב-מטבעי | Accept NIS + foreign currencies | Limited gateway support for dual currency |
| Iframe / redirect | דף סליקה | Hosted payment page vs embedded | Affects PCI scope |
| Bit / Apple Pay | ביט / אפל פיי | Alternative payment methods | Gateway-specific integrations |
| High volume | נפח גבוה | Over 1,000 transactions/day | Need SLA guarantees and fallback |
Step 2: Compare Gateways
Use scripts/compare_gateways.py to generate a comparison matrix, or reference the table below:
| Gateway | API Style | Installments | Recurring | Hosted Page | Bit Support | Typical Fee |
|---|---|---|---|---|---|---|
| Cardcom | REST JSON | Full (regular, credit, club) | Yes | Yes (iframe) | No | 0.6-0.8% |
| Tranzila | REST/Form POST | Regular, credit | Yes | Yes (redirect) | No | 0.5-0.7% |
| PayMe | REST JSON | Regular, credit | Yes | Yes (iframe) | Yes | 0.7-1.0% |
| Meshulam | multipart/form-data | Regular | Yes | Yes (iframe + redirect) | Yes | 0.6-0.9% |
| iCredit | REST JSON | Regular, credit | Yes | Yes (redirect) | No | 0.5-0.8% |
| Pelecard | REST JSON | Regular, credit, club | Yes | Yes (iframe) | No | 0.5-0.7% |
Fee notes: Rates are indicative. Actual rates depend on business volume, industry, and negotiation.
Step 3: Design the Orchestration Layer
Build a unified payment abstraction:
# Unified payment interface pattern
class PaymentRequest:
amount: float # סכום - in agorot (NIS cents)
currency: str # מטבע - "ILS" default
installments: int # תשלומים - 1 = regular, 2-36 = installments
installment_type: str # סוג תשלומים - "regular", "credit", "club"
card_token: str # טוקן כרטיס - for recurring
description: str # תיאור עסקה
customer_id: str # מזהה לקוח
idempotency_key: str # מפתח אידמפוטנטי - prevent duplicates
class PaymentResult:
success: bool
gateway_used: str # שער תשלום שנבחר
transaction_id: str # מזהה עסקה
approval_number: str # מספר אישור
shva_reference: str # מספר שב"א
installment_details: dictStep 4: Implement Gateway Routing
Define routing rules for selecting the optimal gateway:
| Rule | Priority | Logic | Example |
|---|---|---|---|
| Cost optimization | Medium | Route to cheapest gateway for transaction type | Small payments to lowest-fee gateway |
| Feature match | High | Route based on required features | Club installments only to Cardcom/Pelecard |
| Availability | Critical | Route away from failed/degraded gateways | If Tranzila is down, failover to Cardcom |
| Volume balancing | Low | Distribute load across gateways | 60/40 split between primary and secondary |
| Card type | High | Some gateways handle specific cards better | Diners Club routing |
Routing logic:
def select_gateway(request: PaymentRequest, gateways: list) -> str:
# 1. Filter by feature support (tashlumim type, Bit, etc.)
eligible = [g for g in gateways if g.supports(request)]
# 2. Remove unhealthy gateways
healthy = [g for g in eligible if g.is_healthy()]
# 3. Sort by cost for this transaction type
ranked = sorted(healthy, key=lambda g: g.fee_for(request))
# 4. Return best match (or raise if none available)
return ranked[0] if ranked else raise NoGatewayAvailable()Step 5: Handle Installments (Tashlumim)
Israeli installment types have specific Shva network rules. The numbers below are the Shva CreditType (סוג אשראי) values, a field distinct from the transaction type (סוג עסקה). The canonical CreditType enum is: 1=regular/immediate, 2=Isracredit/30+, 3=immediate debit, 4=club credit, 5=Leumi special, 6=credit (קרדיט), 8=installments (תשלומים), 9=club installments.
| Type | Hebrew | CreditType | How It Works | Who Pays Interest |
|---|---|---|---|---|
| Regular installments | תשלומים רגילים | 8 | Merchant gets full amount upfront, bank collects from customer monthly | Customer (no interest by default) |
| Credit installments | קרדיט | 6 | Customer pays bank in installments with interest, merchant gets full amount | Customer pays interest to bank |
| Club installments | מועדון | 9 | Issuer-specific program (Isracard, CAL, Max); club credit is 4 | Varies by program |
| "Payments without interest" | תשלומים ללא ריבית | 8 | Merchant subsidizes interest cost | Merchant absorbs cost |
Implementation notes:
- Maximum installments: typically 36, some gateways limit to 12 or 24
- Minimum per-installment: Shva may enforce minimum amounts per installment
- Installment approval: some installment counts require issuer pre-approval
Step 6: Implement Fallback and Retry Logic
Design resilient payment processing:
# Fallback strategy
GATEWAY_PRIORITY = ["cardcom", "tranzila", "payme"]
async def process_with_fallback(request: PaymentRequest) -> PaymentResult:
last_error = None
for gateway_name in GATEWAY_PRIORITY:
gateway = get_gateway(gateway_name)
if not gateway.is_healthy():
continue # דלג על שער לא זמין
try:
result = await gateway.charge(request)
if result.success:
return result
# Declined by bank -- do NOT retry with another gateway
if result.is_bank_decline():
return result
except GatewayTimeoutError:
last_error = f"{gateway_name} timeout"
continue # נסה שער הבא
except GatewayError as e:
last_error = str(e)
continue
raise AllGatewaysFailedError(last_error)Important: Never retry a bank decline (customer insufficient funds, stolen card, etc.) with a different gateway. Only retry on gateway technical errors.
Step 7: Ensure Regulatory Compliance
Comply with Bank of Israel and Shva regulations:
| Regulation | Hebrew | Requirement | Impact |
|---|---|---|---|
| Transaction data retention | שמירת נתוני עסקאות | Transaction data retention, reporting | Store all transaction details 7 years |
| PCI DSS | תקן PCI | Card data security | Use tokenization, never store full card numbers |
| Shva regulations | תקנות שב"א | Clearing and settlement rules | Adhere to clearing windows and dispute timelines |
| Consumer Protection | הגנת הצרכן | Refund rights, clear pricing | Display installment terms clearly |
| Anti-fraud | מניעת הונאה | 3D Secure, velocity checks | Implement 3DS2 for CNP transactions |
Examples
Example 1: Multi-Gateway Setup
User says: "I need to accept payments with installments, with fallback if one gateway goes down" Actions: 1. Assess: Need installments (regular + credit) and high availability 2. Compare: Cardcom (primary, full installment support) + Tranzila (fallback) 3. Design: Unified PaymentRequest with installment_type field 4. Implement: Route installment payments to Cardcom, failover to Tranzila 5. Run python scripts/compare_gateways.py --features installments,recurring Result: Orchestration layer with primary/fallback routing and installment handling
Example 2: Gateway Migration
User says: "We use Tranzila but want to add PayMe for Bit payments" Actions: 1. Assess: Current Tranzila setup + need Bit support 2. Design: Add PayMe as secondary gateway for Bit-eligible transactions 3. Route: Bit payments to PayMe, card payments to Tranzila 4. Implement: Unified response mapping between both gateway formats Result: Dual-gateway setup with feature-based routing
Example 3: Cost Optimization
User says: "Which gateway is cheapest for our 500 daily transactions averaging 200 NIS?" Actions: 1. Calculate: Monthly volume = 500 30 200 = 3,000,000 NIS 2. Compare: Run python scripts/compare_gateways.py --volume 500 --avg-amount 200 3. Factor: Installment mix, chargeback rates, settlement timing 4. Recommend: Based on total cost of ownership including integration effort Result: Cost comparison with recommendation based on business profile
Example 4: Installment Configuration
User says: "Customer wants to pay 5,000 NIS in 10 interest-free installments" Actions: 1. Identify: Regular installments (tashlumim regilim), 10 payments of 500 NIS 2. Check: Gateway support for 10 installments (all major gateways support this) 3. Note: Merchant absorbs interest cost for "interest-free" installments 4. Calculate: Merchant cost = typically 1-3% of transaction for interest subsidy 5. Implement: Set installments=10, installment_type="regular" in PaymentRequest Result: Installment payment configured with cost breakdown for merchant
Bundled Resources
Scripts
scripts/compare_gateways.py-- Generates comparison matrix of Israeli payment gateways based on features, fees, and volume. Run:python scripts/compare_gateways.py --help
References
references/gateway-matrix.md-- Detailed feature comparison of Israeli payment gateways: API formats, installment support, recurring billing, hosted pages, settlement timelines, and fee structures. Consult when evaluating or switching gateways.
Reference Links
| Source | URL | What to Check |
|---|---|---|
| Cardcom | https://www.cardcom.co.il/ | Current API surface, pricing, supported card types |
| Tranzila Documentation | https://docs.tranzila.com/ | Form-encoded API parameters, supplier code (terminalname) flows |
| PayMe Developer Docs | https://www.payme.io/developers | Bearer-token REST JSON API, Bit/Apple Pay support |
| Meshulam (Grow) Reference | https://grow-il.readme.io/reference/overview | Production base = secure.meshulam.co.il (do NOT use sandbox.meshulam.co.il in prod) |
| iCredit | https://icredit.rivhit.co.il/ | Group private token + credentials auth scheme |
| Bank of Israel: Payment Systems Oversight | https://www.boi.org.il/en/economic-roles/supervision-and-regulation/payment-systems-oversight/ | BOI oversight of Shva and controlled payment systems (banks + credit-card companies). Non-bank payment-service providers are regulated by the ISA under the Regulation of Payment Services and Payment Initiation Law 5783-2023 |
Gotchas
- Each Israeli payment gateway in this skill (Cardcom, Tranzila, PayMe, Meshulam, iCredit, Pelecard) has a completely different API format: Cardcom uses JSON, Tranzila uses form-encoded key-value pairs, Meshulam uses multipart/form-data with a separate page-code parameter, and PayMe uses bearer-token JSON. Agents may apply one gateway's format to another.
- Israeli payment processing requires Israeli business registration (osek murshe/patur). Agents may suggest setting up payment processing before verifying the business has proper registration with the Tax Authority.
- PCI DSS compliance requirements in Israel follow the same international standard, but Israeli acquirers (Isracard, Visa CAL) may have additional local requirements. Agents may generate PCI-compliant code that misses Israeli acquirer-specific fields.
- Bit (Israel's dominant mobile payment) refunds use a different API endpoint than credit card refunds on most gateways. Agents may use the credit card refund endpoint for Bit transactions.
Troubleshooting
Error: "Installment type not supported"
Cause: Requested installment type (credit/club) not available on selected gateway Solution: Check gateway capabilities in Step 2 table. Club installments only available on Cardcom and Pelecard. Route to appropriate gateway.
Error: "Shva clearing rejected"
Cause: Transaction violates Shva network rules (invalid installment count, amount below minimum) Solution: Verify installment count is within allowed range. Check minimum per-installment amount. Ensure transaction currency is ILS for domestic cards.
Error: "Gateway timeout on fallback"
Cause: All configured gateways are experiencing issues Solution: Implement circuit breaker pattern with health checks. Consider adding a third gateway. Monitor gateway status endpoints and alert on degradation.
Error: "Duplicate transaction detected"
Cause: Retry logic sent same payment to multiple gateways Solution: Always use idempotency keys. Check transaction status before retrying. Never retry bank declines -- only retry gateway technical errors.
{
"schemaVersion": "1.0",
"skill": "israeli-payment-orchestrator",
"generated_at": "2026-06-07T00:00:00Z",
"claims": [
{
"claim_id": "shva-credittype-codes",
"claim": "Shva CreditType (סוג אשראי) enum, a field distinct from transaction type (סוג עסקה): 1=regular/immediate, 2=Isracredit/30+, 3=immediate debit, 4=club credit, 5=Leumi special, 6=credit installments (קרדיט, interest to bank), 8=regular installments (תשלומים, merchant-financed), 9=club installments (מועדון). Interest-free installments use CreditType 8 (merchant subsidizes). Credit (קרדיט) is 6, NOT 2; club installments are 9, NOT 3.",
"source_url": "https://github.com/astrails/active_merchant_tranzila",
"raw_snippet": "cred_type: 1 Regular, 2 Isracredit/30+, 3 Immediate debit, 4 Club Credit, 5 Leumi special, 6 Credit (קרדיט), 8 Installments (תשלומים), 9 Club installments (מועדון).",
"fetched_at": "2026-06-07T00:00:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md", "references/gateway-matrix.md"]
},
{
"claim_id": "installment-types",
"claim": "Installment type semantics: regular installments (תשלומים) - merchant gets the full amount upfront, the bank collects from the customer monthly, no interest by default; credit installments (קרדיט) - the customer pays the bank in installments with interest, merchant gets full amount; club installments (מועדון) - issuer-specific program (Isracard, CAL, Max). Maximum installments typically 36 (some gateways cap at 12 or 24); Shva may enforce a minimum per-installment amount.",
"source_url": "https://docs.tranzila.com/",
"raw_snippet": "תשלומים רגילים: בית העסק מקבל את מלוא הסכום, הבנק גובה מהלקוח חודשית ללא ריבית; קרדיט: הלקוח משלם לבנק עם ריבית; מועדון: תוכנית מנפיק. עד 36 תשלומים (חלק מהשערים עד 12/24).",
"fetched_at": "2026-06-07T00:00:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md", "references/gateway-matrix.md"]
},
{
"claim_id": "gateway-api-styles",
"claim": "Gateway API styles: Cardcom REST JSON; Tranzila REST / form-POST (form-encoded key-value); PayMe bearer-token REST JSON; Meshulam/Grow multipart/form-data (NOT JSON), server-side only, Light API at secure.meshulam.co.il/api/light/server/1.0/; iCredit REST JSON; Pelecard REST JSON. Bit support by default: PayMe yes, Meshulam yes, others no. Fee ranges (0.5-1.0%) are indicative and negotiation-dependent.",
"source_url": "https://grow-il.readme.io/reference/overview",
"raw_snippet": "Grow (Meshulam) Light API requires multipart/form-data, not JSON, server-side only; Cardcom uses JSON; Tranzila uses form-encoded params; PayMe uses bearer-token JSON.",
"fetched_at": "2026-06-07T00:00:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md", "references/gateway-matrix.md", "scripts/compare_gateways.py"]
},
{
"claim_id": "regulation",
"claim": "Israeli payment-services regulation: the Regulation of Payment Services and Payment Initiation Law 5783-2023 makes the Israel Securities Authority (ISA) the primary regulator of non-bank payment service providers; the Bank of Israel supervises banks and credit-card companies and oversees Shva as a controlled payment system. Shva (שב\"א, Automatic Bank Services) still operates the credit-card clearing network. Transaction data retention 7 years; PCI DSS tokenization (never store full PANs); 3DS2 for card-not-present transactions.",
"source_url": "https://www.boi.org.il/en/economic-roles/supervision-and-regulation/payment-systems-oversight/",
"raw_snippet": "חוק הסדרת העיסוק בשירותי תשלום ויוזמה בתשלום, התשפ\"ג-2023: רשות ניירות ערך מפקחת על נותני שירותי תשלום שאינם בנק; בנק ישראל מפקח על הבנקים וחברות כרטיסי האשראי ומפקח על שב\"א.",
"fetched_at": "2026-06-07T00:00:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md"]
},
{
"claim_id": "reference-urls-and-figures",
"claim": "Reference URLs for the gateways and the BOI oversight page, plus illustrative figures (idempotency, agorot amounts, 60/40 volume split, 3,000,000 NIS example volume, 5,000 NIS / 500 NIS / 200 NIS example amounts, 1-3% interest-subsidy estimate, 1,000 transactions/day, T+2/T+3 settlement). These figures are illustrative or indicative.",
"source_url": "https://www.boi.org.il/en/economic-roles/supervision-and-regulation/payment-systems-oversight/",
"raw_snippet": "URLs: https://www.cardcom.co.il/ https://docs.tranzila.com/ https://www.payme.io/developers https://grow-il.readme.io/reference/overview https://icredit.rivhit.co.il/ https://www.boi.org.il/en/economic-roles/supervision-and-regulation/payment-systems-oversight/ https://www.boi.org.il/he/economic-roles/supervision-and-regulation/payment-systems-oversight/ . Gateway base URLs (gateway-matrix): https://secure.cardcom.solutions/api/ https://kb.cardcom.co.il/ https://secure5.tranzila.com/ https://ng.paymeservice.com/api/ https://secure.meshulam.co.il/api/light/server/1.0/ https://sandbox.meshulam.co.il/api/light/server/1.0/ https://icredit.rivhit.co.il/api/ https://gateway20.pelecard.biz/ https://www.pelecard.com/support/ . Indicative fee percentages: 0.5%, 0.6%, 0.7%, 0.8%, 0.9%, 1.0%. Illustrative amounts: 60/40 split, 3,000,000 NIS, 3,000,000 ש\"ח, 5,000 NIS, 5,000 ש\"ח, 500 NIS, 500 ש\"ח, 200 NIS, 200 ש\"ח, 1-3%, 1,000 transactions/day, T+2/T+3.",
"fetched_at": "2026-06-07T00:00:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md", "references/gateway-matrix.md", "scripts/compare_gateways.py"]
}
]
}
{
"author": "skills-il",
"version": "1.1.1",
"category": "tax-and-finance",
"tags": {
"he": [
"תשלומים",
"סליקה",
"שב\"א",
"כרטיסי-אשראי",
"תשלומים-נדחים",
"ישראל"
],
"en": [
"payments",
"gateway",
"shva",
"credit-cards",
"installments",
"israel"
]
},
"display_name": {
"he": "תזמור תשלומים ישראלי",
"en": "Israeli Payment Orchestrator"
},
"display_description": {
"he": "תזמור שערי תשלום ישראליים (Cardcom, Tranzila, PayMe, Meshulam, iCredit, Pelecard) עם ניתוב אחיד, fallback ותשלומים. כולל השוואת שערים, טיפול בתשלומים ועמידה בהנחיות בנק ישראל.",
"en": "Orchestrate Israeli payment gateways (Cardcom, Tranzila, PayMe, Meshulam, iCredit, Pelecard) with unified routing, fallback, and installments (tashlumim). Use when user asks about multi-gateway payment integration, \"slikat kartisim\", \"tashlumim\", payment routing, Shva network, BOI payment-services regulation, gateway comparison, or building a payment abstraction layer for Israeli merchants. Provides unified API patterns, installment handling, Shva clearing rules, and regulatory compliance. Do NOT use for single gateway setup (use cardcom-payment-gateway or tranzila-payment-gateway instead)."
},
"supported_agents": [
"claude-code",
"cursor",
"github-copilot",
"windsurf",
"opencode",
"codex",
"antigravity",
"gemini-cli"
]
}{
"cycles": [
{
"version": "1.1.1",
"date": "2026-06-07",
"lessons": [
"CRITICAL: the Shva CreditType (סוג אשראי) codes were wrong and transaction-breaking. Skill had credit (קרדיט)=2 and club (מועדון)=3; correct is credit=6 and club installments=9 (club credit=4). Regular installments (תשלומים)=8 was correct. Fixed Step 5 in SKILL.md + SKILL_HE.md and the gateway-matrix Shva codes table, and clarified that CreditType is a distinct field from transaction type (סוג עסקה).",
"MAJOR: Meshulam/Grow API style was listed as REST JSON in three places (SKILL.md + SKILL_HE.md Step 2 tables, gateway-matrix, compare_gateways.py) while the Gotcha correctly said multipart/form-data; fixed all to multipart/form-data and corrected the Meshulam base path + docs URL (grow-il.readme.io).",
"Fixed the dead BOI reference link (boi.org.il/en/banking/payment-systems 404) to the payment-systems-oversight path, and sharpened the regulator framing: non-bank PSPs are regulated by the ISA under the Regulation of Payment Services and Payment Initiation Law 5783-2023; the BOI supervises banks/credit-card cos and oversees Shva.",
"Built evidence.json from scratch (legacy skill); stripped 3 em-dashes from SKILL_HE.md.",
"Deferred MINOR: the 'club installments only on Cardcom/Pelecard' claim likely understates Tranzila (which supports cred_type 9); gateway capability tables are terminal-config-dependent, revisit if a capability refresh is done."
]
}
]
}
Domain Checklist: israeli-payment-orchestrator
Scope: design a multi-gateway payment abstraction for Israeli merchants (routing, fallback, installments, compliance). Category: tax-and-finance (payments/architecture).
Must cover (core)
- The 6 gateways with CORRECT API styles (Cardcom JSON, Tranzila form-POST, PayMe bearer JSON, Meshulam/Grow multipart/form-data, iCredit, Pelecard) and a hedged fee/feature matrix.
- Unified PaymentRequest/Result abstraction; idempotency keys.
- Gateway routing (feature-match, cost, availability/failover) and the never-retry-a-bank-decline rule.
- Installments with CORRECT Shva CreditType codes: regular installments (תשלומים)=8, credit (קרדיט)=6, club installments (מועדון)=9, club credit=4; CreditType is distinct from transaction type (סוג עסקה). Max ~36 (some gateways 12/24).
- Regulatory compliance: ISA regulates non-bank PSPs (Regulation of Payment Services Law 2023); BOI supervises banks/credit-card cos and oversees Shva; 7-year data retention; PCI DSS tokenization; 3DS2 for CNP.
Should cover (advanced)
- Settlement timelines, refund (Bit refund uses a different endpoint), circuit-breaker/health checks, volume balancing.
Out of scope (explicit)
- Single-gateway setup (cardcom-payment-gateway / tranzila-payment-gateway / grow-payment-gateway).
Authoritative sources
- Shva (שב"א) credit-type enum; gateway docs (Cardcom, Tranzila, PayMe, grow-il.readme.io, iCredit, Pelecard).
- boi.org.il payment-systems-oversight; Regulation of Payment Services and Payment Initiation Law 5783-2023 (ISA).
Israeli Payment Gateway Comparison Matrix
API Integration Details
Cardcom
- Base URL:
https://secure.cardcom.solutions/api/ - Auth: API name + API password (per terminal)
- Format: REST JSON
- Tokenization: Yes (card token for recurring)
- 3D Secure: Supported (3DS2)
- Webhook: POST callback on transaction completion
- Sandbox: Available with test credentials
- Documentation: https://kb.cardcom.co.il/
Tranzila
- Base URL:
https://secure5.tranzila.com/ - Auth: Terminal name + password
- Format: REST JSON (new) / Form POST (legacy)
- Tokenization: Yes (TranzilaTK)
- 3D Secure: Supported (3DS2)
- Webhook: IPN (Instant Payment Notification)
- Sandbox: Available with test terminal
- Documentation: https://docs.tranzila.com/
PayMe
- Base URL:
https://ng.paymeservice.com/api/ - Auth: Seller API key (bearer token)
- Format: REST JSON
- Tokenization: Yes (buyer key)
- 3D Secure: Supported (3DS2)
- Webhook: POST callback
- Sandbox: Available
- Documentation: https://www.payme.io/developers
Meshulam (Grow)
- Base URL:
https://secure.meshulam.co.il/api/light/server/1.0/(production);https://sandbox.meshulam.co.il/api/light/server/1.0/(sandbox) - Auth: userId + page code (apiKey for multi-business)
- Format: multipart/form-data (NOT JSON), server-side only
- Tokenization: Yes
- 3D Secure: Supported
- Webhook: POST callback
- Sandbox: Available
- Documentation: https://grow-il.readme.io/reference/overview
iCredit
- Base URL:
https://icredit.rivhit.co.il/api/ - Auth: Group private Token + credentials
- Format: REST JSON
- Tokenization: Yes
- 3D Secure: Supported
- Webhook: POST callback
- Sandbox: Available
- Documentation: https://icredit.rivhit.co.il/
Pelecard
- Base URL:
https://gateway20.pelecard.biz/ - Auth: Terminal number + user + password
- Format: REST JSON
- Tokenization: Yes
- 3D Secure: Supported (3DS2)
- Webhook: POST callback
- Sandbox: Available
- Documentation: https://www.pelecard.com/support/
Installment (Tashlumim) Support
| Gateway | Regular | Credit | Club | Max Installments | Min Amount |
|---|---|---|---|---|---|
| Cardcom | Yes | Yes | Yes | 36 | Per issuer |
| Tranzila | Yes | Yes | No | 24 | Per issuer |
| PayMe | Yes | Yes | No | 36 | Per issuer |
| Meshulam | Yes | No | No | 12 | Per issuer |
| iCredit | Yes | Yes | No | 24 | Per issuer |
| Pelecard | Yes | Yes | Yes | 36 | Per issuer |
Settlement Timing
| Gateway | Standard Settlement | Express Option | Currency |
|---|---|---|---|
| Cardcom | T+2 business days | Available (fee) | NIS |
| Tranzila | T+2 business days | Available (fee) | NIS |
| PayMe | T+2 business days | T+1 (fee) | NIS |
| Meshulam | T+3 business days | N/A | NIS |
| iCredit | T+2 business days | Available (fee) | NIS |
| Pelecard | T+2 business days | Available (fee) | NIS |
Shva CreditType (סוג אשראי) Reference
These are Shva CreditType values, a field distinct from the transaction type (סוג עסקה) and from gateway-level refund operations.
| CreditType | Type | Hebrew | Description |
|---|---|---|---|
| 1 | Regular / immediate | רגיל | Single immediate payment |
| 2 | Isracredit / 30+ | ישראקרדיט / 30+ | Issuer special-credit product |
| 3 | Immediate debit | חיוב מיידי | Debit cleared immediately |
| 4 | Club credit | קרדיט מועדון | Issuer club credit program |
| 5 | Leumi special | מיוחד לאומי | Leumi Card special |
| 6 | Credit installments | קרדיט | Bank-financed installments (interest to bank) |
| 8 | Regular installments | תשלומים | Merchant-financed installments |
| 9 | Club installments | תשלומי מועדון | Issuer club installment program |
Refunds are a gateway-level operation (often signalled separately, e.g. operation codes 51 full / 52 installment refund), not a CreditType value.
#!/usr/bin/env python3
"""Compare Israeli payment gateways based on features, fees, and volume.
Generates a comparison matrix to help choose the right payment gateway(s)
for Israeli merchants. Supports filtering by features and volume-based
cost estimation.
Usage:
python scripts/compare_gateways.py --features installments,recurring
python scripts/compare_gateways.py --volume 500 --avg-amount 200
python scripts/compare_gateways.py --all
python scripts/compare_gateways.py --example
"""
import sys
import json
import argparse
from dataclasses import dataclass, asdict, field
from typing import List, Optional
@dataclass
class GatewayInfo:
"""Israeli payment gateway information."""
name: str
hebrew_name: str
api_style: str
installment_types: List[str]
recurring: bool
hosted_page: str
bit_support: bool
apple_pay: bool
fee_range_pct: tuple # (min, max) percentage
settlement_days: int # typical settlement time
api_docs_url: str
notes: str
# שערי תשלום ישראליים - Israeli payment gateways database
GATEWAYS = {
"cardcom": GatewayInfo(
name="Cardcom",
hebrew_name="קארדקום",
api_style="REST JSON",
installment_types=["regular", "credit", "club"],
recurring=True,
hosted_page="iframe",
bit_support=False,
apple_pay=False,
fee_range_pct=(0.6, 0.8),
settlement_days=2,
api_docs_url="https://kb.cardcom.co.il/",
notes="Full installment support including club. Good documentation.",
),
"tranzila": GatewayInfo(
name="Tranzila",
hebrew_name="טרנזילה",
api_style="REST / Form POST",
installment_types=["regular", "credit"],
recurring=True,
hosted_page="redirect",
bit_support=False,
apple_pay=False,
fee_range_pct=(0.5, 0.7),
settlement_days=2,
api_docs_url="https://docs.tranzila.com/",
notes="Veteran provider. Lower fees. Form POST legacy API still common.",
),
"payme": GatewayInfo(
name="PayMe",
hebrew_name="פיימי",
api_style="REST JSON",
installment_types=["regular", "credit"],
recurring=True,
hosted_page="iframe",
bit_support=True,
apple_pay=True,
fee_range_pct=(0.7, 1.0),
settlement_days=2,
api_docs_url="https://www.payme.io/developers",
notes="Modern API. Bit and Apple Pay support. Higher fees.",
),
"meshulam": GatewayInfo(
name="Meshulam",
hebrew_name="משולם",
api_style="multipart/form-data",
installment_types=["regular"],
recurring=True,
hosted_page="iframe + redirect",
bit_support=True,
apple_pay=False,
fee_range_pct=(0.6, 0.9),
settlement_days=3,
api_docs_url="https://grow-il.readme.io/reference/overview",
notes="Popular with SMBs. Bit support. Limited installment types.",
),
"icredit": GatewayInfo(
name="iCredit",
hebrew_name="אייקרדיט",
api_style="REST JSON",
installment_types=["regular", "credit"],
recurring=True,
hosted_page="redirect",
bit_support=False,
apple_pay=False,
fee_range_pct=(0.5, 0.8),
settlement_days=2,
api_docs_url="https://icredit.rivhit.co.il/",
notes="Part of Rivhit (accounting software). Good for existing Rivhit users.",
),
"pelecard": GatewayInfo(
name="Pelecard",
hebrew_name="פלאכארד",
api_style="REST JSON",
installment_types=["regular", "credit", "club"],
recurring=True,
hosted_page="iframe",
bit_support=False,
apple_pay=False,
fee_range_pct=(0.5, 0.7),
settlement_days=2,
api_docs_url="https://www.pelecard.com/support/",
notes="Full installment support. Competitive pricing for high volume.",
),
}
def filter_by_features(gateways: dict, features: List[str]) -> dict:
"""Filter gateways by required features.
Args:
gateways: Dictionary of gateway name to GatewayInfo.
features: List of required features.
Returns:
Filtered dictionary of gateways that support all features.
"""
result = {}
for name, gw in gateways.items():
matches = True
for feature in features:
feature = feature.strip().lower()
if feature == "installments" and not gw.installment_types:
matches = False
elif feature == "credit" and "credit" not in gw.installment_types:
matches = False
elif feature == "club" and "club" not in gw.installment_types:
matches = False
elif feature == "recurring" and not gw.recurring:
matches = False
elif feature == "bit" and not gw.bit_support:
matches = False
elif feature == "apple_pay" and not gw.apple_pay:
matches = False
if matches:
result[name] = gw
return result
def estimate_monthly_cost(
gateway: GatewayInfo,
daily_volume: int,
avg_amount: float,
) -> dict:
"""Estimate monthly processing cost for a gateway.
Args:
gateway: Gateway information.
daily_volume: Average daily transaction count.
avg_amount: Average transaction amount in NIS.
Returns:
Dictionary with cost estimates.
"""
monthly_transactions = daily_volume * 30
monthly_volume_nis = monthly_transactions * avg_amount
min_fee = monthly_volume_nis * (gateway.fee_range_pct[0] / 100)
max_fee = monthly_volume_nis * (gateway.fee_range_pct[1] / 100)
avg_fee = (min_fee + max_fee) / 2
return {
"gateway": gateway.name,
"monthly_transactions": monthly_transactions,
"monthly_volume_nis": monthly_volume_nis,
"fee_range_pct": f"{gateway.fee_range_pct[0]}-{gateway.fee_range_pct[1]}%",
"monthly_fee_min_nis": round(min_fee, 0),
"monthly_fee_max_nis": round(max_fee, 0),
"monthly_fee_avg_nis": round(avg_fee, 0),
}
def print_comparison_table(gateways: dict) -> None:
"""Print gateway comparison as formatted table."""
print(f"\n{'Gateway':<12} {'API':<18} {'Installments':<25} {'Recurring':<10} "
f"{'Hosted':<18} {'Bit':<5} {'Fee':<10}")
print("-" * 100)
for name, gw in gateways.items():
inst = ", ".join(gw.installment_types) if gw.installment_types else "None"
fee = f"{gw.fee_range_pct[0]}-{gw.fee_range_pct[1]}%"
print(f"{gw.name:<12} {gw.api_style:<18} {inst:<25} "
f"{'Yes' if gw.recurring else 'No':<10} "
f"{gw.hosted_page:<18} {'Yes' if gw.bit_support else 'No':<5} {fee:<10}")
def print_cost_comparison(gateways: dict, daily_volume: int, avg_amount: float) -> None:
"""Print cost comparison for given volume."""
print(f"\nCost estimate for {daily_volume} daily transactions, "
f"avg {avg_amount:.0f} NIS:")
print(f"{'Gateway':<12} {'Monthly Volume':<18} {'Fee Range':<12} "
f"{'Min Cost':<12} {'Max Cost':<12} {'Avg Cost':<12}")
print("-" * 80)
costs = []
for name, gw in gateways.items():
cost = estimate_monthly_cost(gw, daily_volume, avg_amount)
costs.append(cost)
print(f"{cost['gateway']:<12} {cost['monthly_volume_nis']:>14,.0f} NIS "
f"{cost['fee_range_pct']:<12} "
f"{cost['monthly_fee_min_nis']:>8,.0f} NIS "
f"{cost['monthly_fee_max_nis']:>8,.0f} NIS "
f"{cost['monthly_fee_avg_nis']:>8,.0f} NIS")
# מציאת השער הזול ביותר
cheapest = min(costs, key=lambda c: c["monthly_fee_avg_nis"])
print(f"\nLowest average cost: {cheapest['gateway']} "
f"({cheapest['monthly_fee_avg_nis']:,.0f} NIS/month)")
def main():
"""Main entry point."""
parser = argparse.ArgumentParser(
description="Compare Israeli payment gateways "
"(השוואת שערי תשלום ישראליים)"
)
parser.add_argument(
"--features",
help="Required features, comma-separated: "
"installments, credit, club, recurring, bit, apple_pay"
)
parser.add_argument(
"--volume", type=int,
help="Average daily transaction count (מספר עסקאות יומי)"
)
parser.add_argument(
"--avg-amount", type=float, default=200,
help="Average transaction amount in NIS (סכום עסקה ממוצע, default: 200)"
)
parser.add_argument(
"--all", action="store_true",
help="Show all gateways comparison"
)
parser.add_argument(
"--json", action="store_true",
help="Output as JSON"
)
parser.add_argument(
"--example", action="store_true",
help="Show example comparison"
)
args = parser.parse_args()
if not any([args.features, args.volume, args.all, args.example]):
parser.print_help()
sys.exit(1)
gateways = GATEWAYS.copy()
if args.example:
print("=== All Gateways Comparison ===")
print_comparison_table(gateways)
print("\n=== Cost Estimate: 500 daily transactions, avg 200 NIS ===")
print_cost_comparison(gateways, 500, 200)
print("\n=== Gateways with Bit Support ===")
bit_gateways = filter_by_features(gateways, ["bit"])
print_comparison_table(bit_gateways)
return
# Filter by features if specified
if args.features:
features = args.features.split(",")
gateways = filter_by_features(gateways, features)
if not gateways:
print(f"No gateways match features: {args.features}")
sys.exit(1)
if args.json:
data = {name: asdict(gw) for name, gw in gateways.items()}
if args.volume:
for name, gw in gateways.items():
data[name]["cost_estimate"] = estimate_monthly_cost(
gw, args.volume, args.avg_amount
)
print(json.dumps(data, indent=2, ensure_ascii=False))
else:
print_comparison_table(gateways)
if args.volume:
print_cost_comparison(gateways, args.volume, args.avg_amount)
if __name__ == "__main__":
main()
תזמור תשלומים ישראלי
הוראות
שלב 1: הערכת דרישות תשלום
שאלו את המשתמש על צרכי התשלום שלו:
| דרישה | אנגלית | תיאור | השפעה על בחירת שער |
|---|---|---|---|
| תשלומים | Installments | פיצול תשלום לתשלומים חודשיים | לא כל השערים תומכים בכל סוגי התשלומים |
| חיוב חוזר | Recurring | מנוי / הוראת קבע | דורש אחסון טוקנים ואישור שב"א |
| רב-מטבעי | Multi-currency | קבלת ש"ח + מט"ח | תמיכה מוגבלת בשערים |
| דף סליקה | Iframe/redirect | דף תשלום מאוחסן מול מוטמע | משפיע על היקף PCI |
| ביט / אפל פיי | Bit/Apple Pay | אמצעי תשלום חלופיים | אינטגרציות ספציפיות לשער |
| נפח גבוה | High volume | מעל 1,000 עסקאות/יום | נדרשים SLA ו-fallback |
שלב 2: השוואת שערי תשלום
השתמשו ב-scripts/compare_gateways.py ליצירת מטריצת השוואה, או עיינו בטבלה:
| שער | סגנון API | תשלומים | חיוב חוזר | דף מאוחסן | תמיכת ביט | עמלה אופיינית |
|---|---|---|---|---|---|---|
| Cardcom | REST JSON | מלא (רגיל, קרדיט, מועדון) | כן | כן (iframe) | לא | 0.6-0.8% |
| Tranzila | REST/Form POST | רגיל, קרדיט | כן | כן (redirect) | לא | 0.5-0.7% |
| PayMe | REST JSON | רגיל, קרדיט | כן | כן (iframe) | כן | 0.7-1.0% |
| Meshulam | multipart/form-data | רגיל | כן | כן (iframe + redirect) | כן | 0.6-0.9% |
| iCredit | REST JSON | רגיל, קרדיט | כן | כן (redirect) | לא | 0.5-0.8% |
| Pelecard | REST JSON | רגיל, קרדיט, מועדון | כן | כן (iframe) | לא | 0.5-0.7% |
הערת עמלות: התעריפים אינדיקטיביים. עמלות בפועל תלויות בנפח, ענף ומשא ומתן.
שלב 3: עיצוב שכבת התזמור
בנו הפשטת תשלום אחידה:
# תבנית ממשק תשלום אחיד
class PaymentRequest:
amount: float # סכום - באגורות
currency: str # מטבע - "ILS" ברירת מחדל
installments: int # תשלומים - 1 = רגיל, 2-36 = תשלומים
installment_type: str # סוג תשלומים - "regular", "credit", "club"
card_token: str # טוקן כרטיס - לחיוב חוזר
description: str # תיאור עסקה
customer_id: str # מזהה לקוח
idempotency_key: str # מפתח אידמפוטנטי - למניעת כפילויות
class PaymentResult:
success: bool
gateway_used: str # תשלום גטווי שנבחר
transaction_id: str # מזהה עסקה
approval_number: str # מספר אישור
shva_reference: str # מספר שב"א
installment_details: dictשלב 4: מימוש ניתוב שערים
הגדירו כללי ניתוב לבחירת השער האופטימלי:
| כלל | עדיפות | לוגיקה | דוגמה |
|---|---|---|---|
| אופטימיזציית עלות | בינונית | נתב לשער הזול ביותר לסוג העסקה | תשלומים קטנים לשער בעמלה הנמוכה ביותר |
| התאמת פיצ'ר | גבוהה | נתב לפי פיצ'רים נדרשים | תשלומי מועדון רק ל-Cardcom/Pelecard |
| זמינות | קריטית | נתב הרחק משערים שנפלו | אם Tranzila למטה, failover ל-Cardcom |
| איזון נפח | נמוכה | פזר עומסים בין שערים | פיצול 60/40 בין ראשי ומשני |
| סוג כרטיס | גבוהה | שערים מסוימים מטפלים טוב יותר בכרטיסים ספציפיים | ניתוב דיינרס |
שלב 5: טיפול בתשלומים
לסוגי תשלומים ישראליים כללים ספציפיים ברשת שב"א. המספרים למטה הם ערכי סוג אשראי (CreditType) של שב"א, שדה נפרד מ"סוג עסקה". הטבלה הקנונית: 1=רגיל/מיידי, 2=ישראקרדיט/30+, 3=חיוב מיידי, 4=קרדיט מועדון, 5=מיוחד לאומי, 6=קרדיט, 8=תשלומים, 9=תשלומי מועדון.
| סוג | אנגלית | סוג אשראי | איך עובד | מי משלם ריבית |
|---|---|---|---|---|
| תשלומים רגילים | Regular | 8 | בית העסק מקבל סכום מלא מראש, הבנק גובה מהלקוח חודשית | לקוח (ללא ריבית כברירת מחדל) |
| קרדיט | Credit | 6 | הלקוח משלם לבנק בתשלומים עם ריבית, בית העסק מקבל סכום מלא | לקוח משלם ריבית לבנק |
| מועדון | Club | 9 | תוכנית ספציפית למנפיק (ישראכרט, כאל, מקס); קרדיט מועדון הוא 4 | משתנה לפי תוכנית |
| תשלומים ללא ריבית | Interest-free | 8 | בית העסק מסבסד עלות ריבית | בית העסק סופג עלות |
הערות מימוש:
- מקסימום תשלומים: בדרך כלל 36, חלק מהשערים מגבילים ל-12 או 24
- מינימום לתשלום: שב"א עשוי לאכוף סכומי מינימום לתשלום
- אישור תשלומים: חלק ממספרי התשלומים דורשים אישור מנפיק מראש
שלב 6: מימוש Fallback ולוגיקת ניסיון חוזר
עצבו עיבוד תשלומים עמיד:
# אסטרטגיית fallback
GATEWAY_PRIORITY = ["cardcom", "tranzila", "payme"]
async def process_with_fallback(request: PaymentRequest) -> PaymentResult:
last_error = None
for gateway_name in GATEWAY_PRIORITY:
gateway = get_gateway(gateway_name)
if not gateway.is_healthy():
continue # דלג על שער לא זמין
try:
result = await gateway.charge(request)
if result.success:
return result
# סירוב בנקאי -- אל תנסו שער אחר
if result.is_bank_decline():
return result
except GatewayTimeoutError:
last_error = f"{gateway_name} timeout"
continue # נסה שער הבא
except GatewayError as e:
last_error = str(e)
continue
raise AllGatewaysFailedError(last_error)חשוב: לעולם אל תנסו שוב סירוב בנקאי (אין כיסוי, כרטיס גנוב וכו') בשער אחר. נסו שוב רק בשגיאות טכניות של שער.
שלב 7: הבטחת עמידה ברגולציה
עמדו בדרישות בנק ישראל ושב"א:
| רגולציה | אנגלית | דרישה | השפעה |
|---|---|---|---|
| שמירת נתוני עסקאות | Transaction data retention | שמירת נתוני עסקאות ודיווח | שמרו פרטי עסקה 7 שנים |
| תקן PCI | PCI DSS | אבטחת נתוני כרטיס | השתמשו בטוקניזציה, לעולם אל תשמרו מספרי כרטיס מלאים |
| תקנות שב"א | Shva regulations | כללי סליקה וגמר חשבון | עמדו בחלונות סליקה ולוחות זמנים למחלוקות |
| הגנת הצרכן | Consumer Protection | זכויות החזר, תמחור ברור | הציגו תנאי תשלומים בבירור |
| מניעת הונאה | Anti-fraud | 3D Secure, בדיקות מהירות | מימשו 3DS2 לעסקאות ללא נוכחות כרטיס |
דוגמאות
דוגמה 1: הקמת ריבוי שערים
המשתמש אומר: "אני צריך לקבל תשלומים עם תשלומים, עם fallback אם שער אחד נופל" פעולות: 1. הערכה: צורך בתשלומים (רגילים + קרדיט) וזמינות גבוהה 2. השוואה: Cardcom (ראשי, תמיכה מלאה בתשלומים) + Tranzila (גיבוי) 3. עיצוב: PaymentRequest אחיד עם שדה installment_type 4. מימוש: ניתוב תשלומים ל-Cardcom, failover ל-Tranzila 5. הרצת python scripts/compare_gateways.py --features installments,recurring תוצאה: שכבת תזמור עם ניתוב ראשי/גיבוי וטיפול בתשלומים
דוגמה 2: מעבר בין שערים
המשתמש אומר: "אנחנו משתמשים ב-Tranzila אבל רוצים להוסיף PayMe לתשלומי ביט" פעולות: 1. הערכה: הגדרת Tranzila קיימת + צורך בתמיכת ביט 2. עיצוב: הוספת PayMe כשער משני לעסקאות ביט 3. ניתוב: תשלומי ביט ל-PayMe, תשלומי כרטיס ל-Tranzila 4. מימוש: מיפוי תגובות אחיד בין שני פורמטי השערים תוצאה: הגדרת שער כפול עם ניתוב מבוסס פיצ'רים
דוגמה 3: אופטימיזציית עלויות
המשתמש אומר: "איזה שער הכי זול ל-500 עסקאות יומיות ממוצע 200 ש"ח?" פעולות: 1. חישוב: נפח חודשי = 500 30 200 = 3,000,000 ש"ח 2. השוואה: הרצת python scripts/compare_gateways.py --volume 500 --avg-amount 200 3. שקלול: תמהיל תשלומים, שיעורי chargebacks, תזמון גמר חשבון 4. המלצה: על בסיס עלות כוללת כולל מאמץ אינטגרציה תוצאה: השוואת עלויות עם המלצה על בסיס פרופיל העסק
דוגמה 4: הגדרת תשלומים
המשתמש אומר: "לקוח רוצה לשלם 5,000 ש"ח ב-10 תשלומים ללא ריבית" פעולות: 1. זיהוי: תשלומים רגילים, 10 תשלומים של 500 ש"ח 2. בדיקה: תמיכת שער ב-10 תשלומים (כל השערים המרכזיים תומכים) 3. הערה: בית העסק סופג עלות ריבית בתשלומים "ללא ריבית" 4. חישוב: עלות לבית העסק = בדרך כלל 1-3% מהעסקה לסבסוד ריבית 5. מימוש: הגדרת installments=10, installment_type="regular" ב-PaymentRequest תוצאה: תשלום בתשלומים מוגדר עם פירוט עלויות לבית העסק
משאבים מצורפים
סקריפטים
scripts/compare_gateways.py-- הפקת מטריצת השוואה של שערי תשלום ישראליים לפי פיצ'רים, עמלות ונפח. הרצה:python scripts/compare_gateways.py --help
חומרי עזר
references/gateway-matrix.md-- השוואת פיצ'רים מפורטת של שערי תשלום ישראליים: פורמטי API, תמיכת תשלומים, חיוב חוזר, דפים מאוחסנים, לוחות זמני גמר חשבון ומבני עמלות. היעזרו בקובץ זה בעת הערכה או החלפת שערים.
קישורי עזר
| מקור | קישור | מה לבדוק |
|---|---|---|
| Cardcom | https://www.cardcom.co.il/ | משטח ה-API הנוכחי, תמחור, סוגי כרטיסים נתמכים |
| Tranzila - תיעוד | https://docs.tranzila.com/ | פרמטרי API ב-form-encoded, זרימת supplier code (terminalname) |
| PayMe - תיעוד מפתחים | https://www.payme.io/developers | API REST JSON עם Bearer token, תמיכת Bit/Apple Pay |
| Meshulam (Grow) - Reference | https://grow-il.readme.io/reference/overview | בסיס פרודקשן secure.meshulam.co.il (אל תשתמשו ב-sandbox.meshulam.co.il בפרודקשן) |
| iCredit | https://icredit.rivhit.co.il/ | סכמת אימות Group private token + credentials |
| בנק ישראל: פיקוח על מערכות תשלומים | https://www.boi.org.il/he/economic-roles/supervision-and-regulation/payment-systems-oversight/ | פיקוח בנק ישראל על שב"א ומערכות תשלום מבוקרות (בנקים + חברות כרטיסי אשראי). נותני שירותי תשלום שאינם בנק מפוקחים על ידי רשות ניירות ערך לפי חוק הסדרת העיסוק בשירותי תשלום ויוזמה בתשלום, התשפ"ג-2023 |
מלכודות נפוצות
- לכל שער תשלומים בכישור הזה (Cardcom, Tranzila, PayMe, Meshulam, iCredit, Pelecard) פורמט API שונה לחלוטין: Cardcom משתמשת ב-JSON, Tranzila ב-form-encoded, Meshulam ב-multipart/form-data עם פרמטר page-code נפרד, ו-PayMe ב-JSON עם Bearer token. סוכנים עלולים להחיל פורמט של שער אחד על אחר.
- עיבוד תשלומים בישראל דורש רישום עסקי ישראלי (עוסק מורשה/פטור). סוכנים עלולים להציע להקים עיבוד תשלומים לפני שמאמתים שלעסק יש רישום תקין ברשות המסים.
- דרישות PCI DSS בישראל עוקבות אחרי אותו תקן בינלאומי, אבל סולקים ישראליים (ישראכרט, Visa CAL) עשויים להחיל דרישות מקומיות נוספות. סוכנים עלולים לייצר קוד תואם PCI שמפספס שדות ספציפיים לסולקים ישראליים.
- החזרי Bit (התשלום הנייד הדומיננטי בישראל) משתמשים ב-endpoint שונה מהחזרי כרטיס אשראי ברוב השערים. סוכנים עלולים להשתמש ב-endpoint של החזר כרטיס עבור עסקאות Bit.
פתרון בעיות
שגיאה: "סוג תשלומים לא נתמך"
סיבה: סוג תשלומים מבוקש (קרדיט/מועדון) לא זמין בשער הנבחר פתרון: תבדקו יכולות שער בטבלת שלב 2. תשלומי מועדון זמינים רק ב-Cardcom ו-Pelecard. תנתבו לשער המתאים.
שגיאה: "סליקת שב"א נדחתה"
סיבה: עסקה מפרה כללי רשת שב"א (מספר תשלומים לא חוקי, סכום מתחת למינימום) פתרון: ודאו שמספר התשלומים בטווח המותר. תבדקו סכום מינימום לתשלום. ודאו שמטבע העסקה הוא ILS לכרטיסים מקומיים.
שגיאה: "Gateway timeout ב-fallback"
סיבה: כל השערים המוגדרים חווים בעיות פתרון: מימשו תבנית circuit breaker עם בדיקות בריאות. שווה לשקול הוספת שער שלישי. נטרו endpoints סטטוס של שערים והתריעו על הידרדרות.
שגיאה: "זוהתה עסקה כפולה"
סיבה: לוגיקת ניסיון חוזר שלחה אותו תשלום למספר שערים פתרון: השתמשו תמיד במפתחות אידמפוטנטיים. תבדקו סטטוס עסקה לפני ניסיון חוזר. לעולם אל תנסו שוב סירוב בנקאי -- נסו שוב רק בשגיאות טכניות של שער.
Related skills
How it compares
Use alongside generic payment skills when you need Israel-specific cred_type truth tables, not a global Stripe wrapper.
FAQ
Who is israeli-payment-orchestrator for?
Developers and small teams implementing Israeli card payments, installments, and gateway-specific fields in web or mobile commerce backends.
When should I use israeli-payment-orchestrator?
Use it in Build → integrations while designing checkout APIs, mapping Tranzila/Shva parameters, or reviewing agent-generated payment code before staging certification.
Is israeli-payment-orchestrator safe to install?
Payment skills touch money movement—check the Security Audits panel on this page, never paste live API secrets into chats, and validate against your acquirer’s current PDF spec.