मुख्य सामग्री पर जाएं
एक capability आपको बताती है कि क्या एक customer किसी विशिष्ट outcome, payment method, और direction का उपयोग कर सकता है। Open tasks आपको बताते हैं कि उस capability या संबंधित resource के आगे बढ़ने से पहले क्या होना चाहिए।
Environment variables

समर्थित capabilities खोजें

Customer के वर्तमान विकल्पों को GET /v3/customers/{customerId}/capabilities/supported के साथ पढ़ें:
List supported capabilities
एक response entry चुनें जो इच्छित directions, method, और accountType से मेल खाती हो। केवल तब जारी रखें जब availability available या beta हो और eligibility.eligible true हो। यदि institutions लौटाए जाते हैं, तो केवल उस response से एक ID चुनें। प्रत्येक institution entry में एक logoUrl और एक isDefault flag शामिल होता है। Bank selection UI में bank का logo दिखाने के लिए logoUrl का उपयोग करें, और जब यह null हो तो अपना generic bank icon render करें। isDefault केवल इस customer और capability पर लागू होता है, institution पर globally नहीं। GET /v3/institutions वही nullable logoUrl लौटाता है। Institution IDs opaque हैं, इसलिए code बदले बिना नए IDs को handle करें।
Institution entry
चयनित data[].id को CAPABILITY_ID के रूप में संग्रहीत करें। किसी अन्य customer या environment से capability ID को कभी copy न करें।

Pooled बनाम named account types

Bank capabilities दो variants में आती हैं, जिन्हें accountType field और capability ID suffix (उदाहरण के लिए ach_pooled, wire_named) के रूप में encode किया गया है:
  • pooled: साझा Swipelux bank account। Funds को route करने के लिए प्रत्येक pay-in एक unique reference का उपयोग करता है। एक-बार के transfers के लिए इसे चुनें।
  • named: customer के लिए dedicated bank details (virtual IBAN, dedicated ACH account)। पुन: उपयोग करने योग्य और किसी भी payer के साथ साझा करने योग्य। Issued bank accounts के लिए आवश्यक।
Default रूप से pooled का उपयोग करें। named का उपयोग केवल तभी करें जब customer को पुन: उपयोग करने योग्य bank details की आवश्यकता हो। यह देखने के लिए कि कौन से variants उपलब्ध हैं, supported response की जाँच करें। SWIFT deposits प्राप्त करने या SWIFT bank details जारी करने के लिए, swift_named का उपयोग करें। swift_pooled केवल payouts को support करता है, इसलिए supported-capability response में प्रत्येक option के directions की जाँच करें। Named SWIFT account पुन: उपयोग करने योग्य receiving details लौटाता है, जिनमें bank का BIC, आवश्यक होने पर एक reference, और bank द्वारा प्रदान किए जाने पर beneficiary address शामिल है। Issued ACH, Wire, और SWIFT accounts के लिए, आप institution के साथ एक सटीक bank चुन सकते हैं और bank द्वारा customer को approve करने से पहले account request save कर सकते हैं। Bank account जारी करें देखें।

Capability का अनुरोध करें

चयनित option का अनुरोध POST /v3/customers/{customerId}/capabilities/{capabilityId} के साथ करें:
Request capability
एक explicit institutions array का उपयोग केवल तब करें जब आपको supported-capability response द्वारा लौटाए गए IDs में से चयन करने की आवश्यकता हो। data.status को CAPABILITY_STATUS, data.accountProvisioning को ACCOUNT_PROVISIONING_STATUS, data.openTaskIds को OPEN_TASK_IDS, और प्रत्येक data.applications[].id को APPLICATION_IDS में संग्रहीत करें।

प्रति bank साझा applications

Named bank capabilities के लिए, प्रत्येक customer के पास प्रति bank एक application case होता है। Pooled और platform capabilities बिना bank वाले cases का उपयोग करती हैं। Swipelux आपके द्वारा अनुरोधित हर compatible capability में एक case साझा करता है:
  • एक approval कई capabilities को cover कर सकता है। उदाहरण के लिए, एक bank पर approved case ACH और wire दोनों capabilities को ready बना सकता है।
  • बाद का कोई request जो किसी मौजूदा case से मेल खाता है, उसी का पुन: उपयोग करता है। Swipelux कोई दूसरा application नहीं खोलता और कोई duplicate tasks नहीं जोड़ता।
  • अलग-अलग banks पर cases स्वतंत्र होते हैं। एक bank पर rejection किसी दूसरे bank के case को प्रभावित नहीं करता।
