Sokin Embedded API
  1. Corporate Onboarding
Sokin Embedded API
  • Getting Started
    • Sokin Definitions
    • Guides
      • Authentication
      • Receiving Payments
      • FX Payments
      • Payments
      • Unfunded Payments
      • Unfunded FX Payments
      • Corporate Onboarding
        • Data Requirements
        • Step 1: Create a corporate profile
        • Step 2: Add associates
        • Step 3: Add a parent entity (if applicable)
        • Step 4: Upload company documents
        • Step 5: Upload associate documents
        • Real-time Status Updates via Webhook
        • Conditional Step: Upload Parent Entity documents (if applicable)
        • Step 6: Finalise onboarding submission
        • Uploading supporting documents using Pre-signed URLs
        • Onboarding Reference Data
        • Onboarding Models
          • Data-Only model
          • Supported Jurisdictions & National ID Requirements
      • Payments Reference Data
        • Purpose of Payment
        • Transfer Reasons
        • Beneficiary Fields
  • Authentication
    • Get Token
      POST
    • Get Token on behalf of corporate
      POST
    • Schemas
      • TokenResponse
  • Corporates
    • v2025-12-01
      • Create a new Corporate
      • Add a parent entity (corporate associate) to an onboarding request
      • Add an associate to a corporate onboarding request
      • Request pre-signed URLs for onboarding document uploads
      • Request pre-signed URLs for parent entity document uploads
      • Request pre-signed URLs for associate document uploads
      • Finalise corporate onboarding submission
    • Schemas
      • NumericRange
      • ApiResponse[AddIndividualAssociateResponse]
      • ApiResponse[AddAssociateDocumentsResponse]
      • ApiResponse[AddOnboardingDocumentsResponse]
      • AddOnboardingDocumentsResponse
      • AssociateDocumentPresignedUrlResponse
      • AssociateType
      • ErrorResponse
      • MessageResponse
      • FinaliseSubmissionResponse
      • AddParentEntityRequest
      • MoneyRange
      • AddOnboardingDocumentsRequest
      • ApiResponse[CreateCorporateResponse]
      • CreateCorporateRequest
      • CreateCorporateResponse
      • FinaliseSubmissionRequest
      • PresignedUrlResponse
      • AddressTypeEnum
      • OwnershipType
      • AddAssociateDocumentsResponse
      • ErrorDetail
      • AddIndividualAssociateRequest
      • UboDetails
      • AddParentEntityResponse
      • AddIndividualAssociateResponse
      • CorporateAssociateType
      • AddParentEntityDocumentsRequest
      • AssociateDocumentPresignedUrlResponseItem
      • ApiResponse[AddParentEntityResponse]
      • AssociateIdentityType
      • AddAssociateDocumentsRequest
  • Corporate Currency Accounts
    • v2025-12-01
      • Get Corporate Currency Accounts
      • Get Corporate Currency Account By Reference
    • Schemas
      • ErrorResponse
      • PaginationInfo
      • ErrorDetail
      • ApiResponse[GetCCAByReferenceResponse]
      • GetCCAByReferenceResponse
      • GetCCAByReferenceResponsePayInDetail
      • GetCCAsResponseItem
      • PaginatedApiResponse[GetCCAsResponseItem]
  • Beneficiaries
    • v2025-12-01
      • Get Beneficiary Fields
      • Create External Beneficiary
      • Get Beneficiary List
      • Get Beneficiary Details
      • Delete Beneficiary
    • Schemas
      • ErrorResponse
      • FieldType
      • IdentifierType
      • TransactionTypeEnum
      • BeneficiaryType
      • AccountType
      • ApiResponse[BeneficiaryDetails]
      • ApiResponse[CreateExternalBeneficiaryData]
      • ApiResponse[DeleteBeneficiaryData]
      • ApiResponse[GetBeneficiaryFieldsResponse]
      • BeneficiaryField
      • BeneficiaryListItem
      • CreateExternalBeneficiaryData
      • CreateExternalBeneficiaryRequest
      • DeleteBeneficiaryData
      • GetBeneficiaryFieldsResponse
      • PaginatedApiResponse[BeneficiaryListItem]
      • StateOrProvince
      • PaginationInfo
      • PaginatedBeneficiaryFieldsResponse
      • ErrorDetail
      • BeneficiaryDetails
  • Instruction Requests
    • v2025-12-01
      • Get Instruction Request By Reference
      • Create Payment Instruction Request
      • Create Fx Instruction Request
      • Create Fx Payment Instruction Request
      • Create Unfunded Payment Instruction Request
      • Create Unfunded Fx Payment Instruction Request
    • Schemas
      • ErrorResponse
      • ApiResponse[CreateInstructionRequestResponse]
      • ErrorDetail
      • ApiResponse[GetInstructionRequestResponse]
      • CreateFXInstructionRequest
      • CreateFxPaymentInstructionRequest
      • CreateInstructionRequestResponse
      • CreatePaymentInstructionRequest
      • CreateUnfundedFxPaymentInstructionRequest
      • CreateUnfundedPaymentInstructionRequest
      • GetInstructionRequestResponse
  • Instructions
    • v2025-12-01
      • Get Instruction By Reference
    • Schemas
      • ErrorDetail
      • ErrorResponse
      • ApiResponse[GetInstructionResponse]
      • GetInstructionResponse
  • Foreign Exchange
    • v2025-12-01
      • Get Fx Rate
    • Schemas
      • ErrorResponse
      • FxRateData
      • FixedSide
      • ApiResponse[FxRateData]
      • ErrorDetail
      • FxRateRequest
  • Webhooks
    • Webhooks
    • v2025-12-01
      • Create Subscription
      • Update Subscription Status
      • Update Subscription
      • Delete Subscription
      • Get Subscription By Id
      • List Notification Logs
      • Retry Notification
    • Schemas
      • ApiResponse[CreateSubscriptionResponse]
      • NotificationStatus
      • ApiResponse[NotificationLogList]
      • NotificationAttemptResponse
      • ApiResponse[UpdateSubscriptionResponse]
      • NotificationLogList
      • ErrorResponse
      • NotificationLogResponse
      • SubscriptionCreateOrUpdate
      • SubscriptionStatusUpdate
      • CreateSubscriptionResponse
      • UpdateSubscriptionResponse
      • InstructionCreated
      • ErrorDetail
      • InstructionReqeustRejected
      • InstructionProcessedWebhook
      • InstructionRejectedWebhook
      • OnboardingRequestApproved
      • OnboardingRequestRejected
      • CorporateActivated
      • CorporateDeactivated
      • CorporateCurrencyAccountFundingReceived
      • WebhookSubscription
      • WebhookNotificationLogs
  1. Corporate Onboarding

