Added

πŸš€ Release #1 - V1.1.0

πŸ“š

New API reference v1.1.0 β€”

https://mipisepaymentservices.readme.io/v1.1/reference/introduction


This release brings major enrichments to the User, Person and Address resources to support enhanced KYC/KYB, AML/CFT (LCB-FT), UBO and FATCA/CRS
requirements. It also introduces automatic credit card commissions, outbound webhook signatures and new webhook events.


πŸ“‹ At a glance

CategoryHighlights
πŸ†• New endpointsList / create / read persons under a user
πŸ†” New person fieldsUBO data, full LCB-FT profile, FATCA/CRS, structured address
πŸ‘€ New user fieldsvalidation_status, qualified_at
πŸ’³ PaymentsAuto-charged commission on credit card pay-ins, card brand returned
πŸ”” WebhooksHMAC signatures, JSON delivery, 3 new event types
⚠️ BreakingDOCUMENT_FALSIFIED β†’ COMPLIANCE_REASON

⚠️ Breaking changes

🚫 Document rejection reason β€” DOCUMENT_FALSIFIED removed

The reject reason DOCUMENT_FALSIFIED has been replaced by the broader COMPLIANCE_REASON. New rejections will no longer use the old value.

- DOCUMENT_FALSIFIED
+ COMPLIANCE_REASON
πŸ”§

Action required β€” Update any client filtering or branching on rejection reasons. The change applies to the reject_reasons enum returned on document detail and document list endpoints.


✨ New features

πŸ†” UBO digitalization

Persons (Ultimate Beneficial Owners and legal representatives) can now be managed through dedicated REST endpoints. UBO information is carried in a new structured role_data object on natural persons.

πŸ“ New endpoints

MethodPathPurpose
GET/platforms/{platformUUID}/users/{userUUID}/personsList persons linked to a user
POST/platforms/{platformUUID}/users/{userUUID}/personsCreate one or more persons for a user
GET/platforms/{platformUUID}/users/{userUUID}/persons/{personUUID}Retrieve a single person

🧬 role_data object β€” natural persons only

FieldTypeI/ODescription
rolesstring[]in / outSubset of ["ubo", "legal_representative"]
ubo_prctnumberin / outPercentage of beneficial ownership held by the person
ubo_by_controlbooleanin / outUBO by effective control over the linked legal person
ubo_is_indirectbooleanin / outUBO via shares held in an intermediate legal person
ubo_end_datedatein / outDate on which the UBO status ends (cannot be in the future)
ubo_start_datedateπŸ”’ out onlyDate on which the UBO status started β€” set automatically by the server when the person is flagged as UBO

🏠 Address β€” structured street components

Three new structured fields are now exposed on the address payload:

  • πŸ”’ number β€” street number (e.g. "123")
  • πŸ›£οΈ road_type β€” street category ("road", "street", "boulevard", …)
  • 🏷️ road_name β€” street name
βœ…

Backward compatible β€” nothing breaks today. address_line1 is still accepted on input and still returned on output alongside the new fields. Existing clients keep working for creating, updating and reading addresses, and no validation currently enforces the structured form.

πŸ“…

Future direction. The structured fields are intended to replace address_line1. A grace period is in place so platforms can migrate at their own pace; once it ends, address_line1 will be deprecated and the structured form will become required for KYC/KYB. Start populating number / road_type / road_name in your integrations now to be ready.


πŸͺͺ LCB-FT user enrichment

A wide set of fields previously unavailable through the API has been opened on persons to support reinforced due-diligence requirements. All fields are accepted on creation and update, and returned in person responses.

πŸ‘₯ Common fields (all person types)

  • πŸ’° annual_revenue β€” enum of revenue ranges (natural_inf_30000 … legal_sup_50000000)
  • πŸ’Ό financial_capacity β€” enum of wealth ranges (natural_inf_50000 … legal_sup_20000000)
  • 🌍 country_of_origin β€” ISO 3166-1 alpha-2
  • πŸ’΅ source_of_funds β€” salary_or_professional_income / personal_savings_or_available_funds / capital_income / asset_sale / inheritance_or_donation /
    external_financing / capital_contribution_or_fundraising / other_or_not_disclosed
  • ✏️ origin_of_funds_other β€” free text used when source_of_funds = other_or_not_disclosed
  • 🌐 tax_country_code_1 / _2 / _3 β€” ISO 3166-1 alpha-2
  • πŸ”’ tin_code_1 / _2 / _3 β€” Tax Identification Number for the matching tax country
  • πŸ“ no_tin_reason_1 / _2 / _3 β€” alternative to tin_code_* when no TIN is held
  • ⭐ is_primary_1 / _2 / _3 β€” flags the main tax country
  • 🀝 is_intermediated_by_third_party β€” required to validate the user's wallet

