0 decisions resolved on this page
A checkout for five markets, routed by decision tables
A mobile operator sells SIMs, phones on finance and business lines in five countries, each with its own tax, ID rules, credit bureau and payment rails. After every screen, five decision tables (85 rules) resolve live and the router table picks the next screen. Try a business in Germany, a thin credit file in the US, or an existing customer in arrears.
How it works
- Feature flags move into tables
Country, currency and tax, ID and credit rules, eligibility and payment rails usually end up as feature flags and nested conditions spread through the checkout code. This demo keeps them in four helper tables.
- A router picks the next screen
After every screen, the router table takes the screen just finished plus what the helpers decided and returns the next screen. The wizard code holds no flow logic.
- Results feed forward
Checks decide whether an ID or credit screen is needed; their results feed eligibility; eligibility's verdict tells the router whether to show an offer, a review or an account manager.
- Change the flow by editing rows
Adding a market, a payment method or a new screen order is a change to a table, tested and published without a release of the checkout.
1 · Market & tax
Policy, as writtenSet currency, tax and number porting per market. Germany: euros, 19% VAT included in prices, port with the donor operator and customer number. UK: pounds, 20% VAT included, port with a PAC code (text PAC to 65075). US: dollars, state sales tax added at checkout (California 7.25%, New York 4%, Texas 6.25%) plus local and 911 fees, port with account number and transfer PIN. Brazil: reais, state ICMS included (São Paulo 18%, Rio de Janeiro 20%, Minas Gerais 18%), port through Portabilidade with the CPF. India: rupees, 18% GST included, port with a UPC (SMS PORT to 1900).
| # | Country | Region | Currency | Tax | Rate (%) | Prices | Porting needs | Hits |
|---|---|---|---|---|---|---|---|---|
| 1 | DE | · | EUR | MwSt. | 19 | Tax included | Donor operator + customer number | |
| 2 | UK | · | GBP | VAT | 20 | Tax included | PAC code (text PAC to 65075) | |
| 3 | US | CA | USD | CA sales tax | 7.25 | Tax added | Account number + transfer PIN | |
| 4 | US | NY | USD | NY sales tax | 4 | Tax added | Account number + transfer PIN | |
| 5 | US | TX | USD | TX sales tax | 6.25 | Tax added | Account number + transfer PIN | |
| 6 | BR | SP | BRL | ICMS-SP | 18 | Tax included | Portabilidade with your CPF | |
| 7 | BR | RJ | BRL | ICMS-RJ | 20 | Tax included | Portabilidade with your CPF | |
| 8 | BR | MG | BRL | ICMS-MG | 18 | Tax included | Portabilidade with your CPF | |
| 9 | IN | · | INR | GST | 18 | Tax included | UPC code (SMS PORT to 1900) |
2 · Identity & credit checks
Policy, as writtenExisting customers are already verified: no new checks. Germany: every SIM needs VideoIdent with an ID card; postpaid and phone plans add a SCHUFA check; businesses show a Handelsregister extract and are checked with Creditreform. UK: prepaid needs no checks; postpaid and phones get an Experian credit check; businesses are looked up at Companies House and checked with Experian Business. US: prepaid needs no checks; postpaid and phones need SSN and photo ID plus Equifax; businesses verify their EIN and are checked with Dun & Bradstreet. Brazil: every SIM needs a valid CPF; postpaid and phones add Serasa; businesses use CNPJ and Serasa Empresas. India: every SIM needs Aadhaar eKYC; postpaid and phones add CIBIL; businesses verify GSTIN plus eKYC of the signatory, checked with CIBIL Commercial.
| # | Country | New or existing | Buying as | Plan | ID check | How | Credit check | Bureau | Business ID | Hits |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | · | Existing | Personal | · | No | Already verified | No | Account history | None | |
| 2 | · | Existing | Business | · | No | Already verified | No | Account history | Account number | |
| 3 | DE | · | Personal | Prepaid SIM | Yes | VideoIdent with ID card | No | None | None | |
| 4 | DE | · | Personal | · | Yes | VideoIdent with ID card | Yes | SCHUFA | None | |
| 5 | DE | · | Business | · | Yes | Handelsregister extract | Yes | Creditreform | USt-IdNr. | |
| 6 | UK | · | Personal | Prepaid SIM | No | Not required | No | None | None | |
| 7 | UK | · | Personal | · | No | Via credit file | Yes | Experian | None | |
| 8 | UK | · | Business | · | Yes | Companies House lookup | Yes | Experian Business | Company number | |
| 9 | US | · | Personal | Prepaid SIM | No | Not required | No | None | None | |
| 10 | US | · | Personal | · | Yes | SSN + photo ID | Yes | Equifax | None | |
| 11 | US | · | Business | · | Yes | EIN verification | Yes | Dun & Bradstreet | EIN | |
| 12 | BR | · | Personal | Prepaid SIM | Yes | CPF validation | No | None | None | |
| 13 | BR | · | Personal | · | Yes | CPF validation | Yes | Serasa | None | |
| 14 | BR | · | Business | · | Yes | CNPJ validation | Yes | Serasa Empresas | CNPJ | |
| 15 | IN | · | Personal | Prepaid SIM | Yes | Aadhaar eKYC | No | None | None | |
| 16 | IN | · | Personal | · | Yes | Aadhaar eKYC | Yes | CIBIL | None | |
| 17 | IN | · | Business | · | Yes | GSTIN + signatory eKYC | Yes | CIBIL Commercial | GSTIN |
3 · Eligibility
Policy, as writtenDecide eligibility. Nothing is decided until a plan is chosen. An ID that doesn't match goes to manual review. Business orders over 10 lines go to an account manager. Wait while a required ID or credit check is still pending. Existing customers in arrears must settle the balance first; existing customers in good standing are approved with 36-month financing. Prepaid is always approved. Businesses with poor credit are declined. Poor credit: phones become SIM-only (bring your own phone), postpaid gets a monthly spend cap. Thin credit file: flagship phones need a 25% deposit, other phones get 24 months. Good credit: phones get 36 months. Otherwise approve.
| # | New or existing | Account standing | Buying as | Lines | Plan | Phone | ID result | Credit result | Verdict | Terms | Financing | Hits |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | · | · | · | · | Pending | · | · | · | Pending | Choose a plan | None | |
| 2 | · | · | · | · | · | · | Mismatch | · | Manual review | ID didn't match: an agent calls within 24 h | None | |
| 3 | · | · | Business | > 10 | · | · | · | · | Account manager | Over 10 lines: tailored business quote | None | |
| 4 | · | · | · | · | · | · | Pending | · | Pending | Waiting for ID check | None | |
| 5 | · | · | · | · | · | · | · | Pending | Pending | Waiting for credit check | None | |
| 6 | Existing | In arrears | · | · | · | · | · | · | Conditional | Settle the outstanding balance first | None | |
| 7 | Existing | · | · | · | Phone on plan | · | · | · | Approved | Loyalty: no new checks | 36 months | |
| 8 | Existing | · | · | · | · | · | · | · | Approved | Loyalty: no new checks | None | |
| 9 | · | · | · | · | Prepaid SIM | · | · | · | Approved | Pay as you go, no contract | None | |
| 10 | · | · | Business | · | · | · | · | Poor | Declined | Company credit too low for postpaid lines | None | |
| 11 | · | · | · | · | Phone on plan | · | · | Poor | Conditional | No phone financing: SIM-only, bring your own phone | None | |
| 12 | · | · | · | · | · | · | · | Poor | Conditional | Monthly spend cap on the line | None | |
| 13 | · | · | · | · | Phone on plan | Flagship | · | Thin file | Conditional | 25% deposit on the phone | 24 months | |
| 14 | · | · | · | · | Phone on plan | · | · | Thin file | Approved | Shorter financing term | 24 months | |
| 15 | · | · | · | · | Phone on plan | · | · | · | Approved | Full financing | 36 months | |
| 16 | · | · | · | · | · | · | · | · | Approved | Standard contract | None |
4 · Payment methods
Policy, as writtenOffer local payment methods. Germany: prepaid by card or PayPal, postpaid by SEPA Direct Debit, businesses by SEPA or invoice (14 days); cards need 3-D Secure under PSD2. UK: prepaid by card or Apple Pay, postpaid by Direct Debit, businesses by Direct Debit or invoice (30 days); 3-D Secure. US: prepaid by card or Apple Pay, postpaid by card AutoPay or ACH, businesses by ACH or invoice (Net 30); risk-based authentication. Brazil: prepaid by Pix or boleto, postpaid by Pix Automático or card, businesses by boleto or Pix; risk-based. India: prepaid by UPI, card or wallet, postpaid by UPI AutoPay or card, businesses by NEFT or invoice; cards need an OTP under RBI rules.
| # | Country | Buying as | Plan | Methods | Authentication | Hits |
|---|---|---|---|---|---|---|
| 1 | DE | Business | · | SEPA Direct Debit, Invoice (14 days) | SEPA mandate | |
| 2 | DE | · | Prepaid SIM | Card, PayPal | 3-D Secure (PSD2) | |
| 3 | DE | · | · | SEPA Direct Debit | SEPA mandate | |
| 4 | UK | Business | · | Direct Debit, Invoice (30 days) | Bacs mandate | |
| 5 | UK | · | Prepaid SIM | Card, Apple Pay | 3-D Secure (PSD2) | |
| 6 | UK | · | · | Direct Debit | Bacs mandate | |
| 7 | US | Business | · | ACH, Invoice (Net 30) | Bank verification | |
| 8 | US | · | Prepaid SIM | Card, Apple Pay | Risk-based | |
| 9 | US | · | · | Card AutoPay, ACH | Risk-based | |
| 10 | BR | Business | · | Boleto, Pix | CNPJ match | |
| 11 | BR | · | Prepaid SIM | Pix, Boleto | Risk-based | |
| 12 | BR | · | · | Pix Automático, Card | Risk-based | |
| 13 | IN | Business | · | NEFT, Invoice | GSTIN match | |
| 14 | IN | · | Prepaid SIM | UPI, Card, Wallet | OTP (RBI) | |
| 15 | IN | · | · | UPI AutoPay, Card | OTP (RBI) |
5 · Next step (router)
Policy, as writtenPick the next checkout screen. From the start, existing customers sign in, new customers choose a plan; after sign-in, choose a plan. At any point: send account-manager orders to approval, manual-review orders to review and declined orders to the decline screen. After each screen, go to the first of these that applies, in order: company details for businesses, the ID check when required, the credit check when required, the offer when eligibility has conditions, porting when keeping the number, then payment. After payment, confirm the order.
| # | Finished screen | New or existing | Buying as | ID check | Credit check | Verdict | Keep number | Next screen | Why | Hits |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | start | Existing | · | · | · | · | · | sign_in | Existing customers sign in first | |
| 2 | start | · | · | · | · | · | · | plan | New customers start with a plan | |
| 3 | sign_in | · | · | · | · | · | · | plan | Signed in | |
| 4 | · | · | · | · | · | Account manager | · | approval | Large business orders get an account manager | |
| 5 | · | · | · | · | · | Manual review | · | review | Needs a person to look at it | |
| 6 | · | · | · | · | · | Declined | · | declined | Not eligible for this order | |
| 7 | plan | · | Business | · | · | · | · | business | Business orders need company details | |
| 8 | plan | · | · | Yes | · | · | · | identity | This market requires an ID check | |
| 9 | plan | · | · | · | Yes | · | · | credit | This plan needs a credit check | |
| 10 | plan | · | · | · | · | Conditional | · | offer | Eligibility came back with conditions | |
| 11 | plan | · | · | · | · | · | Yes | porting | Keeping the current number | |
| 12 | plan | · | · | · | · | · | · | payment | Nothing else to check | |
| 13 | business | · | · | Yes | · | · | · | identity | This market requires an ID check | |
| 14 | business | · | · | · | Yes | · | · | credit | This plan needs a credit check | |
| 15 | business | · | · | · | · | Conditional | · | offer | Eligibility came back with conditions | |
| 16 | business | · | · | · | · | · | Yes | porting | Keeping the current number | |
| 17 | business | · | · | · | · | · | · | payment | Nothing else to check | |
| 18 | identity | · | · | · | Yes | · | · | credit | This plan needs a credit check | |
| 19 | identity | · | · | · | · | Conditional | · | offer | Eligibility came back with conditions | |
| 20 | identity | · | · | · | · | · | Yes | porting | Keeping the current number | |
| 21 | identity | · | · | · | · | · | · | payment | Nothing else to check | |
| 22 | credit | · | · | · | · | Conditional | · | offer | Eligibility came back with conditions | |
| 23 | credit | · | · | · | · | · | Yes | porting | Keeping the current number | |
| 24 | credit | · | · | · | · | · | · | payment | Nothing else to check | |
| 25 | offer | · | · | · | · | · | Yes | porting | Keeping the current number | |
| 26 | offer | · | · | · | · | · | · | payment | Nothing else to check | |
| 27 | porting | · | · | · | · | · | · | payment | Nothing else to check | |
| 28 | payment | · | · | · | · | · | · | done | Order placed |
Tax rates, prices and check providers are illustrative.
These rules started as a paragraph of plain-English policy. Yours can too.
See pricing