Request response आपको बताता है कि Swipelux ने किस case का उपयोग किया:
  • 201 का अर्थ है कि request ने एक नया application case खोला।
  • 200 का अर्थ है कि request किसी ऐसे application case पर resolve हुआ जो customer के पास पहले से था, उदाहरण के लिए ऐसी bank capability के लिए दोहराया गया request जो customer के पास पहले से है, या किसी canceled capability के लिए request। card या stablecoin_transfers के लिए दोहराया गया request अब भी 409 capability_already_exists लौटाता है।
  • selectedApplicationId data के बगल में एक top-level field है, जिसमें उस case का ID होता है जिसे request ने चुना या खोला। जब request ने कोई case नहीं चुना, तो Swipelux इसे छोड़ देता है। Idempotent replay वही value लौटाता है।
संक्षिप्त response:
Response (abbreviated)
Named capabilities के लिए, उसी case को चुनने के लिए वही institutions list फिर से भेजें, या उस bank को target करने के लिए एक institution ID भेजें। जिस bank ने customer को terminally reject किया है, उसे skip किया जाता है। जब आप केवल उसी bank का नाम देते हैं, या हर eligible bank ने customer को reject कर दिया है, तो request 409 capability_terminally_rejected लौटाता है। Rejection के बाद किसी दूसरे bank को आज़माने के लिए, उस bank के institution ID के साथ capability का फिर से अनुरोध करें। किसी capability का status customer के सभी संबंधित cases को दर्शाता है। Named capability के लिए, एक ready case जिसका approval उसे cover करता है, उसे ready बनाने के लिए पर्याप्त है, चाहे दूसरे banks कुछ भी report करें। Pooled capability अपने method check की भी प्रतीक्षा करती है, जो customer applications list पर probes में report होता है।

Customer के applications सूचीबद्ध करें

Customer के हर application case को GET /v3/customers/{customerId}/applications के साथ सूचीबद्ध करें। Results nextCursor और hasMore के साथ paginated होते हैं, और updatedAfter स्वीकार करते हैं:
List applications
प्रत्येक entry में capability के applications[] में लौटाए गए application fields शामिल होते हैं, साथ ही:
  • scope: एक bank पर case के लिए named, बिना bank वाले cases के लिए provider_pooled या platform, या unclassified historical case के लिए null। provider_pooled और platform cases के लिए institution मौजूद नहीं होता।
  • requestedScope[]: case के विरुद्ध अनुरोधित capability keys, प्रत्येक अपने पहले requestedAt के साथ। Entries कभी हटाई नहीं जातीं।
  • coverage[]: वे capability keys जिन्हें case का approval cover करता है, प्रत्येक grantedAt और source के साथ। Coverage scope record करता है, authorization नहीं। वर्तमान status के लिए capability पढ़ें।
  • probes[]: case द्वारा cover की गई pooled capability keys के लिए method checks, प्रत्येक capabilityKey, status, और reason के साथ। Named keys को कभी probe की आवश्यकता नहीं होती।
  • generation, predecessorApplicationId, और supersededByApplicationId: succession links। जब supersededByApplicationId set हो, तो case को replace कर दिया गया है। वर्तमान case तक पहुँचने के लिए उस ID का पालन करें। किसी capability की applications[] केवल वर्तमान cases सूचीबद्ध करती है, इसलिए replace किया गया case केवल इसी सूची में दिखता है।
संक्षिप्त response:
Response (abbreviated)

वर्तमान tasks पूरे करें

Tasks को GET /v3/customers/{customerId}/tasks के साथ सूचीबद्ध करें, OPEN_TASK_IDS से IDs चुनें, फिर प्रत्येक वर्तमान task को GET /v3/customers/{customerId}/tasks/{taskId} के साथ पढ़ें:
List open tasks
नवीनतम data.revision और data.requirements का उपयोग करें। यदि दोनों में से कोई बदल सकता है, तो submit करने से ठीक पहले task को पुन: प्राप्त करें।

पुन: उपयोग किए गए profile evidence