Uploading supporting documents using Pre-signed URLs

This guide explains how to request and use pre-signed URLs to upload supporting documents during corporate onboarding.
Document uploads apply to:
Corporate (onboarding-level) documents
Individual associate documents
Parent entity documents
Parent entity associate documents
All uploads follow the same two-stage process:
Request pre-signed URLs
Upload files directly using those URLs

1. Request pre-signed URLs#

Sokin provides separate APIs depending on what type of document you are uploading. Each endpoint requires a specific identifier and returns pre-signed URLs tailored to that entity.

A) Corporate (Onboarding-Level) Documents#

Endpoint
POST /corporates/documents
Use this endpoint to request upload URLs for corporate documents required during onboarding.
Typical document types
Certificate of Incorporation
Articles of Association
Due Diligence Bundle
Other compliance-related documents
Required inputs
corporateExternalReference
The unique ID of the onboarding application
documentType
Valid values:
Certificate of Incorporation
Articles of Association
Due Diligence Bundle
Others
noOfDocuments
Number of files to upload (1–5)
For Due Diligence Bundle, only 1 ZIP file is allowed
contentType
application/pdf or pdf
image
zip (Due Diligence Bundle only)
If documentType = Others, you must also provide otherDocumentType.

Response structure#

The response returns:
A list of pre-signed URLs (urls)
One URL per file requested
Each URL:
Is valid for 10 minutes
Allows one file upload
Accepts files up to 20 MB

B) Associate Documents (Individual)#

Endpoint
POST /corporates/associates/documents
Use this endpoint to request upload URLs for associate identity and address verification documents.
Required inputs
associateId
The ID returned when the associate was created
idType
Valid values:
Passport
Driver’s License
Identity Card
SSN
Residence Permit
idContentType
application/pdf, pdf, or image
Optional fields may include:
idNumber
issuedCountry
idExpiryDate
addressType
addressContentType
documentName

Response structure#

The response includes:
status
success
message
presignedResponse (contains upload details)
The system generates URLs based on the selected idType and addressType.
For example:
If idType = Passport, only a front image upload URL is generated.
Address proof URLs are generated only if addressType is provided and required.
Each URL:
Is valid for 10 minutes
Allows one upload
Accepts PDF or image files up to 20 MB
All files must be linked to a valid associateId.

C) Parent Entity Documents#

Endpoint
POST /corporates/parent-entities/documents
Use this endpoint to request upload URLs for Parent Entity (corporate associate) documents.
Accepted document types
Certificate of Incorporation
Articles of Association
List of Directors
Structure Chart
Required inputs
corporateAssociateId
The ID returned when the Parent Entity was created
corporateExternalReference
To ensure correct linkage to the onboarding session
documentType
noOfDocuments (1–5 files)
contentType (application/pdf, pdf, or image)

Response structure#

The response includes:
A list of pre-signed URLs (urls)
One URL per file requested
Each URL:
Is valid for 10 minutes
Allows one upload
Accepts files up to 20 MB
All files must be linked to a valid corporateAssociateId.

2. Upload files using pre-signed URLs#

After receiving the pre-signed URLs, you must upload files directly to the storage service using those URLs.
For each URL:
Perform a POST request directly to the provided URL
Include all fields and parameters exactly as returned in the response
Attach the file to the file field
Ensure the file meets size and format requirements
Each URL:
Can only be used once
Will overwrite the previous file if reused
Expires after 10 minutes
A 204 No Content response indicates a successful upload.
A 400 Bad Request typically indicates the URL has expired.
If a URL expires, you must request a new one.

File requirements#

All uploads must:
Be under 20 MB
Match the declared content type
Match the declared document type
Supported formats:
PDF
PNG
JPG
JPEG
ZIP (Due Diligence Bundle only)

Important considerations#

Uploading files does not finalise onboarding.
All required documents must be uploaded before submission.
Missing or incorrectly uploaded documents may delay review and approval.
Document requirements vary based on the assigned due diligence model and ownership structure.

After document upload#

Once all required documents are successfully uploaded:
Review onboarding completeness
Finalise the onboarding request
Monitor status updates during review
Refer to:
Finalise onboarding guide
Modified at 2026-02-19 10:43:09
Previous
Step 6: Finalise onboarding submission
Next
Onboarding Reference Data
Built with