πŸ‘€ Natural-person only

  • πŸ‘‹ civility β€” mr / mrs / no_gender / unknown
  • πŸ“ž phone_number β€” phone with country code
  • πŸ’Ό professional_situation β€” French PCS-2020 code
  • πŸ™οΈ birth_city, birth_province β€” birth location (birth_province enum covers US states, Canadian provinces and Mexican states; required when birth country is US/CA/MX)

🏒 Legal-person only

  • πŸ“‚ legal_classification_code β€” French INSEE legal classification
  • 🏷️ activity_classification_code β€” French INSEE activity classification (NAF)
  • πŸ“… registration_date
  • πŸ†” registration_number β€” French RCS number (alternative to rna)
  • πŸ†” rna β€” French RNA association number (alternative to registration_number)

πŸ‡ΊπŸ‡Έ FATCA / CRS compliance data

Persons can now carry FATCA and CRS compliance information.

πŸ’‘

Optional during this release to give agents time to comply. They will become required for KYC/KYB validation in a future release.

πŸ“₯ Request format β€” nested under a fatca_crs_data object (depending on the person type):

{
  "type": "Persons::Natural",                                                                                                                                                     
  "fatca_crs_data": {
    "us_citizen_or_resident": false                                                                                                                                               
  }             
}
{
  "type": "Persons::Legal",
  "fatca_crs_data": {                                                                                                                                                             
    "us_legal_us_person": false,
    "is_fatca_fi": false,                                                                                                                                                         
    "is_registered_fatca_fi": false,
    "giin": "98Q96B.00000.LE.250",                                                                                                                                                
    "is_nffe_fatca_active": true,
    "is_nffe_fatca_passive": false,                                                                                                                                               
    "is_crs_fi": false,
    "is_nffe_crs": true                                                                                                                                                           
  }
}                                                                                                                                                                                 

πŸ“€ Response format β€” the same fields are returned flat at the top level of the person object (not nested under fatca_crs_data).

πŸ”— Conditional rules

  • is_registered_fatca_fi is required when is_fatca_fi = true
  • giin is required when is_registered_fatca_fi = true

🟒 User qualification status

The user response now exposes the user's compliance lifecycle.

FieldDescription
validation_statusvalidated or not_validated
qualified_atDate-time at which the user reached the qualified state (validated + additional verifications passed)
πŸ””

A new webhook event accompanies this lifecycle: user_qualified (see Webhook events below). The pre-existing user_dequalified event remains unchanged.


πŸ’³ Credit card commissions

A commission is now automatically charged on credit card pay-ins, based on the platform's commission settings configured by Mipise.

πŸ› οΈ For API consumers

  • βœ… No request changes β€” the commission is computed and applied server-side. Your existing pay-in payloads keep working.
  • πŸ”” New webhook events β€” commission_failed and commission_successful allow you to track each commission outcome (see Webhook events below). The commission is delivered as its own financial request of subtype PaymentCommission, separate from the originating pay-in.
  • πŸ“¦ New response field on credit card pay-ins β€” monext_credit_card_type: brand of the card used ("VISA", "MASTERCARD", "CB", …).

πŸ” Webhook signatures and JSON delivery

Webhook deliveries can now be signed and emitted as JSON.

πŸ” HMAC SHA-256 signature

When a signing secret is configured for the platform (managed from the events subscriptions back-office page: generate / regenerate / delete), every notification carries:

X-Mps-Event-Signature: sha256=<hex_digest>                                                                                                                                        
βš™οΈ

The signature is always computed over the JSON serialization of the notification body β€” regardless of the subscription's transport format.

βœ… To verify a notification

  1. Compute the HMAC SHA-256 of the JSON-encoded notification body using your secret.
  2. Compare the resulting hex digest to the value after sha256=.
  3. Reject mismatched or missing signatures whenever a secret is configured.

πŸ“¦ Notification format

Subscriptions now expose a request_format:

  • πŸ“ form_data (default, backward-compatible) β€” application/x-www-form-urlencoded
  • 🧾 json β€” application/json

πŸ“¨ Notification payload

FieldTypeDescription
iduuidUnique identifier of the notification
event_typestringSubscribed event name
platform_iduuidPlatform that triggered the event
target_iduuidResource concerned by the event
target_typestringClass of the resource (e.g. Financial::Request)
πŸ“¬

The endpoint must respond with HTTP 200 to acknowledge delivery.


πŸ”” New webhook events

The following event types can now be subscribed to:

EventTrigger
commission_failedA credit card commission failed to settle
commission_successfulA credit card commission was successfully settled
user_qualifiedA user reached the qualified state

πŸ“ Documentation alignment

The API reference has been aligned with the actual API behavior on a few fields that were already shipped in earlier releases but were still documented under their previous names:

Documented now asWas previously documented asWhere
person_signatory_uuidperson_representative_uuidUser response
user_signatoryuser_representativePerson body
βœ…

If your client was already integrated against the live API, no change is required on your side β€” these fields have been returned under their new names for several
months.


πŸ”— Reference