Direct API submission स्वीकार करने वाले application intake tasks के लिए, Swipelux उस जानकारी का पुन: उपयोग करता है जो customer पहले ही दे चुका है। जब ऐसा task बनाया या reconcile किया जाता है, तो Swipelux customer profile और customer के अपने upload किए गए documents की जाँच करता है। जो eligible requirements पहले से किसी usable profile value या document द्वारा समर्थित हैं, वे actionable रहने के बजाय in_review में चली जाती हैं। Profile updates और नए document uploads मौजूदा tasks के लिए वही जाँच trigger करते हैं। केवल missing या incompatible values actionable रहती हैं। पुन: उपयोग evidence को approve नहीं करता। Swipelux फिर भी उसकी review करता है। Explicit correction requests और पहले से answered requirements actionable रहती हैं। Owner और related-party documents का पुन: उपयोग नहीं होता, और केवल hosted session के माध्यम से collect की जाने वाली requirements अपने सामान्य flow का पालन करती हैं।

Requirements render करें

Forms को requirement keys के बजाय प्रत्येक requirement द्वारा लौटाए गए metadata से बनाएँ। एक requirement में एक वैकल्पिक छोटा title शामिल हो सकता है, और हर request में heading के नीचे दिखाने के लिए एक prompt शामिल होता है। request.type: "profile" वाली requirements profilePointer के साथ profile field की पहचान करती हैं और input metadata जोड़ती हैं:
  • allowedValues: किसी scalar field के लिए, या किसी array field के प्रत्येक item के लिए अनुमत values। इन्हीं values को submit करें, translated display labels को नहीं।
  • valueSchema: एक self-contained JSON Schema Draft 7 document जो input shape, nested properties, required fields, और structural constraints का वर्णन करता है। Objects पर enums संबंधित property पर दिखाई देते हैं, उदाहरण के लिए tax identifiers के लिए valueSchema.items.properties.type.enum। Swipelux submission के बाद भी cross-field और review validation लागू करता है, इसलिए schema पास करने वाली value भी reject हो सकती है।
  • valueType: "country", या arrays के लिए itemValueType: "country": field uppercase ISO 3166-1 alpha-2 codes लेता है। valueSchema में nested country properties format: "iso-3166-1-alpha-2" का उपयोग करती हैं। Localized labels के लिए एक standard country list का उपयोग करें।
Requirement
यह उदाहरण value catalog को छोटा करता है; API हर अनुमत value लौटाता है। कुछ profile requirements का कोई published schema नहीं होता और वे valueSchema और allowedValues को छोड़ देती हैं। उन्हें prompt और valueType से render करें। प्रत्येक खुले टास्क में एक dueAt टाइमस्टैम्प शामिल होता है। जब Swipelux बिना किसी स्पष्ट नियत तिथि के टास्क बनाता है, तो dueAt डिफ़ॉल्ट रूप से टास्क के createdAt के ठीक 31 दिन बाद सेट होता है। dueAt को केवल सूचनात्मक मानें: आप इसे API के माध्यम से सेट नहीं कर सकते, और यह कोई स्वचालित लाइफ़साइकल ट्रांज़िशन ट्रिगर नहीं करता। केवल अलग deadline फ़ील्ड, यदि मौजूद हो, स्वचालित ट्रांज़िशन का कारण बनता है।

Hosted actions

Task-detail response में verificationSessions और tosSessions की प्रत्येक entry में action object शामिल होता है। Task-list responses में ये action links शामिल नहीं होते। प्रत्येक session का id store करें, फिर customer को भेजने से पहले action.kind पढ़ें; session के status से link की उपलब्धता का अनुमान न लगाएँ।
  • action.kind: "available" में action.url और action.expiresAt शामिल होते हैं (वर्तमान में हमेशा null)। action.url store करें, customer को उस पर भेजें, फिर task को दोबारा पढ़ें। Session-level url और expiresAt fields में वही values होती हैं।
  • action.kind: "unavailable" का अर्थ है कि कोई link नहीं दिखाया जाना चाहिए। Session-level url और expiresAt fields मौजूद नहीं होते। Session का status अकेले यह तय नहीं करता कि आपको कौन सा action kind मिलेगा।
Verification session
ये task-scoped actions हैं, अलग customer-verification lifecycle नहीं। किसी structured value, जैसे address या tax identifiers, की profile requirement के hosted answer को direct answer वाले ही schema और constraint checks पास करने होंगे। ऐसा न होने पर requirement open रहती है। जिस requirement को Swipelux इस कारण action_required पर लौटाता है, उसमें reviewFeedback.code: hosted_profile_direct_submission_required होता है। Customer से वह value लें और उसे API answer के रूप में submit करें।

Documents upload करें

