{"id":"3c0d8e2b-d83d-4dbb-9c85-30abe82aeaef","shortId":"L8qb77","kind":"skill","title":"stripe-integration","tagline":"Master Stripe payment processing integration for robust, PCI-compliant payment flows including checkout, subscriptions, webhooks, and refunds.","description":"# Stripe Integration\n\nMaster Stripe payment processing integration for robust, PCI-compliant payment flows including checkout, subscriptions, webhooks, and refunds.\n\n## Do not use this skill when\n\n- The task is unrelated to stripe integration\n- You need a different domain or tool outside this scope\n\n## Instructions\n\n- Clarify goals, constraints, and required inputs.\n- Apply relevant best practices and validate outcomes.\n- Provide actionable steps and verification.\n- If detailed examples are required, open `resources/implementation-playbook.md`.\n\n## Use this skill when\n\n- Implementing payment processing in web/mobile applications\n- Setting up subscription billing systems\n- Handling one-time payments and recurring charges\n- Processing refunds and disputes\n- Managing customer payment methods\n- Implementing SCA (Strong Customer Authentication) for European payments\n- Building marketplace payment flows with Stripe Connect\n\n## Core Concepts\n\n### 1. Payment Flows\n**Checkout Session (Hosted)**\n- Stripe-hosted payment page\n- Minimal PCI compliance burden\n- Fastest implementation\n- Supports one-time and recurring payments\n\n**Payment Intents (Custom UI)**\n- Full control over payment UI\n- Requires Stripe.js for PCI compliance\n- More complex implementation\n- Better customization options\n\n**Setup Intents (Save Payment Methods)**\n- Collect payment method without charging\n- Used for subscriptions and future payments\n- Requires customer confirmation\n\n### 2. Webhooks\n**Critical Events:**\n- `payment_intent.succeeded`: Payment completed\n- `payment_intent.payment_failed`: Payment failed\n- `customer.subscription.updated`: Subscription changed\n- `customer.subscription.deleted`: Subscription canceled\n- `charge.refunded`: Refund processed\n- `invoice.payment_succeeded`: Subscription payment successful\n\n### 3. Subscriptions\n**Components:**\n- **Product**: What you're selling\n- **Price**: How much and how often\n- **Subscription**: Customer's recurring payment\n- **Invoice**: Generated for each billing cycle\n\n### 4. Customer Management\n- Create and manage customer records\n- Store multiple payment methods\n- Track customer metadata\n- Manage billing details\n\n## Quick Start\n\n```python\nimport stripe\n\nstripe.api_key = \"sk_test_...\"\n\n# Create a checkout session\nsession = stripe.checkout.Session.create(\n    payment_method_types=['card'],\n    line_items=[{\n        'price_data': {\n            'currency': 'usd',\n            'product_data': {\n                'name': 'Premium Subscription',\n            },\n            'unit_amount': 2000,  # $20.00\n            'recurring': {\n                'interval': 'month',\n            },\n        },\n        'quantity': 1,\n    }],\n    mode='subscription',\n    success_url='https://yourdomain.com/success?session_id={CHECKOUT_SESSION_ID}',\n    cancel_url='https://yourdomain.com/cancel',\n)\n\n# Redirect user to session.url\nprint(session.url)\n```\n\n## Payment Implementation Patterns\n\n### Pattern 1: One-Time Payment (Hosted Checkout)\n```python\ndef create_checkout_session(amount, currency='usd'):\n    \"\"\"Create a one-time payment checkout session.\"\"\"\n    try:\n        session = stripe.checkout.Session.create(\n            payment_method_types=['card'],\n            line_items=[{\n                'price_data': {\n                    'currency': currency,\n                    'product_data': {\n                        'name': 'Purchase',\n                        'images': ['https://example.com/product.jpg'],\n                    },\n                    'unit_amount': amount,  # Amount in cents\n                },\n                'quantity': 1,\n            }],\n            mode='payment',\n            success_url='https://yourdomain.com/success?session_id={CHECKOUT_SESSION_ID}',\n            cancel_url='https://yourdomain.com/cancel',\n            metadata={\n                'order_id': 'order_123',\n                'user_id': 'user_456'\n            }\n        )\n        return session\n    except stripe.error.StripeError as e:\n        # Handle error\n        print(f\"Stripe error: {e.user_message}\")\n        raise\n```\n\n### Pattern 2: Custom Payment Intent Flow\n```python\ndef create_payment_intent(amount, currency='usd', customer_id=None):\n    \"\"\"Create a payment intent for custom checkout UI.\"\"\"\n    intent = stripe.PaymentIntent.create(\n        amount=amount,\n        currency=currency,\n        customer=customer_id,\n        automatic_payment_methods={\n            'enabled': True,\n        },\n        metadata={\n            'integration_check': 'accept_a_payment'\n        }\n    )\n    return intent.client_secret  # Send to frontend\n\n# Frontend (JavaScript)\n\"\"\"\nconst stripe = Stripe('pk_test_...');\nconst elements = stripe.elements();\nconst cardElement = elements.create('card');\ncardElement.mount('#card-element');\n\nconst {error, paymentIntent} = await stripe.confirmCardPayment(\n    clientSecret,\n    {\n        payment_method: {\n            card: cardElement,\n            billing_details: {\n                name: 'Customer Name'\n            }\n        }\n    }\n);\n\nif (error) {\n    // Handle error\n} else if (paymentIntent.status === 'succeeded') {\n    // Payment successful\n}\n\"\"\"\n```\n\n### Pattern 3: Subscription Creation\n```python\ndef create_subscription(customer_id, price_id):\n    \"\"\"Create a subscription for a customer.\"\"\"\n    try:\n        subscription = stripe.Subscription.create(\n            customer=customer_id,\n            items=[{'price': price_id}],\n            payment_behavior='default_incomplete',\n            payment_settings={'save_default_payment_method': 'on_subscription'},\n            expand=['latest_invoice.payment_intent'],\n        )\n\n        return {\n            'subscription_id': subscription.id,\n            'client_secret': subscription.latest_invoice.payment_intent.client_secret\n        }\n    except stripe.error.StripeError as e:\n        print(f\"Subscription creation failed: {e}\")\n        raise\n```\n\n### Pattern 4: Customer Portal\n```python\ndef create_customer_portal_session(customer_id):\n    \"\"\"Create a portal session for customers to manage subscriptions.\"\"\"\n    session = stripe.billing_portal.Session.create(\n        customer=customer_id,\n        return_url='https://yourdomain.com/account',\n    )\n    return session.url  # Redirect customer here\n```\n\n## Webhook Handling\n\n### Secure Webhook Endpoint\n```python\nfrom flask import Flask, request\nimport stripe\n\napp = Flask(__name__)\n\nendpoint_secret = 'whsec_...'\n\n@app.route('/webhook', methods=['POST'])\ndef webhook():\n    payload = request.data\n    sig_header = request.headers.get('Stripe-Signature')\n\n    try:\n        event = stripe.Webhook.construct_event(\n            payload, sig_header, endpoint_secret\n        )\n    except ValueError:\n        # Invalid payload\n        return 'Invalid payload', 400\n    except stripe.error.SignatureVerificationError:\n        # Invalid signature\n        return 'Invalid signature', 400\n\n    # Handle the event\n    if event['type'] == 'payment_intent.succeeded':\n        payment_intent = event['data']['object']\n        handle_successful_payment(payment_intent)\n    elif event['type'] == 'payment_intent.payment_failed':\n        payment_intent = event['data']['object']\n        handle_failed_payment(payment_intent)\n    elif event['type'] == 'customer.subscription.deleted':\n        subscription = event['data']['object']\n        handle_subscription_canceled(subscription)\n\n    return 'Success', 200\n\ndef handle_successful_payment(payment_intent):\n    \"\"\"Process successful payment.\"\"\"\n    customer_id = payment_intent.get('customer')\n    amount = payment_intent['amount']\n    metadata = payment_intent.get('metadata', {})\n\n    # Update your database\n    # Send confirmation email\n    # Fulfill order\n    print(f\"Payment succeeded: {payment_intent['id']}\")\n\ndef handle_failed_payment(payment_intent):\n    \"\"\"Handle failed payment.\"\"\"\n    error = payment_intent.get('last_payment_error', {})\n    print(f\"Payment failed: {error.get('message')}\")\n    # Notify customer\n    # Update order status\n\ndef handle_subscription_canceled(subscription):\n    \"\"\"Handle subscription cancellation.\"\"\"\n    customer_id = subscription['customer']\n    # Update user access\n    # Send cancellation email\n    print(f\"Subscription canceled: {subscription['id']}\")\n```\n\n### Webhook Best Practices\n```python\nimport hashlib\nimport hmac\n\ndef verify_webhook_signature(payload, signature, secret):\n    \"\"\"Manually verify webhook signature.\"\"\"\n    expected_sig = hmac.new(\n        secret.encode('utf-8'),\n        payload,\n        hashlib.sha256\n    ).hexdigest()\n\n    return hmac.compare_digest(signature, expected_sig)\n\ndef handle_webhook_idempotently(event_id, handler):\n    \"\"\"Ensure webhook is processed exactly once.\"\"\"\n    # Check if event already processed\n    if is_event_processed(event_id):\n        return\n\n    # Process event\n    try:\n        handler()\n        mark_event_processed(event_id)\n    except Exception as e:\n        log_error(e)\n        # Stripe will retry failed webhooks\n        raise\n```\n\n## Customer Management\n\n```python\ndef create_customer(email, name, payment_method_id=None):\n    \"\"\"Create a Stripe customer.\"\"\"\n    customer = stripe.Customer.create(\n        email=email,\n        name=name,\n        payment_method=payment_method_id,\n        invoice_settings={\n            'default_payment_method': payment_method_id\n        } if payment_method_id else None,\n        metadata={\n            'user_id': '12345'\n        }\n    )\n    return customer\n\ndef attach_payment_method(customer_id, payment_method_id):\n    \"\"\"Attach a payment method to a customer.\"\"\"\n    stripe.PaymentMethod.attach(\n        payment_method_id,\n        customer=customer_id\n    )\n\n    # Set as default\n    stripe.Customer.modify(\n        customer_id,\n        invoice_settings={\n            'default_payment_method': payment_method_id\n        }\n    )\n\ndef list_customer_payment_methods(customer_id):\n    \"\"\"List all payment methods for a customer.\"\"\"\n    payment_methods = stripe.PaymentMethod.list(\n        customer=customer_id,\n        type='card'\n    )\n    return payment_methods.data\n```\n\n## Refund Handling\n\n```python\ndef create_refund(payment_intent_id, amount=None, reason=None):\n    \"\"\"Create a refund.\"\"\"\n    refund_params = {\n        'payment_intent': payment_intent_id\n    }\n\n    if amount:\n        refund_params['amount'] = amount  # Partial refund\n\n    if reason:\n        refund_params['reason'] = reason  # 'duplicate', 'fraudulent', 'requested_by_customer'\n\n    refund = stripe.Refund.create(**refund_params)\n    return refund\n\ndef handle_dispute(charge_id, evidence):\n    \"\"\"Update dispute with evidence.\"\"\"\n    stripe.Dispute.modify(\n        charge_id,\n        evidence={\n            'customer_name': evidence.get('customer_name'),\n            'customer_email_address': evidence.get('customer_email'),\n            'shipping_documentation': evidence.get('shipping_proof'),\n            'customer_communication': evidence.get('communication'),\n        }\n    )\n```\n\n## Testing\n\n```python\n# Use test mode keys\nstripe.api_key = \"sk_test_...\"\n\n# Test card numbers\nTEST_CARDS = {\n    'success': '4242424242424242',\n    'declined': '4000000000000002',\n    '3d_secure': '4000002500003155',\n    'insufficient_funds': '4000000000009995'\n}\n\ndef test_payment_flow():\n    \"\"\"Test complete payment flow.\"\"\"\n    # Create test customer\n    customer = stripe.Customer.create(\n        email=\"test@example.com\"\n    )\n\n    # Create payment intent\n    intent = stripe.PaymentIntent.create(\n        amount=1000,\n        currency='usd',\n        customer=customer.id,\n        payment_method_types=['card']\n    )\n\n    # Confirm with test card\n    confirmed = stripe.PaymentIntent.confirm(\n        intent.id,\n        payment_method='pm_card_visa'  # Test payment method\n    )\n\n    assert confirmed.status == 'succeeded'\n```\n\n## Resources\n\n- **references/checkout-flows.md**: Detailed checkout implementation\n- **references/webhook-handling.md**: Webhook security and processing\n- **references/subscription-management.md**: Subscription lifecycle\n- **references/customer-management.md**: Customer and payment method handling\n- **references/invoice-generation.md**: Invoicing and billing\n- **assets/stripe-client.py**: Production-ready Stripe client wrapper\n- **assets/webhook-handler.py**: Complete webhook processor\n- **assets/checkout-config.json**: Checkout configuration templates\n\n## Best Practices\n\n1. **Always Use Webhooks**: Don't rely solely on client-side confirmation\n2. **Idempotency**: Handle webhook events idempotently\n3. **Error Handling**: Gracefully handle all Stripe errors\n4. **Test Mode**: Thoroughly test with test keys before production\n5. **Metadata**: Use metadata to link Stripe objects to your database\n6. **Monitoring**: Track payment success rates and errors\n7. **PCI Compliance**: Never handle raw card data on your server\n8. **SCA Ready**: Implement 3D Secure for European payments\n\n## Common Pitfalls\n\n- **Not Verifying Webhooks**: Always verify webhook signatures\n- **Missing Webhook Events**: Handle all relevant webhook events\n- **Hardcoded Amounts**: Use cents/smallest currency unit\n- **No Retry Logic**: Implement retries for API calls\n- **Ignoring Test Mode**: Test all edge cases with test cards\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["stripe","integration","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-stripe-integration","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/stripe-integration","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34460 github stars · SKILL.md body (13,475 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T06:51:56.640Z","embedding":null,"createdAt":"2026-04-18T21:45:36.290Z","updatedAt":"2026-04-22T06:51:56.640Z","lastSeenAt":"2026-04-22T06:51:56.640Z","tsv":"'-8':830 '/account'',':611 '/cancel'',':323,400 '/product.jpg''],':377 '/success?session_id=':315,392 '/webhook':637 '1':139,308,334,385,1190 '1000':1123 '123':405 '12345':931 '2':202,426,1203 '20.00':303 '200':721 '2000':302 '3':227,520,1209 '3d':1096,1261 '4':252,582,1217 '400':666,674 '4000000000000002':1095 '4000000000009995':1101 '4000002500003155':1098 '4242424242424242':1093 '456':409 '5':1227 '6':1238 '7':1246 '8':1257 'accept':467 'access':796 'action':80 'address':1064 'alreadi':856 'alway':1191,1271 'amount':301,346,379,380,381,436,452,453,735,738,1004,1019,1022,1023,1122,1284 'api':1295 'app':630 'app.route':636 'appli':72 'applic':100 'ask':1340 'assert':1147 'assets/checkout-config.json':1184 'assets/stripe-client.py':1173 'assets/webhook-handler.py':1180 'attach':935,943 'authent':126 'automat':459 'await':497 'behavior':548 'best':74,807,1188 'better':180 'bill':104,250,268,504,1172 'boundari':1348 'build':130 'burden':153 'call':1296 'cancel':218,319,396,717,785,789,798,803 'card':288,363,489,492,502,992,1088,1091,1131,1135,1142,1252,1306 'card-el':491 'cardel':487,503 'cardelement.mount':490 'case':1303 'cent':383 'cents/smallest':1286 'chang':215 'charg':113,192,1046,1054 'charge.refunded':219 'check':466,853 'checkout':17,37,142,281,316,340,344,355,393,448,1153,1185 'clarif':1342 'clarifi':66 'clear':1315 'client':566,1178,1200 'client-sid':1199 'clientsecret':499 'collect':188 'common':1266 'communic':1074,1076 'complet':208,1107,1181 'complex':178 'complianc':152,176,1248 'compliant':13,33 'compon':229 'concept':138 'configur':1186 'confirm':201,746,1132,1136,1202 'confirmed.status':1148 'connect':136 'const':478,483,486,494 'constraint':68 'control':168 'core':137 'creat':255,279,343,349,433,442,525,531,587,593,891,899,999,1008,1110,1117 'creation':522,577 'criteria':1351 'critic':204 'currenc':293,347,368,369,437,454,455,1124,1287 'custom':119,125,165,181,200,242,253,258,265,427,439,447,456,457,507,527,536,540,541,583,588,591,598,604,605,615,731,734,778,790,793,887,892,902,903,933,938,949,954,955,961,973,976,984,988,989,1036,1057,1060,1062,1066,1073,1112,1113,1126,1164 'customer.id':1127 'customer.subscription.deleted':216,710 'customer.subscription.updated':213 'cycl':251 'data':292,296,367,371,685,700,713,1253 'databas':744,1237 'declin':1094 'def':342,432,524,586,640,722,757,782,814,840,890,934,971,998,1043,1102 'default':549,554,916,959,965 'describ':1319 'detail':85,269,505,1152 'differ':58 'digest':836 'disput':117,1045,1050 'document':1069 'domain':59 'duplic':1032 'e':415,573,579,877,880 'e.user':422 'edg':1302 'element':484,493 'elements.create':488 'elif':692,707 'els':513,926 'email':747,799,893,905,906,1063,1067,1115 'enabl':462 'endpoint':621,633,657 'ensur':847 'environ':1331 'environment-specif':1330 'error':417,421,495,510,512,766,770,879,1210,1216,1245 'error.get':775 'european':128,1264 'event':205,651,653,677,679,684,693,699,708,712,844,855,860,862,866,870,872,1207,1277,1282 'evid':1048,1052,1056 'evidence.get':1059,1065,1070,1075 'exact':851 'exampl':86 'example.com':376 'example.com/product.jpg''],':375 'except':412,570,659,667,874,875 'expand':559 'expect':825,838 'expert':1336 'f':419,575,751,772,801 'fail':210,212,578,696,703,759,764,774,884 'fastest':154 'flask':624,626,631 'flow':15,35,133,141,430,1105,1109 'fraudul':1033 'frontend':475,476 'fulfil':748 'full':167 'fund':1100 'futur':197 'generat':247 'goal':67 'grace':1212 'handl':106,416,511,618,675,687,702,715,723,758,763,783,787,841,996,1044,1168,1205,1211,1213,1250,1278 'handler':846,868 'hardcod':1283 'hashlib':811 'hashlib.sha256':832 'header':645,656 'hexdigest':833 'hmac':813 'hmac.compare':835 'hmac.new':827 'host':144,147,339 'id':318,395,403,407,440,458,528,530,542,546,564,592,606,732,756,791,805,845,863,873,897,913,921,925,930,939,942,953,956,962,970,977,990,1003,1017,1047,1055 'idempot':843,1204,1208 'ignor':1297 'imag':374 'implement':95,122,155,179,331,1154,1260,1292 'import':273,625,628,810,812 'includ':16,36 'incomplet':550 'input':71,1345 'instruct':65 'insuffici':1099 'integr':3,8,23,28,54,465 'intent':164,184,429,435,445,450,561,683,691,698,706,727,737,755,762,1002,1014,1016,1119,1120 'intent.client':471 'intent.id':1138 'interv':305 'invalid':661,664,669,672 'invoic':246,914,963,1170 'invoice.payment':222 'item':290,365,543 'javascript':477 'key':276,1082,1084,1224 'last':768 'latest_invoice.payment':560 'lifecycl':1162 'limit':1307 'line':289,364 'link':1232 'list':972,978 'log':878 'logic':1291 'manag':118,254,257,267,600,888 'manual':821 'mark':869 'marketplac':131 'master':4,24 'match':1316 'messag':423,776 'metadata':266,401,464,739,741,928,1228,1230 'method':121,187,190,263,286,361,461,501,556,638,896,910,912,918,920,924,937,941,946,952,967,969,975,981,986,1129,1140,1146,1167 'minim':150 'miss':1275,1353 'mode':309,386,1081,1219,1299 'monitor':1239 'month':306 'much':237 'multipl':261 'name':297,372,506,508,632,894,907,908,1058,1061 'need':56 'never':1249 'none':441,898,927,1005,1007 'notifi':777 'number':1089 'object':686,701,714,1234 'often':240 'one':108,158,336,352 'one-tim':107,157,335,351 'open':89 'option':182 'order':402,404,749,780 'outcom':78 'output':1325 'outsid':62 'page':149 'param':1012,1021,1029,1040 'partial':1024 'pattern':332,333,425,519,581 'payload':642,654,662,665,818,831 'payment':6,14,26,34,96,110,120,129,132,140,148,162,163,170,186,189,198,207,211,225,245,262,285,330,338,354,360,387,428,434,444,460,469,500,517,547,551,555,682,689,690,697,704,705,725,726,730,736,752,754,760,761,765,769,773,895,909,911,917,919,923,936,940,945,951,966,968,974,980,985,1001,1013,1015,1104,1108,1118,1128,1139,1145,1166,1241,1265 'payment_intent.get':733,740,767 'payment_intent.payment':209,695 'payment_intent.succeeded':206,681 'payment_methods.data':994 'paymentint':496 'paymentintent.status':515 'pci':12,32,151,175,1247 'pci-compli':11,31 'permiss':1346 'pitfal':1267 'pk':481 'pm':1141 'portal':584,589,595 'post':639 'practic':75,808,1189 'premium':298 'price':235,291,366,529,544,545 'print':328,418,574,750,771,800 'process':7,27,97,114,221,728,850,857,861,865,871,1159 'processor':1183 'product':230,295,370,1175,1226 'production-readi':1174 'proof':1072 'provid':79 'purchas':373 'python':272,341,431,523,585,622,809,889,997,1078 'quantiti':307,384 'quick':270 'rais':424,580,886 'rate':1243 'raw':1251 're':233 'readi':1176,1259 'reason':1006,1027,1030,1031 'record':259 'recur':112,161,244,304 'redirect':324,614 'references/checkout-flows.md':1151 'references/customer-management.md':1163 'references/invoice-generation.md':1169 'references/subscription-management.md':1160 'references/webhook-handling.md':1155 'refund':21,41,115,220,995,1000,1010,1011,1020,1025,1028,1037,1039,1042 'relev':73,1280 'reli':1196 'request':627,1034 'request.data':643 'request.headers.get':646 'requir':70,88,172,199,1344 'resourc':1150 'resources/implementation-playbook.md':90 'retri':883,1290,1293 'return':410,470,562,607,612,663,671,719,834,864,932,993,1041 'review':1337 'robust':10,30 'safeti':1347 'save':185,553 'sca':123,1258 'scope':64,1318 'secret':472,567,569,634,658,820 'secret.encode':828 'secur':619,1097,1157,1262 'sell':234 'send':473,745,797 'server':1256 'session':143,282,283,317,345,356,358,394,411,590,596,602 'session.url':327,329,613 'set':101,552,915,957,964 'setup':183 'ship':1068,1071 'side':1201 'sig':644,655,826,839 'signatur':649,670,673,817,819,824,837,1274 'sk':277,1085 'skill':46,93,1310 'skill-stripe-integration' 'sole':1197 'source-sickn33' 'specif':1332 'start':271 'status':781 'step':81 'stop':1338 'store':260 'stripe':2,5,22,25,53,135,146,274,420,479,480,629,648,881,901,1177,1215,1233 'stripe-host':145 'stripe-integr':1 'stripe-signatur':647 'stripe.api':275,1083 'stripe.billing_portal.session.create':603 'stripe.checkout.session.create':284,359 'stripe.confirmcardpayment':498 'stripe.customer.create':904,1114 'stripe.customer.modify':960 'stripe.dispute.modify':1053 'stripe.elements':485 'stripe.error.signatureverificationerror':668 'stripe.error.stripeerror':413,571 'stripe.js':173 'stripe.paymentintent.confirm':1137 'stripe.paymentintent.create':451,1121 'stripe.paymentmethod.attach':950 'stripe.paymentmethod.list':987 'stripe.refund.create':1038 'stripe.subscription.create':539 'stripe.webhook.construct':652 'strong':124 'subscript':18,38,103,195,214,217,224,228,241,299,310,521,526,533,538,558,563,576,601,711,716,718,784,786,788,792,802,804,1161 'subscription.id':565 'subscription.latest_invoice.payment_intent.client':568 'substitut':1328 'succeed':223,516,753,1149 'success':226,311,388,518,688,720,724,729,1092,1242,1350 'support':156 'system':105 'task':49,1314 'templat':1187 'test':278,482,1077,1080,1086,1087,1090,1103,1106,1111,1134,1144,1218,1221,1223,1298,1300,1305,1334 'test@example.com':1116 'thorough':1220 'time':109,159,337,353 'tool':61 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'track':264,1240 'treat':1323 'tri':357,537,650,867 'true':463 'type':287,362,680,694,709,991,1130 'ui':166,171,449 'unit':300,378,1288 'unrel':51 'updat':742,779,794,1049 'url':312,320,389,397,608 'usd':294,348,438,1125 'use':44,91,193,1079,1192,1229,1285,1308 'user':325,406,408,795,929 'utf':829 'valid':77,1333 'valueerror':660 'verif':83 'verifi':815,822,1269,1272 'visa':1143 'web/mobile':99 'webhook':19,39,203,617,620,641,806,816,823,842,848,885,1156,1182,1193,1206,1270,1273,1276,1281 'whsec':635 'without':191 'wrapper':1179 'yourdomain.com':314,322,391,399,610 'yourdomain.com/account'',':609 'yourdomain.com/cancel'',':321,398 'yourdomain.com/success?session_id=':313,390","prices":[{"id":"c7e276bd-cc19-49db-931a-ebbb94225e0d","listingId":"3c0d8e2b-d83d-4dbb-9c85-30abe82aeaef","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:45:36.290Z"}],"sources":[{"listingId":"3c0d8e2b-d83d-4dbb-9c85-30abe82aeaef","source":"github","sourceId":"sickn33/antigravity-awesome-skills/stripe-integration","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/stripe-integration","isPrimary":false,"firstSeenAt":"2026-04-18T21:45:36.290Z","lastSeenAt":"2026-04-22T06:51:56.640Z"}],"details":{"listingId":"3c0d8e2b-d83d-4dbb-9c85-30abe82aeaef","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"stripe-integration","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34460,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-22T06:40:00Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"f9673a3a6443e3c235693ab9079b38effc7f7a4c","skill_md_path":"skills/stripe-integration/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/stripe-integration"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"stripe-integration","description":"Master Stripe payment processing integration for robust, PCI-compliant payment flows including checkout, subscriptions, webhooks, and refunds."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/stripe-integration"},"updatedAt":"2026-04-22T06:51:56.640Z"}}