जब कोई requirement एक document का अनुरोध करता है, तो उसे POST /v3/customers/{customerId}/documents के साथ upload करें:
Upload document
Answer submit करने से पहले जो इसे संदर्भित करता है, लौटाए गए data.id को DOCUMENT_ID के रूप में संग्रहीत करें। किसी संग्रहीत फ़ाइल को बाद में प्राप्त करने के लिए, GET /v3/customers/{customerId}/documents/{documentId}/download कॉल करें। Swipelux एक url लौटाता है जो फ़ाइल को attachment के रूप में download करता है और एक घंटे बाद समाप्त हो जाता है। Archived documents 404 लौटाते हैं।

API answers

वर्तमान revision के लिए एक पूर्ण answer set POST /v3/customers/{customerId}/tasks/{taskId}/submissions के साथ submit करें:
Submit task answers
प्रत्येक requirement ID और answer type नवीनतम task से लें। यदि API यह रिपोर्ट करता है कि task बदल गया है, तो इसे पुन: प्राप्त करें और नए revision से submission को फिर से बनाएँ।

Businesses के लिए beneficial-owner पूर्वापेक्षा

ऐसी business capability का अनुरोध करना जिसे beneficial-owner evidence की आवश्यकता है, तब भी सफल होता है जब customer के पास अभी तक कोई qualifying owner नहीं है। Capability restricted के रूप में statusReason.code: tasks_due के साथ बनाई जाती है, और business intake task छूटे हुए ownership facts का अनुरोध करता है, जिसमें ownership structure शामिल है। वही task एक resource_reference requirement रखता है जिसके request में qualification: "beneficial_owner" शामिल है:
Beneficial owner requirement
एक related party तब qualify करती है जब वह उसी customer की एक active person party हो जिसका supplied ownership percentage कम से कम 25 हो, या जिसके पास ownership.declared: true हो और कोई percentage न दिया गया हो। यह requirement वर्तमान related-party roster से derive होता है, इसलिए आप आमतौर पर इसका सीधे उत्तर नहीं देते:
  • एक qualifying related party बनाना या अपडेट करना उसी reevaluation में requirement को पूरा करता है और उस owner के अपने profile और document work को खोलता है। Business related parties जोड़ें देखें।
  • आप एक resource_reference answer के साथ, जो उसका relatedPartyId रखता है, किसी qualifying party को स्पष्ट रूप से reference भी कर सकते हैं।
  • पूरा होने के बाद भी requirement वर्तमान task में सूचीबद्ध रहता है। जब कोई अन्य obligation खुला नहीं रहता, तो task satisfied हो जाता है।
  • आखिरी qualifying party को archive करना, या उसे qualify करने वाले facts को हटाना, requirement को फिर से खोल देता है, भले ही task satisfied हो चुका हो।

जब capability तैयार हो तो जारी रखें

Capability को GET /v3/customers/{customerId}/capabilities/{capabilityId} के साथ फिर से पढ़ें:
Refetch capability
संग्रहीत status, account-provisioning status, और task IDs को नवीनतम response से बदलें। Capability status रिपोर्ट करता है कि entitlement approve हुआ है या नहीं। Account जारी करने वाली capability के लिए, accountProvisioning अलग से रिपोर्ट करता है कि वह account not_started, in_progress, issued, या failed है; जो capability account जारी नहीं करती वह not_applicable लौटाती है। जब capability pending होती है, तो वह जो statusReason.code values report कर सकती है, उनमें से दो यह दिखाती हैं कि review चल रहा है या नहीं। preparing_submission का अर्थ है कि Swipelux अभी भी submission के लिए application तैयार कर रहा है और कोई review नहीं चल रहा, भले ही किसी दूसरे bank का application rejected हो या उस पर ध्यान देने की ज़रूरत हो। review_in_progress का अर्थ है कि review चल रहा है, उदाहरण के लिए जब कोई application in_review हो या कोई hosted verification खुला हो। दोनों resolution: wait का उपयोग करते हैं। इन codes के बीच बदलाव status को pending ही रखता है, इसलिए कोई capability.status_changed event नहीं भेजा जाता। मौजूदा code देखने के लिए capability पढ़ें। केवल तब जारी रखें जब वर्तमान capability status उस account, quote, या transfer की अनुमति देती है जिसे आप बनाने का इरादा रखते हैं। जब flow को issued account की आवश्यकता हो, तो accountProvisioning के issued होने की भी प्रतीक्षा करें। आगे, Common flows में मेल खाती यात्रा चुनें।