pi-spi-sdk 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +23 -1
  3. package/dist/chunk-7W56NW2S.mjs +2066 -0
  4. package/dist/generated-FM5EVVHH.mjs +84 -0
  5. package/dist/index.cjs +4754 -0
  6. package/dist/index.d.cts +4940 -0
  7. package/dist/index.d.ts +4937 -12
  8. package/dist/index.mjs +2359 -0
  9. package/dist/index.umd.js +2 -0
  10. package/dist/qrcode/index.cjs +757 -0
  11. package/dist/qrcode/index.d.cts +68 -0
  12. package/dist/qrcode/index.d.ts +20 -14
  13. package/dist/qrcode/index.mjs +712 -0
  14. package/package.json +24 -8
  15. package/dist/config.d.ts +0 -35
  16. package/dist/config.js +0 -5
  17. package/dist/error-handler.d.ts +0 -7
  18. package/dist/error-handler.js +0 -55
  19. package/dist/errors.d.ts +0 -25
  20. package/dist/errors.js +0 -48
  21. package/dist/examples.d.ts +0 -8
  22. package/dist/examples.js +0 -93
  23. package/dist/generated/core/ApiError.d.ts +0 -10
  24. package/dist/generated/core/ApiError.js +0 -15
  25. package/dist/generated/core/ApiRequestOptions.d.ts +0 -13
  26. package/dist/generated/core/ApiRequestOptions.js +0 -2
  27. package/dist/generated/core/ApiResult.d.ts +0 -7
  28. package/dist/generated/core/ApiResult.js +0 -2
  29. package/dist/generated/core/CancelablePromise.d.ts +0 -20
  30. package/dist/generated/core/CancelablePromise.js +0 -116
  31. package/dist/generated/core/OpenAPI.d.ts +0 -16
  32. package/dist/generated/core/OpenAPI.js +0 -14
  33. package/dist/generated/core/request.d.ts +0 -34
  34. package/dist/generated/core/request.js +0 -292
  35. package/dist/generated/index.d.ts +0 -78
  36. package/dist/generated/index.js +0 -86
  37. package/dist/generated/models/AliasCreationReponse.d.ts +0 -22
  38. package/dist/generated/models/AliasCreationReponse.js +0 -2
  39. package/dist/generated/models/AliasCreationRequest.d.ts +0 -11
  40. package/dist/generated/models/AliasCreationRequest.js +0 -2
  41. package/dist/generated/models/AliasReponseListe.d.ts +0 -26
  42. package/dist/generated/models/AliasReponseListe.js +0 -2
  43. package/dist/generated/models/AnnulationStatut.d.ts +0 -13
  44. package/dist/generated/models/AnnulationStatut.js +0 -21
  45. package/dist/generated/models/Champs.d.ts +0 -1
  46. package/dist/generated/models/Champs.js +0 -2
  47. package/dist/generated/models/CompteOperation.d.ts +0 -72
  48. package/dist/generated/models/CompteOperation.js +0 -27
  49. package/dist/generated/models/CompteOperationListe.d.ts +0 -18
  50. package/dist/generated/models/CompteOperationListe.js +0 -2
  51. package/dist/generated/models/CompteSolde.d.ts +0 -129
  52. package/dist/generated/models/CompteSolde.js +0 -74
  53. package/dist/generated/models/CompteTransfertIntraReponse.d.ts +0 -33
  54. package/dist/generated/models/CompteTransfertIntraReponse.js +0 -15
  55. package/dist/generated/models/CompteTransfertIntraRequest.d.ts +0 -9
  56. package/dist/generated/models/CompteTransfertIntraRequest.js +0 -2
  57. package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.d.ts +0 -14
  58. package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.js +0 -22
  59. package/dist/generated/models/DemandePaiementConfirmationReponse.d.ts +0 -41
  60. package/dist/generated/models/DemandePaiementConfirmationReponse.js +0 -16
  61. package/dist/generated/models/DemandePaiementConfirmationRequest.d.ts +0 -3
  62. package/dist/generated/models/DemandePaiementConfirmationRequest.js +0 -2
  63. package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.d.ts +0 -9
  64. package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.js +0 -2
  65. package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.d.ts +0 -9
  66. package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.js +0 -2
  67. package/dist/generated/models/DemandePaiementConsultationReponse.d.ts +0 -151
  68. package/dist/generated/models/DemandePaiementConsultationReponse.js +0 -30
  69. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.d.ts +0 -3
  70. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.js +0 -2
  71. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.d.ts +0 -9
  72. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.js +0 -2
  73. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.d.ts +0 -9
  74. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.js +0 -2
  75. package/dist/generated/models/DemandePaiementEnMasseRequest.d.ts +0 -74
  76. package/dist/generated/models/DemandePaiementEnMasseRequest.js +0 -2
  77. package/dist/generated/models/DemandePaiementEnMasseStatutReponse.d.ts +0 -98
  78. package/dist/generated/models/DemandePaiementEnMasseStatutReponse.js +0 -23
  79. package/dist/generated/models/DemandePaiementListe.d.ts +0 -26
  80. package/dist/generated/models/DemandePaiementListe.js +0 -2
  81. package/dist/generated/models/DemandePaiementListeItem.d.ts +0 -163
  82. package/dist/generated/models/DemandePaiementListeItem.js +0 -30
  83. package/dist/generated/models/DemandePaiementReponse.d.ts +0 -129
  84. package/dist/generated/models/DemandePaiementReponse.js +0 -2
  85. package/dist/generated/models/DemandePaiementReponseRequest.d.ts +0 -21
  86. package/dist/generated/models/DemandePaiementReponseRequest.js +0 -14
  87. package/dist/generated/models/DemandePaiementRequest.d.ts +0 -98
  88. package/dist/generated/models/DemandePaiementRequest.js +0 -10
  89. package/dist/generated/models/DemandePaiementRequestBase.d.ts +0 -42
  90. package/dist/generated/models/DemandePaiementRequestBase.js +0 -2
  91. package/dist/generated/models/DemandePaiementRequestCategorie.d.ts +0 -12
  92. package/dist/generated/models/DemandePaiementRequestCategorie.js +0 -20
  93. package/dist/generated/models/DemandePaiementStatut.d.ts +0 -13
  94. package/dist/generated/models/DemandePaiementStatut.js +0 -21
  95. package/dist/generated/models/DemandePaiementStatutRaison.d.ts +0 -46
  96. package/dist/generated/models/DemandePaiementStatutRaison.js +0 -54
  97. package/dist/generated/models/ListeMeta.d.ts +0 -14
  98. package/dist/generated/models/ListeMeta.js +0 -2
  99. package/dist/generated/models/Paiement.d.ts +0 -156
  100. package/dist/generated/models/Paiement.js +0 -31
  101. package/dist/generated/models/PaiementAnnulationMotif.d.ts +0 -17
  102. package/dist/generated/models/PaiementAnnulationMotif.js +0 -25
  103. package/dist/generated/models/PaiementAnnulationReponseRequest.d.ts +0 -11
  104. package/dist/generated/models/PaiementAnnulationReponseRequest.js +0 -2
  105. package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.d.ts +0 -9
  106. package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.js +0 -2
  107. package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.d.ts +0 -9
  108. package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.js +0 -2
  109. package/dist/generated/models/PaiementAnnulationRequest.d.ts +0 -4
  110. package/dist/generated/models/PaiementAnnulationRequest.js +0 -2
  111. package/dist/generated/models/PaiementAnnulationStatutRaison.d.ts +0 -21
  112. package/dist/generated/models/PaiementAnnulationStatutRaison.js +0 -29
  113. package/dist/generated/models/PaiementEnMasseConfirmationRequest.d.ts +0 -3
  114. package/dist/generated/models/PaiementEnMasseConfirmationRequest.js +0 -2
  115. package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.d.ts +0 -9
  116. package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.js +0 -2
  117. package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.d.ts +0 -9
  118. package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.js +0 -2
  119. package/dist/generated/models/PaiementEnMasseReponseStatut.d.ts +0 -97
  120. package/dist/generated/models/PaiementEnMasseReponseStatut.js +0 -23
  121. package/dist/generated/models/PaiementEnMasseRequest.d.ts +0 -54
  122. package/dist/generated/models/PaiementEnMasseRequest.js +0 -2
  123. package/dist/generated/models/PaiementImmediatConfirmationReponse.d.ts +0 -31
  124. package/dist/generated/models/PaiementImmediatConfirmationReponse.js +0 -10
  125. package/dist/generated/models/PaiementImmediatConfirmationRequest.d.ts +0 -3
  126. package/dist/generated/models/PaiementImmediatConfirmationRequest.js +0 -2
  127. package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.d.ts +0 -9
  128. package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.js +0 -2
  129. package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.d.ts +0 -9
  130. package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.js +0 -2
  131. package/dist/generated/models/PaiementImmediatReponse.d.ts +0 -98
  132. package/dist/generated/models/PaiementImmediatReponse.js +0 -10
  133. package/dist/generated/models/PaiementImmediatRequest.d.ts +0 -13
  134. package/dist/generated/models/PaiementImmediatRequest.js +0 -2
  135. package/dist/generated/models/PaiementListe.d.ts +0 -6
  136. package/dist/generated/models/PaiementListe.js +0 -2
  137. package/dist/generated/models/PaiementRequest.d.ts +0 -33
  138. package/dist/generated/models/PaiementRequest.js +0 -2
  139. package/dist/generated/models/PaiementStatut.d.ts +0 -13
  140. package/dist/generated/models/PaiementStatut.js +0 -21
  141. package/dist/generated/models/PaiementStatutRaison.d.ts +0 -56
  142. package/dist/generated/models/PaiementStatutRaison.js +0 -64
  143. package/dist/generated/models/Problem7807.d.ts +0 -31
  144. package/dist/generated/models/Problem7807.js +0 -2
  145. package/dist/generated/models/RefDocType.d.ts +0 -38
  146. package/dist/generated/models/RefDocType.js +0 -46
  147. package/dist/generated/models/RetourStatut.d.ts +0 -13
  148. package/dist/generated/models/RetourStatut.js +0 -21
  149. package/dist/generated/models/RetourStatutRaison.d.ts +0 -25
  150. package/dist/generated/models/RetourStatutRaison.js +0 -33
  151. package/dist/generated/models/WebhookCreationRequest.d.ts +0 -14
  152. package/dist/generated/models/WebhookCreationRequest.js +0 -2
  153. package/dist/generated/models/WebhookCreationResponse.d.ts +0 -12
  154. package/dist/generated/models/WebhookCreationResponse.js +0 -2
  155. package/dist/generated/models/WebhookData.d.ts +0 -8
  156. package/dist/generated/models/WebhookData.js +0 -2
  157. package/dist/generated/models/WebhookEvent.d.ts +0 -191
  158. package/dist/generated/models/WebhookEvent.js +0 -45
  159. package/dist/generated/models/WebhookEventsList.d.ts +0 -13
  160. package/dist/generated/models/WebhookEventsList.js +0 -2
  161. package/dist/generated/models/WebhookList.d.ts +0 -13
  162. package/dist/generated/models/WebhookList.js +0 -2
  163. package/dist/generated/models/WebhookModificationRequest.d.ts +0 -4
  164. package/dist/generated/models/WebhookModificationRequest.js +0 -2
  165. package/dist/generated/models/WebhooksEvents.d.ts +0 -12
  166. package/dist/generated/models/WebhooksEvents.js +0 -20
  167. package/dist/generated/services/AliasService.d.ts +0 -63
  168. package/dist/generated/services/AliasService.js +0 -88
  169. package/dist/generated/services/ComptesService.d.ts +0 -64
  170. package/dist/generated/services/ComptesService.js +0 -90
  171. package/dist/generated/services/DemandeAnnulationService.d.ts +0 -84
  172. package/dist/generated/services/DemandeAnnulationService.js +0 -103
  173. package/dist/generated/services/DemandesDePaiementEnMasseService.d.ts +0 -161
  174. package/dist/generated/services/DemandesDePaiementEnMasseService.js +0 -193
  175. package/dist/generated/services/DemandesDePaiementService.d.ts +0 -123
  176. package/dist/generated/services/DemandesDePaiementService.js +0 -165
  177. package/dist/generated/services/NotificationService.d.ts +0 -80
  178. package/dist/generated/services/NotificationService.js +0 -136
  179. package/dist/generated/services/PaiementEnMasseService.d.ts +0 -159
  180. package/dist/generated/services/PaiementEnMasseService.js +0 -191
  181. package/dist/generated/services/PaiementImmediatService.d.ts +0 -135
  182. package/dist/generated/services/PaiementImmediatService.js +0 -180
  183. package/dist/generated/services/RetoursdeFondsService.d.ts +0 -28
  184. package/dist/generated/services/RetoursdeFondsService.js +0 -41
  185. package/dist/index.js +0 -72
  186. package/dist/qrcode/index.js +0 -541
  187. package/dist/qrcode/logo.d.ts +0 -3
  188. package/dist/qrcode/logo.js +0 -142
  189. package/dist/query-builder.d.ts +0 -91
  190. package/dist/query-builder.js +0 -191
  191. package/dist/sdk.d.ts +0 -104
  192. package/dist/sdk.js +0 -147
  193. package/dist/services/alias.d.ts +0 -76
  194. package/dist/services/alias.js +0 -80
  195. package/dist/services/base.d.ts +0 -20
  196. package/dist/services/base.js +0 -67
  197. package/dist/services/comptes.d.ts +0 -149
  198. package/dist/services/comptes.js +0 -162
  199. package/dist/services/demandes-annulation.d.ts +0 -97
  200. package/dist/services/demandes-annulation.js +0 -108
  201. package/dist/services/demandes-paiement-en-masse.d.ts +0 -33
  202. package/dist/services/demandes-paiement-en-masse.js +0 -44
  203. package/dist/services/demandes-paiement.d.ts +0 -148
  204. package/dist/services/demandes-paiement.js +0 -153
  205. package/dist/services/paiements-en-masse.d.ts +0 -152
  206. package/dist/services/paiements-en-masse.js +0 -157
  207. package/dist/services/paiements.d.ts +0 -135
  208. package/dist/services/paiements.js +0 -139
  209. package/dist/services/retours-fonds.d.ts +0 -94
  210. package/dist/services/retours-fonds.js +0 -104
  211. package/dist/services/webhooks.d.ts +0 -131
  212. package/dist/services/webhooks.js +0 -146
  213. package/dist/types/alias.d.ts +0 -64
  214. package/dist/types/alias.js +0 -78
  215. package/dist/utils/constants.d.ts +0 -93
  216. package/dist/utils/constants.js +0 -96
  217. package/dist/utils/index.d.ts +0 -60
  218. package/dist/utils/index.js +0 -126
@@ -0,0 +1,4940 @@
1
+ declare const PISPI_AMBER_LOGO_DATA_URL: string;
2
+ declare const PISPI_QRCODE_LOGO_DATA_URL: string;
3
+ declare const DEFAULT_PISPI_LOGO_DATA_URL: string;
4
+
5
+ type QrType = 'STATIC' | 'DYNAMIC';
6
+ interface QrPayloadInput {
7
+ alias: string;
8
+ countryCode: string;
9
+ qrType: QrType;
10
+ referenceLabel: string;
11
+ amount?: number | string;
12
+ }
13
+ interface AdditionalDataOverrides {
14
+ merchantChannel?: string;
15
+ purposeOfTransaction?: string;
16
+ /**
17
+ * Free form additional data embedded inside template 62 (id => value)
18
+ * Keys must be 2-digit strings according to EMV specification.
19
+ */
20
+ custom?: Record<string, string>;
21
+ }
22
+ interface QrPayloadOptions {
23
+ /**
24
+ * Override default Additional Data tags.
25
+ */
26
+ additionalData?: AdditionalDataOverrides;
27
+ }
28
+ interface QrPayloadResult {
29
+ payload: string;
30
+ }
31
+ interface QrValidationResult {
32
+ valid: boolean;
33
+ errors: string[];
34
+ data?: QrPayloadInput;
35
+ }
36
+ interface QrCodeSvgOptions {
37
+ size?: number;
38
+ margin?: number;
39
+ logoDataUrl?: string;
40
+ logoSizeRatio?: number;
41
+ logoPaddingRatio?: number;
42
+ logoBackgroundColor?: string;
43
+ logoBorderRadiusRatio?: number;
44
+ dotColor?: string;
45
+ backgroundColor?: string;
46
+ }
47
+ /**
48
+ * Génère la payload EMV conforme PI-SPI pour un QR Code.
49
+ */
50
+ declare function createQrPayload(input: QrPayloadInput, options?: QrPayloadOptions): QrPayloadResult;
51
+ declare function computeCrc16(input: string): string;
52
+ declare function buildPayloadString(params: QrPayloadInput, options?: QrPayloadOptions): string;
53
+ declare function generateQrCodeSvg(input: QrPayloadInput, options?: QrCodeSvgOptions): Promise<string>;
54
+ declare const QRCode: {
55
+ createQrPayload: typeof createQrPayload;
56
+ buildPayloadString: typeof buildPayloadString;
57
+ computeCrc16: typeof computeCrc16;
58
+ generateQrCodeSvg: typeof generateQrCodeSvg;
59
+ isValidPispiQrPayload: typeof isValidPispiQrPayload;
60
+ payload: typeof buildPayloadString;
61
+ svg: typeof generateQrCodeSvg;
62
+ validate: typeof isValidPispiQrPayload;
63
+ raw: typeof createQrPayload;
64
+ };
65
+
66
+ declare function isValidPispiQrPayload(value: string): QrValidationResult;
67
+
68
+ /**
69
+ * Error handler utility for converting API errors to SDK errors
70
+ */
71
+ /**
72
+ * Convert a generated API error to a SDK error
73
+ */
74
+ declare function handleApiError(error: unknown): never;
75
+
76
+ /**
77
+ * PI-SPI SDK Configuration
78
+ */
79
+ interface PiSpiConfig {
80
+ /**
81
+ * Base URL for the PI-SPI API
82
+ * @default 'https://sandbox.api.pi-bceao.com/piz/v1'
83
+ */
84
+ baseUrl?: string;
85
+ /**
86
+ * OAuth2 access token for authentication
87
+ */
88
+ accessToken: string;
89
+ /**
90
+ * Optional: undici/fetch dispatcher (e.g. mTLS Agent)
91
+ */
92
+ dispatcher?: unknown;
93
+ /**
94
+ * Optional: Client certificate path for mTLS
95
+ */
96
+ clientCert?: string;
97
+ /**
98
+ * Optional: Client key path for mTLS
99
+ */
100
+ clientKey?: string;
101
+ /**
102
+ * Optional: CA certificate path for mTLS
103
+ */
104
+ caCert?: string;
105
+ /**
106
+ * Optional: Additional headers to include in requests
107
+ */
108
+ headers?: Record<string, string>;
109
+ /**
110
+ * Optional: Request timeout in milliseconds
111
+ * @default 30000
112
+ */
113
+ timeout?: number;
114
+ }
115
+
116
+ /**
117
+ * Base service class with common error handling and HTTP request capability
118
+ */
119
+ interface ApiConfig {
120
+ BASE: string;
121
+ TOKEN?: string;
122
+ HEADERS?: Record<string, string>;
123
+ dispatcher?: unknown;
124
+ }
125
+ declare abstract class BaseService {
126
+ protected config: ApiConfig;
127
+ constructor(config: ApiConfig);
128
+ /**
129
+ * Wrap an async operation with error handling
130
+ */
131
+ protected execute<T>(operation: () => Promise<T>): Promise<T>;
132
+ /**
133
+ * Make an HTTP request
134
+ */
135
+ protected request<T>(method: string, path: string, body?: any, params?: Record<string, any>): Promise<T>;
136
+ }
137
+
138
+ /**
139
+ * Query builder utility for constructing filter, pagination, and sorting parameters
140
+ */
141
+ type FilterOperator = 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'contains' | 'notContains' | 'beginsWith' | 'endsWith' | 'exists';
142
+ interface QueryParams {
143
+ [key: string]: string | number | undefined;
144
+ }
145
+ declare class QueryBuilder {
146
+ private params;
147
+ private filters;
148
+ private sortField?;
149
+ private sortOrder;
150
+ /**
151
+ * Add a filter condition
152
+ * @param field - Field name to filter on
153
+ * @param operator - Filter operator (default: 'eq')
154
+ * @param value - Filter value
155
+ */
156
+ filter(field: string, operatorOrValue: FilterOperator | string | number | boolean, value?: string | number | boolean | string[]): this;
157
+ /**
158
+ * Add an equality filter (shorthand)
159
+ */
160
+ eq(field: string, value: string | number | boolean): this;
161
+ /**
162
+ * Add a "not equal" filter (shorthand)
163
+ */
164
+ ne(field: string, value: string | number | boolean): this;
165
+ /**
166
+ * Add a "greater than" filter (shorthand)
167
+ */
168
+ gt(field: string, value: string | number): this;
169
+ /**
170
+ * Add a "greater than or equal" filter (shorthand)
171
+ */
172
+ gte(field: string, value: string | number): this;
173
+ /**
174
+ * Add a "less than" filter (shorthand)
175
+ */
176
+ lt(field: string, value: string | number): this;
177
+ /**
178
+ * Add a "less than or equal" filter (shorthand)
179
+ */
180
+ lte(field: string, value: string | number): this;
181
+ /**
182
+ * Add an "in" filter (shorthand)
183
+ */
184
+ in(field: string, values: string[]): this;
185
+ /**
186
+ * Add a "contains" filter (shorthand)
187
+ */
188
+ contains(field: string, value: string): this;
189
+ /**
190
+ * Set sort field and order
191
+ * @param field - Field to sort by
192
+ * @param order - Sort order ('asc' or 'desc', default: 'asc')
193
+ */
194
+ sort(field: string, order?: 'asc' | 'desc'): this;
195
+ /**
196
+ * Sort in descending order (shorthand)
197
+ */
198
+ sortDesc(field: string): this;
199
+ /**
200
+ * Set page number
201
+ */
202
+ page(page: number | string): this;
203
+ /**
204
+ * Set page size
205
+ */
206
+ size(size: number): this;
207
+ /**
208
+ * Add a custom parameter
209
+ */
210
+ param(key: string, value: string | number): this;
211
+ /**
212
+ * Build the query parameters object
213
+ */
214
+ build(): QueryParams;
215
+ /**
216
+ * Build query string
217
+ */
218
+ buildQueryString(): string;
219
+ /**
220
+ * Reset the builder
221
+ */
222
+ reset(): this;
223
+ private isOperator;
224
+ }
225
+
226
+ /**
227
+ * Accounts (Comptes) service wrapper
228
+ *
229
+ * Provides methods for managing accounts, viewing balances,
230
+ * listing operations, and performing intra-account transfers.
231
+ *
232
+ * @example
233
+ * ```typescript
234
+ * // Get account balance and details
235
+ * const account = await sdk.comptes.getAccount('CIC2344256727788288822');
236
+ * console.log('Balance:', account.solde); // Amount in centimes
237
+ * console.log('Status:', account.statut); // 'OUVERT', 'BLOQUE', or 'CLOTURE'
238
+ *
239
+ * // List operations with pagination
240
+ * const operations = await sdk.comptes.listOperations({
241
+ * comptePayeur: 'CIC2344256727788288822',
242
+ * page: 1,
243
+ * size: 20
244
+ * });
245
+ * ```
246
+ */
247
+
248
+ declare class ComptesService$1 extends BaseService {
249
+ /**
250
+ * Get account details and balance
251
+ *
252
+ * **Returns:**
253
+ * - Account type (CACC, SVGS, etc.)
254
+ * - Account number
255
+ * - Current balance (`solde` in centimes)
256
+ * - Account status (OUVERT, BLOQUE, CLOTURE)
257
+ * - Opening date
258
+ * - Pre-confirmation indicator
259
+ *
260
+ * @param numero - Account number (e.g., 'CIC2344256727788288822')
261
+ * @returns Account details including balance
262
+ * @throws {PiSpiNotFoundError} If account not found
263
+ * @throws {PiSpiAuthError} If authentication fails
264
+ *
265
+ * @example
266
+ * ```typescript
267
+ * const account = await sdk.comptes.getAccount('CIC2344256727788288822');
268
+ * // Returns: {
269
+ * // type: 'CACC',
270
+ * // numero: 'CIC2344256727788288822',
271
+ * // solde: 150000000, // 1,500,000 XOF in centimes
272
+ * // statut: 'OUVERT',
273
+ * // dateOuverture: '2023-02-21T15:30:01.250Z'
274
+ * // }
275
+ * ```
276
+ */
277
+ getAccount(numero: string): Promise<{
278
+ type?: string;
279
+ numero?: string;
280
+ solde?: number;
281
+ balance?: number;
282
+ statut?: string;
283
+ dateOuverture?: string;
284
+ }>;
285
+ /**
286
+ * List account operations (transactions)
287
+ *
288
+ * **Filtering Options:**
289
+ * - Filter by account number (`comptePayeur`, `comptePaye`)
290
+ * - Filter by status (`statut`: INITIE, ENVOYE, IRREVOCABLE, REJETE)
291
+ * - Filter by dates (`dateEnvoi`, `dateIrrevocabilite`)
292
+ * - Use QueryBuilder for advanced filtering
293
+ *
294
+ * @param params - Query parameters for filtering and pagination
295
+ * @param params.comptePayeur - Filter by payer account number
296
+ * @param params.comptePaye - Filter by payee account number
297
+ * @param params.statut - Filter by transaction status
298
+ * @param params.dateEnvoi - Filter by send date
299
+ * @param params.dateIrrevocabilite - Filter by irrevocability date
300
+ * @param params.page - Page number (default: 1)
301
+ * @param params.size - Page size (default: 20, max: 100)
302
+ * @returns Paginated list of operations
303
+ *
304
+ * @example
305
+ * ```typescript
306
+ * // List all operations for an account
307
+ * const operations = await sdk.comptes.listOperations({
308
+ * comptePayeur: 'CIC2344256727788288822',
309
+ * page: 1,
310
+ * size: 20
311
+ * });
312
+ *
313
+ * // Filter by status
314
+ * const completed = await sdk.comptes.listOperations({
315
+ * comptePayeur: 'CIC2344256727788288822',
316
+ * statut: 'IRREVOCABLE'
317
+ * });
318
+ * ```
319
+ */
320
+ listOperations(params?: QueryParams & {
321
+ comptePayeur?: string;
322
+ comptePaye?: string;
323
+ statut?: string;
324
+ dateEnvoi?: string;
325
+ dateIrrevocabilite?: string;
326
+ }): Promise<unknown>;
327
+ /**
328
+ * Transfer funds between accounts owned by the same client
329
+ *
330
+ * **Intra-Account Transfer:**
331
+ * - Transfers between accounts owned by the same legal entity
332
+ * - Accounts must be at the same financial institution
333
+ * - Can use account numbers or aliases
334
+ *
335
+ * **Transfer Methods:**
336
+ * - Using account numbers: `comptePayeur` and `comptePaye`
337
+ * - Using aliases: `payeurAlias` and `payeAlias`
338
+ *
339
+ * @param transfer - Transfer request details
340
+ * @param transfer.comptePayeur - Payer account number (if using account numbers)
341
+ * @param transfer.comptePaye - Payee account number (if using account numbers)
342
+ * @param transfer.payeurAlias - Payer alias (if using aliases)
343
+ * @param transfer.payeAlias - Payee alias (if using aliases)
344
+ * @param transfer.montant - Amount in centimes (e.g., 150000 = 1,500 XOF)
345
+ * @param transfer.motif - Transfer reason/description
346
+ * @param transfer.txId - Unique transaction ID (optional, auto-generated if not provided)
347
+ * @returns Transfer response with status
348
+ * @throws {PiSpiValidationError} If transfer fails validation
349
+ * @throws {PiSpiError} If account blocked or insufficient funds
350
+ *
351
+ * @example
352
+ * ```typescript
353
+ * // Transfer using account numbers
354
+ * await sdk.comptes.transfer({
355
+ * comptePayeur: 'CIC2344256727788288822',
356
+ * comptePaye: 'SNC2344256727788288822',
357
+ * montant: 150000, // 1,500 XOF
358
+ * motif: 'Transfert de fonds',
359
+ * txId: '23511722'
360
+ * });
361
+ *
362
+ * // Transfer using aliases
363
+ * await sdk.comptes.transfer({
364
+ * payeurAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
365
+ * payeAlias: '4r5ty499-3e50-435b-b757-ac7a83d67juio',
366
+ * montant: 150000,
367
+ * motif: 'Transfert entre comptes'
368
+ * });
369
+ * ```
370
+ */
371
+ transfer(transfer: {
372
+ comptePayeur?: string;
373
+ comptePaye?: string;
374
+ payeurAlias?: string;
375
+ payeAlias?: string;
376
+ montant: number;
377
+ motif?: string;
378
+ txId?: string;
379
+ }): Promise<unknown>;
380
+ }
381
+
382
+ /**
383
+ * Alias Types for PI-SPI
384
+ *
385
+ * The PI-SPI platform supports different types of account aliases:
386
+ *
387
+ * - **SHID**: A randomly generated 36-character unique payment address (UUID format).
388
+ * Generated by the system when created. Available for all client types (P, C, B, G).
389
+ * Example: `8b1b2499-3e50-435b-b757-ac7a83d8aa7f`
390
+ *
391
+ * - **MCOD**: Merchant code identifier for USSD payment support.
392
+ * Available for business clients only (C, B, G). Format: alphanumeric code.
393
+ * Example: `SNF00_2E4TY`
394
+ *
395
+ * - **MBNO**: Mobile phone number alias.
396
+ * Available for individual clients (P) only. Format: phone number.
397
+ * Example: `+221771234567`
398
+ *
399
+ * **Client Type Restrictions:**
400
+ * - Type P (Individuals): Can create MBNO and SHID aliases
401
+ * - Types C, B, G (Businesses): Can create SHID and MCOD aliases
402
+ *
403
+ * **Limits:**
404
+ * - Default limit: 20 aliases per account
405
+ * - Limit can be increased based on client needs
406
+ */
407
+ /**
408
+ * Alias type values as defined in the PI-SPI API specification
409
+ */
410
+ declare const AliasType: {
411
+ /**
412
+ * SHID - System-generated unique payment address (UUID format, 36 characters)
413
+ * Available for all client types: P, C, B, G
414
+ */
415
+ readonly SHID: "SHID";
416
+ /**
417
+ * MCOD - Merchant code for USSD payment support
418
+ * Available for business clients only: C, B, G
419
+ */
420
+ readonly MCOD: "MCOD";
421
+ /**
422
+ * MBNO - Mobile phone number alias
423
+ * Available for individual clients only: P
424
+ */
425
+ readonly MBNO: "MBNO";
426
+ };
427
+ /**
428
+ * Type representing a valid alias type
429
+ */
430
+ type AliasType = (typeof AliasType)[keyof typeof AliasType];
431
+ /**
432
+ * Valid alias types as a tuple for runtime validation
433
+ */
434
+ declare const ALIAS_TYPES: readonly ["SHID", "MCOD", "MBNO"];
435
+ /**
436
+ * Check if a string is a valid alias type
437
+ */
438
+ declare function isValidAliasType(value: string): value is AliasType;
439
+ /**
440
+ * Get available alias types for a client type
441
+ *
442
+ * @param clientType - Client type: 'P' (Individual), 'C' (Merchant), 'B' (Business), 'G' (Government)
443
+ * @returns Array of available alias types for the client type
444
+ */
445
+ declare function getAvailableAliasTypes(clientType: 'P' | 'C' | 'B' | 'G'): AliasType[];
446
+
447
+ /**
448
+ * Aliases service wrapper
449
+ *
450
+ * Provides methods for managing account aliases.
451
+ *
452
+ * @example
453
+ * ```typescript
454
+ * // Create a SHID alias (available for all client types)
455
+ * const alias = await sdk.alias.create({
456
+ * compte: 'CIC2344256727788288822',
457
+ * type: AliasType.SHID
458
+ * });
459
+ * // Returns: { cle: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f', type: 'SHID', ... }
460
+ *
461
+ * // Create an MCOD alias (business clients only)
462
+ * const merchantAlias = await sdk.alias.create({
463
+ * compte: 'SNC2344256727788288822',
464
+ * type: AliasType.MCOD
465
+ * });
466
+ * // Returns: { cle: 'SNF00_2E4TY', type: 'MCOD', ... }
467
+ * ```
468
+ */
469
+
470
+ declare class AliasService$1 extends BaseService {
471
+ /**
472
+ * Create an account alias
473
+ *
474
+ * **Alias Types:**
475
+ * - `SHID`: System-generated unique payment address (UUID format, 36 chars). Available for all client types (P, C, B, G)
476
+ * - `MCOD`: Merchant code for USSD payments. Available for business clients only (C, B, G)
477
+ * - `MBNO`: Mobile phone number. Available for individuals only (P)
478
+ *
479
+ * **Limits:**
480
+ * - Default: 20 aliases per account
481
+ * - Limit can be increased based on client needs
482
+ *
483
+ * @param alias - Alias creation data
484
+ * @param alias.compte - Account number (e.g., 'CIC2344256727788288822')
485
+ * @param alias.type - Alias type: 'SHID', 'MCOD', or 'MBNO'
486
+ * @returns Created alias with generated `cle` (key) value
487
+ * @throws {PiSpiError} If account not found or limit exceeded
488
+ *
489
+ * @example
490
+ * ```typescript
491
+ * // For business clients (C, B, G)
492
+ * await sdk.alias.create({
493
+ * compte: 'SNC2344256727788288822',
494
+ * type: AliasType.SHID
495
+ * });
496
+ * ```
497
+ */
498
+ create(alias: {
499
+ compte: string;
500
+ type: AliasType;
501
+ }): Promise<{
502
+ cle?: string;
503
+ type?: string;
504
+ compte?: string;
505
+ }>;
506
+ /**
507
+ * List aliases for an account
508
+ *
509
+ * @param compte - Account number
510
+ * @param params - Query parameters for pagination
511
+ * @returns Paginated list of aliases
512
+ */
513
+ list(compte: string, params?: QueryParams): Promise<unknown>;
514
+ /**
515
+ * Delete an alias
516
+ *
517
+ * @param alias - Alias identifier
518
+ */
519
+ delete(alias: string, compte?: string): Promise<unknown>;
520
+ }
521
+
522
+ /**
523
+ * Webhooks (Notifications) service wrapper
524
+ *
525
+ * Provides methods for managing webhook configurations to receive real-time notifications
526
+ * about payment events, payment requests, and fund returns.
527
+ *
528
+ * **Supported Events:**
529
+ * - Payment events: `PAIEMENT_RECU`, `PAIEMENT_ENVOYE`, `PAIEMENT_REJETE`
530
+ * - Payment request events: `RTP_RECU`, `RTP_REJETE`
531
+ * - Fund return events: `RETOUR_ENVOYE`, `RETOUR_REJETE`, `RETOUR_RECU`
532
+ * - Cancellation events: `ANNULATION_DEMANDE`, `ANNULATION_REJETE`
533
+ *
534
+ * **Webhook Security:**
535
+ * - All communications must use SSL/TLS
536
+ * - mTLS authentication required (certificate from BCEAO CA)
537
+ * - Events are signed with HMAC for data integrity
538
+ *
539
+ * @example
540
+ * ```typescript
541
+ * // Create webhook for payment notifications
542
+ * const webhook = await sdk.webhooks.create({
543
+ * callbackUrl: 'https://business.example.com/api/webhooks/pi-spi',
544
+ * events: ['PAIEMENT_RECU', 'PAIEMENT_ENVOYE']
545
+ * });
546
+ * ```
547
+ */
548
+
549
+ declare class WebhooksService extends BaseService {
550
+ /**
551
+ * Create a webhook configuration
552
+ *
553
+ * **Webhook Setup:**
554
+ * - URL must be HTTPS
555
+ * - Server must support mTLS with BCEAO-issued certificate
556
+ * - Server must validate HMAC signatures
557
+ * - Server must respond with 2xx status code
558
+ *
559
+ * **Event Types:**
560
+ * - `PAIEMENT_RECU`: Payment received
561
+ * - `PAIEMENT_ENVOYE`: Payment sent (irreversible)
562
+ * - `PAIEMENT_REJETE`: Payment rejected
563
+ * - `RTP_RECU`: Payment request received
564
+ * - `RTP_REJETE`: Payment request rejected
565
+ * - `RETOUR_ENVOYE`: Fund return sent
566
+ * - `RETOUR_REJETE`: Fund return rejected
567
+ * - `RETOUR_RECU`: Fund return received
568
+ * - `ANNULATION_DEMANDE`: Cancellation request received
569
+ * - `ANNULATION_REJETE`: Cancellation request rejected
570
+ *
571
+ * @param webhook - Webhook configuration
572
+ * @param webhook.callbackUrl - HTTPS URL to receive notifications (must support mTLS)
573
+ * @param webhook.events - Array of event types to subscribe to
574
+ * @param webhook.alias - Optional: Alias-specific webhook (only notifications for this alias)
575
+ * @returns Created webhook configuration
576
+ * @throws {PiSpiValidationError} If URL is invalid or events array is empty
577
+ *
578
+ * @example
579
+ * ```typescript
580
+ * // Webhook for all payment events
581
+ * await sdk.webhooks.create({
582
+ * callbackUrl: 'https://business.example.com/api/webhooks/pi-spi',
583
+ * events: ['PAIEMENT_RECU', 'PAIEMENT_ENVOYE', 'PAIEMENT_REJETE']
584
+ * });
585
+ *
586
+ * // Alias-specific webhook
587
+ * await sdk.webhooks.create({
588
+ * callbackUrl: 'https://business.example.com/api/webhooks/pi-spi',
589
+ * events: ['PAIEMENT_RECU'],
590
+ * alias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f'
591
+ * });
592
+ * ```
593
+ */
594
+ create(webhook: {
595
+ callbackUrl: string;
596
+ events: string[];
597
+ alias?: string;
598
+ }): Promise<{
599
+ id?: string;
600
+ callbackUrl?: string;
601
+ events?: string[];
602
+ }>;
603
+ /**
604
+ * List all configured webhooks
605
+ *
606
+ * @param params - Query parameters for pagination
607
+ * @returns Paginated list of webhooks
608
+ *
609
+ * @example
610
+ * ```typescript
611
+ * const webhooks = await sdk.webhooks.list({ page: 1, size: 20 });
612
+ * ```
613
+ */
614
+ list(params?: QueryParams): Promise<unknown>;
615
+ /**
616
+ * Get webhook details by ID
617
+ *
618
+ * @param id - Webhook ID
619
+ * @returns Webhook details
620
+ * @throws {PiSpiNotFoundError} If webhook not found
621
+ */
622
+ get(id: string): Promise<unknown>;
623
+ /**
624
+ * Update webhook configuration
625
+ *
626
+ * @param id - Webhook ID
627
+ * @param webhook - Updated webhook configuration
628
+ * @param webhook.callbackUrl - New callback URL (optional)
629
+ * @param webhook.events - New event subscriptions (optional)
630
+ * @param webhook.alias - New alias filter (optional)
631
+ * @returns Updated webhook configuration
632
+ * @throws {PiSpiNotFoundError} If webhook not found
633
+ * @throws {PiSpiValidationError} If update fails validation
634
+ *
635
+ * @example
636
+ * ```typescript
637
+ * await sdk.webhooks.update('webhook-001', {
638
+ * callbackUrl: 'https://updated-url.com/webhooks/pi-spi',
639
+ * events: ['PAIEMENT_RECU', 'RTP_RECU']
640
+ * });
641
+ * ```
642
+ */
643
+ update(id: string, webhook: {
644
+ callbackUrl?: string;
645
+ events?: string[];
646
+ alias?: string;
647
+ }): Promise<unknown>;
648
+ /**
649
+ * Delete a webhook configuration
650
+ *
651
+ * @param id - Webhook ID
652
+ * @throws {PiSpiNotFoundError} If webhook not found
653
+ */
654
+ delete(id: string): Promise<unknown>;
655
+ }
656
+
657
+ /**
658
+ * Payment Requests (Demandes de Paiement) service wrapper
659
+ *
660
+ * Provides methods for creating and managing payment requests (bills, invoices, etc.).
661
+ *
662
+ * **Payment Request Types:**
663
+ * - **E-commerce** (`categorie: 521`): Online payment requests with 3-minute expiry
664
+ * - **Point of Sale** (`categorie: 500`): Physical store payment requests
665
+ * - **Invoice/Bill** (`categorie: 401`): Invoice payment requests with due dates
666
+ * - **PICO**: Purchase with cash withdrawal (combined purchase + cashback)
667
+ * - **PICASH**: Cash withdrawal only
668
+ *
669
+ * **Payment Request Flow:**
670
+ * 1. Business creates payment request
671
+ * 2. Customer receives request (via alias)
672
+ * 3. Customer can: Accept & Pay Now, Accept & Pay Later, Reject, or Ignore
673
+ * 4. If accepted, payment is processed automatically
674
+ *
675
+ * @example
676
+ * ```typescript
677
+ * // Create invoice payment request
678
+ * const request = await sdk.demandesPaiement.create({
679
+ * comptePaye: 'CIC2344256727788288822',
680
+ * payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
681
+ * montant: 150000,
682
+ * categorie: '401',
683
+ * dateLimitePaiement: '2023-12-31T23:59:59.999Z',
684
+ * motif: 'Facture électricité mars 2023'
685
+ * });
686
+ * ```
687
+ */
688
+
689
+ declare class DemandesPaiementService extends BaseService {
690
+ /**
691
+ * Create a payment request
692
+ *
693
+ * **Request Types:**
694
+ * - **E-commerce** (`categorie: 521`): Max 3 minutes validity
695
+ * - **POS** (`categorie: 500`): Max 24 hours validity
696
+ * - **Invoice** (`categorie: 401`): Custom due date (up to 90 days)
697
+ *
698
+ * **Confirmation Options:**
699
+ * - `confirmation: false`: Request sent immediately (default for POS)
700
+ * - `confirmation: true`: Returns payer info for verification before sending
701
+ *
702
+ * **Customer Actions:**
703
+ * - Accept & Pay Now: Payment processed immediately
704
+ * - Accept & Pay Later: Payment scheduled (if dateLimiteReponse > 24h)
705
+ * - Reject: Request rejected with reason
706
+ * - Ignore: Request expires after dateLimiteReponse
707
+ *
708
+ * @param request - Payment request creation data
709
+ * @param request.comptePaye - Business account number (payee)
710
+ * @param request.payeurAlias - Customer alias (payer)
711
+ * @param request.montant - Amount in centimes (e.g., 150000 = 1,500 XOF)
712
+ * @param request.categorie - Request category: '500' (POS), '521' (E-commerce), '401' (Invoice)
713
+ * @param request.motif - Payment reason/description
714
+ * @param request.txId - Unique transaction ID (optional)
715
+ * @param request.dateLimitePaiement - Payment due date (required for e-commerce and invoices)
716
+ * @param request.dateLimiteReponse - Response deadline (default: 90 days from creation)
717
+ * @param request.confirmation - Whether to require confirmation (default: false for POS, true for invoices)
718
+ * @param request.refDocType - Reference document type (e.g., 'CINV' for invoice)
719
+ * @param request.refDocNumero - Reference document number (e.g., invoice number)
720
+ * @returns Payment request response
721
+ * @throws {PiSpiValidationError} If request fails validation
722
+ *
723
+ * @example
724
+ * ```typescript
725
+ * // E-commerce payment request (3-minute expiry)
726
+ * await sdk.demandesPaiement.create({
727
+ * comptePaye: 'CIC2344256727788288822',
728
+ * payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
729
+ * montant: 25000, // 250 XOF
730
+ * categorie: '521',
731
+ * dateLimitePaiement: '2023-02-21T15:37:00.000Z', // 3 minutes from now
732
+ * motif: 'Paiement du livre Manuel des écritures comptables'
733
+ * });
734
+ *
735
+ * // Invoice payment request
736
+ * await sdk.demandesPaiement.create({
737
+ * comptePaye: 'CIC2344256727788288822',
738
+ * payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
739
+ * montant: 150000, // 1,500 XOF
740
+ * categorie: '401',
741
+ * dateLimitePaiement: '2023-12-31T23:59:59.999Z',
742
+ * motif: 'Facture électricité mars 2023',
743
+ * refDocType: 'CINV',
744
+ * refDocNumero: 'FACT-ELEC-202303',
745
+ * confirmation: true
746
+ * });
747
+ * ```
748
+ */
749
+ create(request: {
750
+ comptePaye: string;
751
+ payeurAlias: string;
752
+ montant: number;
753
+ categorie: string;
754
+ motif: string;
755
+ txId?: string;
756
+ dateLimitePaiement?: string;
757
+ dateLimiteReponse?: string;
758
+ confirmation?: boolean;
759
+ refDocType?: string;
760
+ refDocNumero?: string;
761
+ }): Promise<{
762
+ statut?: string;
763
+ txId?: string;
764
+ dateLimiteReponse?: string;
765
+ }>;
766
+ /**
767
+ * List payment requests with filtering and pagination
768
+ *
769
+ * @param params - Query parameters for filtering and pagination
770
+ * @returns Paginated list of payment requests
771
+ */
772
+ list(params?: QueryParams): Promise<unknown>;
773
+ /**
774
+ * Get payment request details
775
+ *
776
+ * @param id - Payment request transaction ID
777
+ * @returns Payment request details
778
+ * @throws {PiSpiNotFoundError} If request not found
779
+ */
780
+ get(id: string): Promise<{
781
+ statut?: string;
782
+ txId?: string;
783
+ montant?: number;
784
+ dateEnvoi?: string;
785
+ dateIrrevocabilite?: string;
786
+ dateRejet?: string;
787
+ dateLimiteReponse?: string;
788
+ }>;
789
+ /**
790
+ * Accept a payment request
791
+ *
792
+ * **Note:** This is typically called by the customer's payment app, not the business.
793
+ * The business receives notification when customer accepts.
794
+ *
795
+ * @param id - Payment request transaction ID
796
+ * @param immediate - Whether to pay immediately (true) or schedule payment (false)
797
+ * @returns Payment confirmation response
798
+ */
799
+ accept(id: string, immediate?: boolean): Promise<unknown>;
800
+ /**
801
+ * Reject a payment request
802
+ *
803
+ * **Note:** This is typically called by the customer's payment app, not the business.
804
+ * The business receives notification when customer rejects.
805
+ *
806
+ * @param id - Payment request transaction ID
807
+ * @param reason - Rejection reason code (optional)
808
+ * @returns Rejection confirmation response
809
+ */
810
+ reject(id: string, reason?: string): Promise<unknown>;
811
+ /**
812
+ * Confirm sending a payment request created with confirmation: true
813
+ */
814
+ confirm(txId: string, decision: boolean): Promise<unknown>;
815
+ }
816
+
817
+ /**
818
+ * Bulk Payment Requests (Demandes de Paiement en Masse) service wrapper
819
+ *
820
+ * Provides methods for creating and managing bulk payment requests.
821
+ */
822
+
823
+ declare class DemandesPaiementEnMasseService extends BaseService {
824
+ /**
825
+ * Create bulk payment requests
826
+ */
827
+ create(request: {
828
+ comptePaye: string;
829
+ transactions: Array<{
830
+ txId: string;
831
+ payeurAlias: string;
832
+ montant: number;
833
+ motif: string;
834
+ categorie?: string;
835
+ dateLimitePaiement?: string;
836
+ refDocType?: string;
837
+ refDocNumero?: string;
838
+ }>;
839
+ confirmation?: boolean;
840
+ }): Promise<unknown>;
841
+ /**
842
+ * Get bulk payment request details and status
843
+ */
844
+ get(instructionId: string): Promise<unknown>;
845
+ /**
846
+ * Confirm and send bulk payment requests
847
+ */
848
+ confirm(instructionId: string): Promise<unknown>;
849
+ }
850
+
851
+ /**
852
+ * Payments (Paiements) service wrapper
853
+ *
854
+ * Provides methods for creating and managing immediate payments.
855
+ *
856
+ * **Payment Types Supported:**
857
+ * - **Bank-to-Bank**: Payments between bank accounts via API (`categorie: 733`)
858
+ * - **Bank-to-Wallet**: Payments from bank accounts to mobile wallets
859
+ * - **Wallet-to-Wallet**: Payments between mobile wallets
860
+ * - **Wallet-to-Bank**: Payments from mobile wallets to bank accounts
861
+ *
862
+ * All payment types are interoperable across the UEMOA region (8 countries).
863
+ *
864
+ * @example
865
+ * ```typescript
866
+ * // Create immediate payment
867
+ * const payment = await sdk.paiements.create({
868
+ * comptePayeur: 'CIC2344256727788288822',
869
+ * payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
870
+ * montant: 150000, // 1,500 XOF
871
+ * motif: 'Paiement de services'
872
+ * });
873
+ * ```
874
+ */
875
+
876
+ declare class PaiementsService extends BaseService {
877
+ /**
878
+ * Create an immediate payment
879
+ *
880
+ * **Payment Flow:**
881
+ * - If `confirmation: false`: Payment is sent immediately (default)
882
+ * - If `confirmation: true`: Payment is initiated, returns payee info for confirmation
883
+ *
884
+ * **Supported Transaction Types:**
885
+ * - Bank-to-Bank (`categorie: 733`)
886
+ * - Bank-to-Wallet (via alias lookup)
887
+ * - Wallet-to-Wallet (via alias lookup)
888
+ * - Wallet-to-Bank (via alias lookup)
889
+ *
890
+ * **Status Values:**
891
+ * - `INITIE`: Waiting for confirmation (if confirmation: true)
892
+ * - `ENVOYE`: Payment sent successfully
893
+ * - `IRREVOCABLE`: Payment confirmed and cannot be reversed
894
+ * - `REJETE`: Payment rejected (check `statutRaison` for error code)
895
+ *
896
+ * @param payment - Payment creation data
897
+ * @param payment.comptePayeur - Payer account number (e.g., 'CIC2344256727788288822')
898
+ * @param payment.payeAlias - Payee alias (SHID, MCOD, or MBNO format)
899
+ * @param payment.montant - Amount in centimes (e.g., 150000 = 1,500 XOF)
900
+ * @param payment.motif - Payment reason/description
901
+ * @param payment.txId - Unique transaction ID (optional, auto-generated if not provided)
902
+ * @param payment.confirmation - Whether to require confirmation before sending (default: false)
903
+ * @param payment.categorie - Payment category/canal (default: 733 for API Business)
904
+ * @returns Payment response with status
905
+ * @throws {PiSpiValidationError} If payment fails validation (e.g., invalid alias, duplicate txId)
906
+ * @throws {PiSpiError} If account blocked or insufficient funds
907
+ *
908
+ * @example
909
+ * ```typescript
910
+ * // Immediate payment (no confirmation)
911
+ * const payment = await sdk.paiements.create({
912
+ * comptePayeur: 'CIC2344256727788288822',
913
+ * payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f', // SHID alias
914
+ * montant: 150000, // 1,500 XOF
915
+ * motif: 'Paiement de services',
916
+ * txId: '23552722'
917
+ * });
918
+ *
919
+ * // Payment with confirmation (returns payee info)
920
+ * const paymentWithConfirmation = await sdk.paiements.create({
921
+ * comptePayeur: 'CIC2344256727788288822',
922
+ * payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
923
+ * montant: 3000000, // 30,000 XOF
924
+ * confirmation: true
925
+ * });
926
+ * ```
927
+ */
928
+ create(payment: {
929
+ comptePayeur?: string;
930
+ payeurAlias?: string;
931
+ payeAlias: string;
932
+ comptePaye?: string;
933
+ montant: number;
934
+ motif: string;
935
+ txId?: string;
936
+ confirmation?: boolean;
937
+ categorie?: string;
938
+ }): Promise<{
939
+ statut?: string;
940
+ txId?: string;
941
+ statutRaison?: string;
942
+ }>;
943
+ /**
944
+ * Get payment details by transaction ID
945
+ *
946
+ * @param txId - Transaction ID
947
+ * @returns Payment details including status and history
948
+ * @throws {PiSpiNotFoundError} If payment not found
949
+ *
950
+ * @example
951
+ * ```typescript
952
+ * const payment = await sdk.paiements.get('23552722');
953
+ * console.log('Status:', payment.statut); // 'IRREVOCABLE'
954
+ * console.log('Amount:', payment.montant); // 150000
955
+ * ```
956
+ */
957
+ get(txId: string): Promise<{
958
+ statut?: string;
959
+ txId?: string;
960
+ montant?: number;
961
+ dateEnvoi?: string;
962
+ dateIrrevocabilite?: string;
963
+ dateRejet?: string;
964
+ }>;
965
+ /**
966
+ * List payments with filtering and pagination
967
+ *
968
+ * **Filter Options:**
969
+ * - Filter by account: `comptePayeur`
970
+ * - Filter by status: `statut` (INITIE, ENVOYE, IRREVOCABLE, REJETE)
971
+ * - Filter by dates: `dateEnvoi`, `dateIrrevocabilite`
972
+ * - Use QueryBuilder for advanced filtering
973
+ *
974
+ * @param params - Query parameters for filtering and pagination
975
+ * @returns Paginated list of payments
976
+ *
977
+ * @example
978
+ * ```typescript
979
+ * // List all payments for an account
980
+ * const payments = await sdk.paiements.list({
981
+ * comptePayeur: 'CIC2344256727788288822',
982
+ * page: 1,
983
+ * size: 20
984
+ * });
985
+ *
986
+ * // Filter by status
987
+ * const completed = await sdk.paiements.list({
988
+ * comptePayeur: 'CIC2344256727788288822',
989
+ * statut: 'IRREVOCABLE'
990
+ * });
991
+ * ```
992
+ */
993
+ list(params?: QueryParams & {
994
+ comptePayeur?: string;
995
+ statut?: string;
996
+ }): Promise<unknown>;
997
+ /**
998
+ * Confirm a payment that was created with confirmation: true
999
+ */
1000
+ confirm(txId: string, decision: boolean, body?: Record<string, unknown>): Promise<unknown>;
1001
+ /**
1002
+ * Verify payment status by end-to-end ID
1003
+ */
1004
+ verifyStatus(end2endId: string): Promise<unknown>;
1005
+ }
1006
+
1007
+ /**
1008
+ * Bulk Payments (Paiements en Masse) service wrapper
1009
+ *
1010
+ * Provides methods for creating and managing bulk payment operations.
1011
+ *
1012
+ * **Bulk Payment Features:**
1013
+ * - Process multiple payments in a single request
1014
+ * - Linked by unique `instructionId`
1015
+ * - Can retry failed payments
1016
+ * - Supports up to 10,000 transactions per bulk (recommended: 500-5,000)
1017
+ *
1018
+ * **Transaction Size:**
1019
+ * - Max size per transaction: ~310 bytes
1020
+ * - Max bulk size: ~3.1 MB for 10,000 transactions
1021
+ * - Recommended: 500-5,000 transactions per bulk
1022
+ *
1023
+ * **Use Cases:**
1024
+ * - Salary payments
1025
+ * - Vendor payments
1026
+ * - Bulk disbursements
1027
+ * - Mass refunds
1028
+ *
1029
+ * @example
1030
+ * ```typescript
1031
+ * // Create bulk payment
1032
+ * const bulkPayment = await sdk.paiementsEnMasse.createBulk({
1033
+ * comptePayeur: 'CIC2344256727788288822',
1034
+ * instructionId: 'BULK-2023-001',
1035
+ * transactions: [
1036
+ * { txId: 'TX001', payeAlias: 'alias1', montant: 100000, motif: 'Salaire' },
1037
+ * { txId: 'TX002', payeAlias: 'alias2', montant: 150000, motif: 'Salaire' }
1038
+ * ]
1039
+ * });
1040
+ * ```
1041
+ */
1042
+
1043
+ declare class PaiementsEnMasseService extends BaseService {
1044
+ /**
1045
+ * Create bulk payments
1046
+ *
1047
+ * **Bulk Processing:**
1048
+ * - All transactions share the same `instructionId`
1049
+ * - Each transaction needs unique `txId`
1050
+ * - Transactions are processed in parallel
1051
+ * - Failed transactions can be retried
1052
+ *
1053
+ * **Performance Considerations:**
1054
+ * - Larger bulks take longer to process
1055
+ * - May hit HTTP timeout for very large bulks
1056
+ * - Recommended: 500-5,000 transactions per bulk
1057
+ * - For >10,000 transactions, split into multiple bulks
1058
+ *
1059
+ * **Response Status:**
1060
+ * - `INITIE`: Bulk created, awaiting confirmation
1061
+ * - `ENVOYE`: Bulk sent, transactions processing
1062
+ * - `IRREVOCABLE`: All transactions completed
1063
+ * - `PARTIEL`: Some transactions succeeded, some failed
1064
+ * - `REJETE`: Bulk rejected (validation failed)
1065
+ *
1066
+ * @param payment - Bulk payment creation data
1067
+ * @param payment.comptePayeur - Payer account number
1068
+ * @param payment.instructionId - Unique bulk instruction ID
1069
+ * @param payment.transactions - Array of payment transactions
1070
+ * @param payment.transactions[].txId - Unique transaction ID (must be unique within bulk)
1071
+ * @param payment.transactions[].payeAlias - Payee alias (SHID, MCOD, or MBNO)
1072
+ * @param payment.transactions[].montant - Amount in centimes
1073
+ * @param payment.transactions[].motif - Payment reason/description
1074
+ * @param payment.transactions[].refDocType - Reference document type (optional)
1075
+ * @param payment.transactions[].refDocNumero - Reference document number (optional)
1076
+ * @returns Bulk payment response with status and summary
1077
+ * @throws {PiSpiValidationError} If bulk fails validation (e.g., duplicate txId, invalid alias)
1078
+ * @throws {PiSpiError} If account blocked or insufficient funds
1079
+ *
1080
+ * @example
1081
+ * ```typescript
1082
+ * // Create bulk payment for salary disbursement
1083
+ * await sdk.paiementsEnMasse.createBulk({
1084
+ * comptePayeur: 'CIC2344256727788288822',
1085
+ * instructionId: 'SALARY-2023-03',
1086
+ * transactions: [
1087
+ * {
1088
+ * txId: 'SAL-001',
1089
+ * payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
1090
+ * montant: 500000, // 5,000 XOF
1091
+ * motif: 'Salaire mars 2023'
1092
+ * },
1093
+ * {
1094
+ * txId: 'SAL-002',
1095
+ * payeAlias: '4r5ty499-3e50-435b-b757-ac7a83d67juio',
1096
+ * montant: 750000, // 7,500 XOF
1097
+ * motif: 'Salaire mars 2023'
1098
+ * }
1099
+ * ]
1100
+ * });
1101
+ * ```
1102
+ */
1103
+ createBulk(payment: {
1104
+ comptePayeur: string;
1105
+ instructionId: string;
1106
+ transactions: Array<{
1107
+ txId: string;
1108
+ payeAlias: string;
1109
+ montant: number;
1110
+ motif: string;
1111
+ refDocType?: string;
1112
+ refDocNumero?: string;
1113
+ }>;
1114
+ confirmation?: boolean;
1115
+ }): Promise<unknown>;
1116
+ /**
1117
+ * Get bulk payment details and status
1118
+ *
1119
+ * **Response Includes:**
1120
+ * - Overall bulk status
1121
+ * - Transaction counts (total, succeeded, failed)
1122
+ * - Individual transaction statuses
1123
+ * - Failed transaction details
1124
+ *
1125
+ * @param instructionId - Bulk instruction ID
1126
+ * @returns Bulk payment details with transaction statuses
1127
+ * @throws {PiSpiNotFoundError} If bulk payment not found
1128
+ *
1129
+ * @example
1130
+ * ```typescript
1131
+ * const bulk = await sdk.paiementsEnMasse.get('SALARY-2023-03');
1132
+ * console.log('Status:', bulk.statut); // 'IRREVOCABLE'
1133
+ * console.log('Succeeded:', bulk.nombreSuccess); // 98
1134
+ * console.log('Failed:', bulk.nombreEchec); // 2
1135
+ * ```
1136
+ */
1137
+ get(instructionId: string): Promise<unknown>;
1138
+ /**
1139
+ * Confirm or retry a bulk payment
1140
+ */
1141
+ confirm(instructionId: string, decision?: boolean): Promise<unknown>;
1142
+ /**
1143
+ * Retry failed payments in a bulk payment
1144
+ *
1145
+ * **Retry Process:**
1146
+ * - Only failed transactions are retried
1147
+ * - Successful transactions are not affected
1148
+ * - Uses same `instructionId`
1149
+ * - Can retry multiple times if needed
1150
+ *
1151
+ * @param instructionId - Bulk instruction ID
1152
+ * @returns Retry response with updated status
1153
+ * @throws {PiSpiNotFoundError} If bulk payment not found
1154
+ * @throws {PiSpiError} If no failed transactions to retry
1155
+ *
1156
+ * @example
1157
+ * ```typescript
1158
+ * // Retry failed transactions
1159
+ * await sdk.paiementsEnMasse.retry('SALARY-2023-03');
1160
+ * ```
1161
+ */
1162
+ retry(instructionId: string): Promise<unknown>;
1163
+ }
1164
+
1165
+ /**
1166
+ * Fund Returns (Retours de Fonds) service wrapper
1167
+ *
1168
+ * Provides methods for returning funds from received payments.
1169
+ *
1170
+ * **Return Rules:**
1171
+ * - Can only return funds from payments received
1172
+ * - Must be initiated within 90 days of original payment
1173
+ * - After 90 days, returns are no longer possible
1174
+ * - Returns are processed instantly when sent
1175
+ *
1176
+ * **Use Cases:**
1177
+ * - Refunds for returned goods
1178
+ * - Cancellation of services
1179
+ * - Error corrections
1180
+ * - Customer disputes
1181
+ *
1182
+ * @example
1183
+ * ```typescript
1184
+ * // Return funds from a received payment
1185
+ * const returnFunds = await sdk.retoursFonds.create({
1186
+ * comptePaye: 'CIC2344256727788288822',
1187
+ * txId: '23552722', // Original payment transaction ID
1188
+ * montant: 150000, // Amount to return (1,500 XOF)
1189
+ * motif: 'CUST' // Customer request reason code
1190
+ * });
1191
+ * ```
1192
+ */
1193
+
1194
+ declare class RetoursFondsService extends BaseService {
1195
+ /**
1196
+ * Create a fund return
1197
+ *
1198
+ * **Return Process:**
1199
+ * 1. Business identifies original payment transaction
1200
+ * 2. Creates return request (must be within 90 days)
1201
+ * 3. Return is processed immediately
1202
+ * 4. Funds are returned to original payer
1203
+ *
1204
+ * **Status Values:**
1205
+ * - `ENVOYE`: Return sent successfully
1206
+ * - `IRREVOCABLE`: Return confirmed and cannot be reversed
1207
+ * - `REJETE`: Return rejected (check `statutRaison` for error code)
1208
+ *
1209
+ * **Rejection Reasons:**
1210
+ * - `AM04`: Insufficient guarantee funds
1211
+ * - `AM09`: Wrong amount
1212
+ * - `AC06`: Blocked account
1213
+ * - `FR01`: Fraud suspicion
1214
+ * - `RR04`: Regulatory reason
1215
+ *
1216
+ * @param returnRequest - Fund return request data
1217
+ * @param returnRequest.comptePaye - Business account number (original payee)
1218
+ * @param returnRequest.txId - Original payment transaction ID
1219
+ * @param returnRequest.montant - Amount to return in centimes (e.g., 150000 = 1,500 XOF)
1220
+ * @param returnRequest.motif - Return reason code (e.g., 'CUST' for customer request)
1221
+ * @returns Fund return response
1222
+ * @throws {PiSpiValidationError} If return fails validation (e.g., > 90 days, invalid txId)
1223
+ * @throws {PiSpiError} If account blocked or insufficient funds
1224
+ *
1225
+ * @example
1226
+ * ```typescript
1227
+ * // Return full payment amount
1228
+ * await sdk.retoursFonds.create({
1229
+ * comptePaye: 'CIC2344256727788288822',
1230
+ * txId: '23552722', // Original payment ID
1231
+ * montant: 150000, // 1,500 XOF
1232
+ * motif: 'CUST' // Customer request
1233
+ * });
1234
+ * ```
1235
+ */
1236
+ create(returnRequest: {
1237
+ comptePaye?: string;
1238
+ txId?: string;
1239
+ end2endId?: string;
1240
+ montant?: number;
1241
+ motif?: string;
1242
+ }): Promise<unknown>;
1243
+ /**
1244
+ * Get fund return details by end-to-end ID
1245
+ */
1246
+ get(end2endId: string): Promise<unknown>;
1247
+ /**
1248
+ * List payments with fund return status filter
1249
+ */
1250
+ list(params?: QueryParams & {
1251
+ retourStatut?: string;
1252
+ }): Promise<unknown>;
1253
+ }
1254
+
1255
+ /**
1256
+ * Cancellation Requests (Demandes d'Annulation) service wrapper
1257
+ *
1258
+ * Provides methods for requesting cancellation of sent payments.
1259
+ *
1260
+ * **Cancellation Rules:**
1261
+ * - Can only request cancellation of payments sent by the business
1262
+ * - Must be requested within 90 days of original payment
1263
+ * - Payee must accept the cancellation for funds to be returned
1264
+ * - Payee can reject the cancellation request
1265
+ * - Multiple cancellation requests can be sent for the same payment
1266
+ *
1267
+ * **Cancellation Flow:**
1268
+ * 1. Business requests cancellation of a sent payment
1269
+ * 2. Payee receives cancellation request
1270
+ * 3. Payee can accept (triggers fund return) or reject
1271
+ * 4. Business receives notification of payee's decision
1272
+ *
1273
+ * **Use Cases:**
1274
+ * - Payment sent to wrong recipient
1275
+ * - Duplicate payment
1276
+ * - Service cancellation
1277
+ * - Agreement cancellation
1278
+ *
1279
+ * @example
1280
+ * ```typescript
1281
+ * // Request cancellation of a sent payment
1282
+ * const cancellation = await sdk.demandesAnnulation.create({
1283
+ * comptePayeur: 'CIC2344256727788288822',
1284
+ * txId: '23552722', // Original payment transaction ID
1285
+ * motif: 'CUST' // Cancellation reason code
1286
+ * });
1287
+ * ```
1288
+ */
1289
+
1290
+ declare class DemandesAnnulationService extends BaseService {
1291
+ /**
1292
+ * Create a cancellation request
1293
+ *
1294
+ * **Cancellation Process:**
1295
+ * 1. Business identifies payment to cancel
1296
+ * 2. Creates cancellation request (must be within 90 days)
1297
+ * 3. Payee receives cancellation request
1298
+ * 4. Payee accepts or rejects
1299
+ * 5. If accepted, funds are returned via fund return mechanism
1300
+ *
1301
+ * **Status Values:**
1302
+ * - `INITIE`: Cancellation request sent, awaiting payee response
1303
+ * - `ACCEPTE`: Payee accepted cancellation (funds returned)
1304
+ * - `REJETE`: Payee rejected cancellation request
1305
+ *
1306
+ * **Rejection Reasons:**
1307
+ * - `CUST`: Customer rejection (payee refuses cancellation)
1308
+ * - `AM09`: Wrong amount
1309
+ * - `AC06`: Blocked account
1310
+ * - `FR01`: Fraud suspicion
1311
+ *
1312
+ * @param request - Cancellation request data
1313
+ * @param request.comptePayeur - Business account number (original payer)
1314
+ * @param request.txId - Original payment transaction ID to cancel
1315
+ * @param request.motif - Cancellation reason code (e.g., 'CUST' for customer request)
1316
+ * @returns Cancellation request response
1317
+ * @throws {PiSpiValidationError} If cancellation fails validation (e.g., > 90 days, invalid txId)
1318
+ * @throws {PiSpiNotFoundError} If payment not found
1319
+ *
1320
+ * @example
1321
+ * ```typescript
1322
+ * // Request cancellation
1323
+ * await sdk.demandesAnnulation.create({
1324
+ * comptePayeur: 'CIC2344256727788288822',
1325
+ * txId: '23552722', // Payment to cancel
1326
+ * motif: 'CUST' // Customer request
1327
+ * });
1328
+ * ```
1329
+ */
1330
+ create(request: {
1331
+ comptePayeur?: string;
1332
+ txId?: string;
1333
+ end2endId?: string;
1334
+ motif: string;
1335
+ }): Promise<unknown>;
1336
+ /**
1337
+ * Get cancellation request details by end-to-end ID
1338
+ */
1339
+ get(end2endId: string): Promise<unknown>;
1340
+ /**
1341
+ * List payments with cancellation status filter
1342
+ */
1343
+ list(params?: QueryParams & {
1344
+ annulationStatut?: string;
1345
+ }): Promise<unknown>;
1346
+ /**
1347
+ * Respond to a cancellation request (accept or reject)
1348
+ */
1349
+ respond(end2endId: string, decision: boolean): Promise<unknown>;
1350
+ }
1351
+
1352
+ declare class PiSpiSDK {
1353
+ /**
1354
+ * Accounts service
1355
+ * Handles account-related operations: balance, operations, transfers
1356
+ */
1357
+ readonly comptes: ComptesService$1;
1358
+ /**
1359
+ * Aliases service
1360
+ * Handles account alias management
1361
+ */
1362
+ readonly alias: AliasService$1;
1363
+ /**
1364
+ * Webhooks service
1365
+ * Handles webhook configuration and management
1366
+ */
1367
+ readonly webhooks: WebhooksService;
1368
+ /**
1369
+ * Payment requests service
1370
+ * Handles payment request creation and management
1371
+ */
1372
+ readonly demandesPaiement: DemandesPaiementService;
1373
+ /**
1374
+ * Bulk payment requests service
1375
+ * Handles bulk payment request operations
1376
+ */
1377
+ readonly demandesPaiementEnMasse: DemandesPaiementEnMasseService;
1378
+ /**
1379
+ * Payments service
1380
+ * Handles immediate payment operations
1381
+ */
1382
+ readonly paiements: PaiementsService;
1383
+ /**
1384
+ * Bulk payments service
1385
+ * Handles bulk payment operations
1386
+ */
1387
+ readonly paiementsEnMasse: PaiementsEnMasseService;
1388
+ /**
1389
+ * Fund returns service
1390
+ * Handles fund return operations
1391
+ */
1392
+ readonly retoursFonds: RetoursFondsService;
1393
+ /**
1394
+ * Cancellation requests service
1395
+ * Handles payment cancellation requests
1396
+ */
1397
+ readonly demandesAnnulation: DemandesAnnulationService;
1398
+ /**
1399
+ * QR Code utilities
1400
+ * Generate and validate BCEAO compatible QR codes
1401
+ */
1402
+ readonly qr: {
1403
+ createQrPayload: typeof createQrPayload;
1404
+ buildPayloadString: typeof buildPayloadString;
1405
+ computeCrc16: typeof computeCrc16;
1406
+ generateQrCodeSvg: typeof generateQrCodeSvg;
1407
+ isValidPispiQrPayload: typeof isValidPispiQrPayload;
1408
+ payload: typeof buildPayloadString;
1409
+ svg: typeof generateQrCodeSvg;
1410
+ validate: typeof isValidPispiQrPayload;
1411
+ raw: typeof createQrPayload;
1412
+ };
1413
+ private _config;
1414
+ /**
1415
+ * Initialize the PI-SPI SDK
1416
+ *
1417
+ * @param config - SDK configuration
1418
+ *
1419
+ * @example
1420
+ * ```typescript
1421
+ * const sdk = new PiSpiSDK({
1422
+ * baseUrl: 'https://sandbox.api.pi-bceao.com/piz/v1',
1423
+ * accessToken: 'your-oauth2-token',
1424
+ * });
1425
+ * ```
1426
+ */
1427
+ constructor(config: PiSpiConfig);
1428
+ /**
1429
+ * Update the access token
1430
+ * Useful when tokens are refreshed
1431
+ */
1432
+ setAccessToken(token: string): void;
1433
+ /**
1434
+ * Get the current base URL
1435
+ */
1436
+ getBaseUrl(): string;
1437
+ }
1438
+
1439
+ type LomiCustomerAliasType = 'SHID' | 'MBNO' | 'MCOD';
1440
+ type LomiCustomerQr = {
1441
+ t: 'lomi.cust';
1442
+ v: 1;
1443
+ alias: string;
1444
+ aliasType: LomiCustomerAliasType;
1445
+ };
1446
+ declare function buildLomiCustomerQr(input: {
1447
+ alias: string;
1448
+ aliasType?: LomiCustomerAliasType;
1449
+ }): LomiCustomerQr;
1450
+ declare function serializeLomiCustomerQr(qr: LomiCustomerQr): string;
1451
+ declare function parseLomiCustomerQr(raw: string): LomiCustomerQr | null;
1452
+
1453
+ /**
1454
+ * Custom error classes for PI-SPI SDK
1455
+ */
1456
+ declare class PiSpiError extends Error {
1457
+ readonly statusCode: number;
1458
+ readonly statusText: string;
1459
+ readonly type?: string;
1460
+ readonly detail?: string;
1461
+ readonly instance?: string;
1462
+ constructor(message: string, statusCode: number, statusText: string, type?: string, detail?: string, instance?: string);
1463
+ }
1464
+ declare class PiSpiValidationError extends PiSpiError {
1465
+ readonly errors?: Record<string, string[]>;
1466
+ constructor(message: string, statusCode: number, statusText: string, errors?: Record<string, string[]>, type?: string, detail?: string);
1467
+ }
1468
+ declare class PiSpiAuthError extends PiSpiError {
1469
+ constructor(message: string, statusCode: number, statusText: string);
1470
+ }
1471
+ declare class PiSpiNotFoundError extends PiSpiError {
1472
+ constructor(message: string, statusCode: number, statusText: string);
1473
+ }
1474
+ declare class PiSpiRateLimitError extends PiSpiError {
1475
+ readonly retryAfter?: number;
1476
+ constructor(message: string, statusCode: number, statusText: string, retryAfter?: number);
1477
+ }
1478
+
1479
+ /**
1480
+ * Utility functions for PI-SPI operations
1481
+ *
1482
+ * Common helper functions for formatting amounts, validating inputs,
1483
+ * and other utility operations.
1484
+ */
1485
+ /**
1486
+ * Format amount from centimes to XOF
1487
+ * @param centimes - Amount in centimes
1488
+ * @returns Formatted amount string (e.g., "1 500 XOF")
1489
+ */
1490
+ declare function formatAmount(centimes: number): string;
1491
+ /**
1492
+ * Convert XOF to centimes
1493
+ * @param xof - Amount in XOF
1494
+ * @returns Amount in centimes
1495
+ */
1496
+ declare function xofToCentimes(xof: number): number;
1497
+ /**
1498
+ * Convert centimes to XOF
1499
+ * @param centimes - Amount in centimes
1500
+ * @returns Amount in XOF
1501
+ */
1502
+ declare function centimesToXof(centimes: number): number;
1503
+ /**
1504
+ * Validate account number format
1505
+ * @param accountNumber - Account number to validate
1506
+ * @returns True if valid format
1507
+ */
1508
+ declare function isValidAccountNumber(accountNumber: string): boolean;
1509
+ /**
1510
+ * Validate SHID alias format (UUID)
1511
+ * @param alias - Alias to validate
1512
+ * @returns True if valid UUID format
1513
+ */
1514
+ declare function isValidShidAlias(alias: string): boolean;
1515
+ /**
1516
+ * Validate phone number format (for MBNO alias)
1517
+ * @param phoneNumber - Phone number to validate
1518
+ * @returns True if valid format
1519
+ */
1520
+ declare function isValidPhoneNumber(phoneNumber: string): boolean;
1521
+ /**
1522
+ * Extract country code from account number
1523
+ * @param accountNumber - Account number
1524
+ * @returns Country code or null
1525
+ */
1526
+ declare function getCountryFromAccount(accountNumber: string): string | null;
1527
+ /**
1528
+ * Sleep/delay utility
1529
+ * @param ms - Milliseconds to wait
1530
+ */
1531
+ declare function sleep(ms: number): Promise<void>;
1532
+ /**
1533
+ * Retry a function with exponential backoff
1534
+ * @param fn - Function to retry
1535
+ * @param maxRetries - Maximum number of retries
1536
+ * @param initialDelay - Initial delay in milliseconds
1537
+ */
1538
+ declare function retryWithBackoff<T>(fn: () => Promise<T>, maxRetries?: number, initialDelay?: number): Promise<T>;
1539
+
1540
+ /**
1541
+ * PI-SPI Constants
1542
+ *
1543
+ * Centralized constants for API endpoints, status codes, and configuration values
1544
+ */
1545
+ declare const PI_SPI_ENDPOINTS: {
1546
+ /** Production API endpoint */
1547
+ PRODUCTION: string;
1548
+ /** Sandbox API endpoint */
1549
+ SANDBOX: string;
1550
+ /** Default endpoint (sandbox) */
1551
+ DEFAULT: string;
1552
+ };
1553
+ declare const PAYMENT_STATUS: {
1554
+ /** Payment initiated (awaiting confirmation after alias lookup) */
1555
+ INITIE: string;
1556
+ /** Payment sent (validations passed, PSP has sent the request) */
1557
+ ENVOYE: string;
1558
+ /** Payment is confirmed/irreversible */
1559
+ IRREVOCABLE: string;
1560
+ /** Payment has been rejected */
1561
+ REJETE: string;
1562
+ };
1563
+ declare const ACCOUNT_STATUS: {
1564
+ /** Account is open */
1565
+ OPEN: string;
1566
+ /** Account is blocked */
1567
+ BLOCKED: string;
1568
+ /** Account is closed */
1569
+ CLOSED: string;
1570
+ };
1571
+ declare const ACCOUNT_TYPE: {
1572
+ /** Current account */
1573
+ CURRENT: string;
1574
+ /** Savings account */
1575
+ SAVINGS: string;
1576
+ };
1577
+ declare const CLIENT_TYPE: {
1578
+ /** Individual person */
1579
+ INDIVIDUAL: string;
1580
+ /** Merchant */
1581
+ MERCHANT: string;
1582
+ /** Business */
1583
+ BUSINESS: string;
1584
+ /** Government */
1585
+ GOVERNMENT: string;
1586
+ };
1587
+ declare const UEMOA_COUNTRIES: {
1588
+ BENIN: string;
1589
+ BURKINA_FASO: string;
1590
+ IVORY_COAST: string;
1591
+ GUINEA_BISSAU: string;
1592
+ MALI: string;
1593
+ NIGER: string;
1594
+ SENEGAL: string;
1595
+ TOGO: string;
1596
+ };
1597
+ declare const CURRENCY: {
1598
+ /** West African CFA Franc */
1599
+ XOF: string;
1600
+ /** Amounts are specified in centimes (1 XOF = 100 centimes) */
1601
+ CENTIMES_PER_XOF: number;
1602
+ };
1603
+ declare const DEFAULT_LIMITS: {
1604
+ /** Maximum page size for paginated requests */
1605
+ MAX_PAGE_SIZE: number;
1606
+ /** Default page size */
1607
+ DEFAULT_PAGE_SIZE: number;
1608
+ /** Default aliases per account */
1609
+ DEFAULT_ALIASES_PER_ACCOUNT: number;
1610
+ };
1611
+ declare const WEBHOOK_EVENTS: {
1612
+ /** Payment received */
1613
+ PAIEMENT_RECU: string;
1614
+ /** Payment sent */
1615
+ PAIEMENT_ENVOYE: string;
1616
+ /** Payment rejected */
1617
+ PAIEMENT_REJETE: string;
1618
+ /** Payment request (RTP) received */
1619
+ RTP_RECU: string;
1620
+ /** Payment request (RTP) rejected */
1621
+ RTP_REJETE: string;
1622
+ /** Cancellation requested */
1623
+ ANNULATION_DEMANDE: string;
1624
+ /** Cancellation rejected */
1625
+ ANNULATION_REJETE: string;
1626
+ /** Fund return sent */
1627
+ RETOUR_ENVOYE: string;
1628
+ /** Fund return rejected */
1629
+ RETOUR_REJETE: string;
1630
+ /** Fund return received */
1631
+ RETOUR_RECU: string;
1632
+ };
1633
+
1634
+ type ApiRequestOptions = {
1635
+ readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH';
1636
+ readonly url: string;
1637
+ readonly path?: Record<string, any>;
1638
+ readonly cookies?: Record<string, any>;
1639
+ readonly headers?: Record<string, any>;
1640
+ readonly query?: Record<string, any>;
1641
+ readonly formData?: Record<string, any>;
1642
+ readonly body?: any;
1643
+ readonly mediaType?: string;
1644
+ readonly responseHeader?: string;
1645
+ readonly errors?: Record<number, string>;
1646
+ };
1647
+
1648
+ type ApiResult = {
1649
+ readonly url: string;
1650
+ readonly ok: boolean;
1651
+ readonly status: number;
1652
+ readonly statusText: string;
1653
+ readonly body: any;
1654
+ };
1655
+
1656
+ declare class ApiError extends Error {
1657
+ readonly url: string;
1658
+ readonly status: number;
1659
+ readonly statusText: string;
1660
+ readonly body: any;
1661
+ readonly request: ApiRequestOptions;
1662
+ constructor(request: ApiRequestOptions, response: ApiResult, message: string);
1663
+ }
1664
+
1665
+ declare class CancelError extends Error {
1666
+ constructor(message: string);
1667
+ get isCancelled(): boolean;
1668
+ }
1669
+ interface OnCancel {
1670
+ readonly isResolved: boolean;
1671
+ readonly isRejected: boolean;
1672
+ readonly isCancelled: boolean;
1673
+ (cancelHandler: () => void): void;
1674
+ }
1675
+ declare class CancelablePromise<T> implements Promise<T> {
1676
+ #private;
1677
+ constructor(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void, onCancel: OnCancel) => void);
1678
+ get [Symbol.toStringTag](): string;
1679
+ then<TResult1 = T, TResult2 = never>(onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
1680
+ catch<TResult = never>(onRejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<T | TResult>;
1681
+ finally(onFinally?: (() => void) | null): Promise<T>;
1682
+ cancel(): void;
1683
+ get isCancelled(): boolean;
1684
+ }
1685
+
1686
+ type Resolver<T> = (options: ApiRequestOptions) => Promise<T>;
1687
+ type Headers = Record<string, string>;
1688
+ type OpenAPIConfig = {
1689
+ BASE: string;
1690
+ VERSION: string;
1691
+ WITH_CREDENTIALS: boolean;
1692
+ CREDENTIALS: 'include' | 'omit' | 'same-origin';
1693
+ TOKEN?: string | Resolver<string> | undefined;
1694
+ USERNAME?: string | Resolver<string> | undefined;
1695
+ PASSWORD?: string | Resolver<string> | undefined;
1696
+ HEADERS?: Headers | Resolver<Headers> | undefined;
1697
+ ENCODE_PATH?: ((path: string) => string) | undefined;
1698
+ };
1699
+ declare const OpenAPI: OpenAPIConfig;
1700
+
1701
+ type AliasCreationReponse = {
1702
+ /**
1703
+ * Le valeur de l'alias créé
1704
+ */
1705
+ cle?: string;
1706
+ /**
1707
+ * Le type de l'alias
1708
+ */
1709
+ type?: string;
1710
+ /**
1711
+ * Le numéro de compte rattaché à l'alias
1712
+ */
1713
+ compte?: string;
1714
+ /**
1715
+ * Date au format ISO 8601
1716
+ */
1717
+ dateCreation?: string;
1718
+ /**
1719
+ * Date au format ISO 8601
1720
+ */
1721
+ dateModification?: string;
1722
+ };
1723
+
1724
+ type AliasCreationRequest = {
1725
+ /**
1726
+ * Le client doit spécifier le type d'alias qu'il souhaite créer.
1727
+ * Les types disponibles sont:
1728
+ * - SHID: Adresse de paiement générée (disponible pour tous les types de clients: P, C, B, G)
1729
+ * - MCOD: Identifiant de compte marchand pour USSD (disponible pour les clients business: C, B, G)
1730
+ * - MBNO: Numéro de téléphone mobile (disponible pour les particuliers: P)
1731
+ *
1732
+ */
1733
+ type: string;
1734
+ };
1735
+
1736
+ type AliasReponseListe = {
1737
+ data?: Array<AliasCreationReponse>;
1738
+ meta?: {
1739
+ /**
1740
+ * total d'éléments correspondants à la recherche
1741
+ */
1742
+ total?: number;
1743
+ /**
1744
+ * nombre d'éléments retournés
1745
+ */
1746
+ size?: number;
1747
+ /**
1748
+ * numéro ou identifiant de la page suivante
1749
+ */
1750
+ page?: string;
1751
+ /**
1752
+ * numéro ou identifiant de la page suivante
1753
+ */
1754
+ next?: string;
1755
+ /**
1756
+ * numéro ou identifiant de la page précédente
1757
+ */
1758
+ prev?: string;
1759
+ };
1760
+ };
1761
+
1762
+ /**
1763
+ * - `INITIE` si la demande d'annulation est initiée
1764
+ * - `ENVOYE` si la demande d'annulation est envoyée
1765
+ * - `IRREVOCABLE` lorsque le retour de fonds est irrévocable
1766
+ * - `REJETE` lorsque la demande d'annulation est rejetée
1767
+ *
1768
+ */
1769
+ declare enum AnnulationStatut {
1770
+ INITIE = "INITIE",
1771
+ ENVOYE = "ENVOYE",
1772
+ IRREVOCABLE = "IRREVOCABLE",
1773
+ REJETE = "REJETE"
1774
+ }
1775
+
1776
+ type Champs = {};
1777
+
1778
+ type CompteOperation = {
1779
+ /**
1780
+ * Identifiant de la transaction dans le SI du client
1781
+ */
1782
+ txId: string;
1783
+ /**
1784
+ * Le montant du transfert à effectuer.
1785
+ */
1786
+ montant: number;
1787
+ /**
1788
+ * Le motif du transfert
1789
+ */
1790
+ motif?: string;
1791
+ /**
1792
+ * Le numéro de compte du payeur. Requis si `payeurAlias` n'est pas fourni.
1793
+ */
1794
+ payeurNumero: string;
1795
+ /**
1796
+ * Le numéro de compte du payé. Requis si `payeAlias` n'est pas fourni.
1797
+ */
1798
+ payeNumero: string;
1799
+ /**
1800
+ * - `INITIE` Le transfert est en cours de traitement
1801
+ * - `IRREVOCABLE` Le tranfert à été effectué avec succès
1802
+ * - `REJETE` Le tranfert à été rejeté
1803
+ *
1804
+ */
1805
+ statut: CompteOperation.statut;
1806
+ /**
1807
+ * Raisons du rejet d'un tranfert':
1808
+ * - SOLDE_INSUFFISANT le solde du compte debiteur est insuffisant pour effectuer l'opération.
1809
+ * - COMPTE_BLOQUE le compte debiteur ou le compte crediteur est bloqué
1810
+ * - COMPTE_CLOTURE le compte debiteur ou le compte crediteur est cloturé
1811
+ *
1812
+ */
1813
+ statutRaison?: CompteOperation.statutRaison;
1814
+ /**
1815
+ * Identifiant unique de bout en bout de la transaction
1816
+ */
1817
+ end2endId?: string;
1818
+ /**
1819
+ * Date d'envoi du transfert de fonds: date et heure à laquelle le transfert à été initié
1820
+ *
1821
+ */
1822
+ dateEnvoi: string;
1823
+ /**
1824
+ * Date d'irrévocabilité du transfert de fonds: date et heure à laquelle le transfert à été irrévocable
1825
+ *
1826
+ */
1827
+ dateIrrevocabilite?: string;
1828
+ };
1829
+ declare namespace CompteOperation {
1830
+ /**
1831
+ * - `INITIE` Le transfert est en cours de traitement
1832
+ * - `IRREVOCABLE` Le tranfert à été effectué avec succès
1833
+ * - `REJETE` Le tranfert à été rejeté
1834
+ *
1835
+ */
1836
+ enum statut {
1837
+ INITIE = "INITIE"
1838
+ }
1839
+ /**
1840
+ * Raisons du rejet d'un tranfert':
1841
+ * - SOLDE_INSUFFISANT le solde du compte debiteur est insuffisant pour effectuer l'opération.
1842
+ * - COMPTE_BLOQUE le compte debiteur ou le compte crediteur est bloqué
1843
+ * - COMPTE_CLOTURE le compte debiteur ou le compte crediteur est cloturé
1844
+ *
1845
+ */
1846
+ enum statutRaison {
1847
+ SOLDE_INSUFFISANT = "SOLDE_INSUFFISANT"
1848
+ }
1849
+ }
1850
+
1851
+ type CompteOperationListe = {
1852
+ data?: Array<CompteOperation>;
1853
+ meta?: {
1854
+ /**
1855
+ * total d'éléments correspondants à la recherche
1856
+ */
1857
+ length?: number;
1858
+ /**
1859
+ * numéro ou identifiant de la page suivante
1860
+ */
1861
+ page?: string;
1862
+ /**
1863
+ * nombre d'éléments retournés
1864
+ */
1865
+ limit?: number;
1866
+ };
1867
+ };
1868
+
1869
+ type CompteSolde = {
1870
+ /**
1871
+ * Le type du compte.
1872
+ * Types de comptes disponibles :
1873
+ * - **CACC** (Current Account) : Compte courant utilisé pour enregistrer les débits et crédits lorsqu'aucun compte spécifique n'a été désigné.
1874
+ * - **CARD** (Card Account) : Compte utilisé pour les paiements par carte de crédit.
1875
+ * - **CASH** (Cash Payment) : Compte utilisé pour le paiement en espèces.
1876
+ * - **CHAR** (Charges) : Compte utilisé pour les frais s'il diffère du compte de paiement.
1877
+ * - **CISH** (Cash Income) : Compte utilisé pour le paiement des revenus s'il diffère du compte courant en espèces.
1878
+ * - **COMM** (Commission) : Compte utilisé pour les commissions s'il diffère du compte de paiement.
1879
+ * - **CPAC** (Clearing Participant Settlement Account) : Compte utilisé pour enregistrer les écritures de règlement débit et crédit au nom d'un participant de compensation désigné.
1880
+ * - **LLSV** (Limited Liquidity Savings Account) : Compte utilisé pour l'épargne avec des conditions spéciales d'intérêt et de retrait.
1881
+ * - **LOAN** (Loan) : Compte utilisé pour les prêts.
1882
+ * - **MGLD** (Marginal Lending) : Compte utilisé pour une facilité de prêt marginal.
1883
+ * - **MOMA** (Money Market) : Compte utilisé pour les marchés monétaires s'il diffère du compte en espèces.
1884
+ * - **NREX** (Non Resident External) : Compte utilisé pour les non-résidents externes.
1885
+ * - **ODFT** (Overdraft) : Compte utilisé pour les découverts.
1886
+ * - **ONDP** (Over Night Deposit) : Compte utilisé pour les dépôts au jour le jour.
1887
+ * - **SACC** (Settlement Account) : Compte utilisé pour enregistrer les écritures débit et crédit résultant de transactions compensées et réglées via un système spécifique de compensation et de règlement.
1888
+ * - **SLRY** (Salary) : Comptes utilisés pour les paiements de salaires.
1889
+ * - **SVGS** (Savings) : Compte utilisé pour l'épargne.
1890
+ * - **TAXE** (Tax) : Compte utilisé pour les taxes s'il diffère du compte de paiement.
1891
+ * - **TRAN** (Transacting Account) : Compte de transaction, le type de compte bancaire le plus basique. La principale différence entre les comptes de transaction et les comptes chèques est qu'il n'y a généralement pas de chéquier ni de facilité de découvert.
1892
+ * - **TRAS** (Cash Trading) : Compte utilisé pour le trading s'il diffère du compte en espèces courant.
1893
+ * - **VACC** (Virtual Account) : Compte créé virtuellement pour faciliter la collecte et le rapprochement.
1894
+ * - **OTHR** (Other Account) : Type de compte non spécifié
1895
+ *
1896
+ */
1897
+ type?: CompteSolde.type;
1898
+ /**
1899
+ * Le numéro de compte
1900
+ */
1901
+ numero?: string;
1902
+ /**
1903
+ * La date d'ouverture du compte au format ISO8601 (YYYY-MM-DD)
1904
+ */
1905
+ dateOuverture?: string;
1906
+ /**
1907
+ * Le solde du compte
1908
+ */
1909
+ solde?: number;
1910
+ /**
1911
+ * Le statut actuel du compte.
1912
+ *
1913
+ * Statuts disponibles :
1914
+ *
1915
+ * - **OUVERT** : Le compte est actif et opérationnel. Toutes les opérations sont autorisées.
1916
+ * - **BLOQUE** : Le compte est temporairement bloqué. Aucune opération n'est autorisée.
1917
+ * - **CLOTURE** : Le compte est fermé définitivement. Aucune opération n'est possible.
1918
+ *
1919
+ */
1920
+ statut?: CompteSolde.statut;
1921
+ /**
1922
+ * Indique si l'attribut preConfirmation est présent.
1923
+ * PreConfirmation est un attribut optionnel.
1924
+ * Par défaut, pour les clients business (entreprises et les gouvernements), PI marque l'irrévocabilité du transfert de fonds sans demander une confirmation au participant payé.
1925
+ * La valeur par défaut est false pour indiquer que le compte reçoit des transferts sans préconfirmation.
1926
+ *
1927
+ */
1928
+ preConfirmation?: boolean;
1929
+ };
1930
+ declare namespace CompteSolde {
1931
+ /**
1932
+ * Le type du compte.
1933
+ * Types de comptes disponibles :
1934
+ * - **CACC** (Current Account) : Compte courant utilisé pour enregistrer les débits et crédits lorsqu'aucun compte spécifique n'a été désigné.
1935
+ * - **CARD** (Card Account) : Compte utilisé pour les paiements par carte de crédit.
1936
+ * - **CASH** (Cash Payment) : Compte utilisé pour le paiement en espèces.
1937
+ * - **CHAR** (Charges) : Compte utilisé pour les frais s'il diffère du compte de paiement.
1938
+ * - **CISH** (Cash Income) : Compte utilisé pour le paiement des revenus s'il diffère du compte courant en espèces.
1939
+ * - **COMM** (Commission) : Compte utilisé pour les commissions s'il diffère du compte de paiement.
1940
+ * - **CPAC** (Clearing Participant Settlement Account) : Compte utilisé pour enregistrer les écritures de règlement débit et crédit au nom d'un participant de compensation désigné.
1941
+ * - **LLSV** (Limited Liquidity Savings Account) : Compte utilisé pour l'épargne avec des conditions spéciales d'intérêt et de retrait.
1942
+ * - **LOAN** (Loan) : Compte utilisé pour les prêts.
1943
+ * - **MGLD** (Marginal Lending) : Compte utilisé pour une facilité de prêt marginal.
1944
+ * - **MOMA** (Money Market) : Compte utilisé pour les marchés monétaires s'il diffère du compte en espèces.
1945
+ * - **NREX** (Non Resident External) : Compte utilisé pour les non-résidents externes.
1946
+ * - **ODFT** (Overdraft) : Compte utilisé pour les découverts.
1947
+ * - **ONDP** (Over Night Deposit) : Compte utilisé pour les dépôts au jour le jour.
1948
+ * - **SACC** (Settlement Account) : Compte utilisé pour enregistrer les écritures débit et crédit résultant de transactions compensées et réglées via un système spécifique de compensation et de règlement.
1949
+ * - **SLRY** (Salary) : Comptes utilisés pour les paiements de salaires.
1950
+ * - **SVGS** (Savings) : Compte utilisé pour l'épargne.
1951
+ * - **TAXE** (Tax) : Compte utilisé pour les taxes s'il diffère du compte de paiement.
1952
+ * - **TRAN** (Transacting Account) : Compte de transaction, le type de compte bancaire le plus basique. La principale différence entre les comptes de transaction et les comptes chèques est qu'il n'y a généralement pas de chéquier ni de facilité de découvert.
1953
+ * - **TRAS** (Cash Trading) : Compte utilisé pour le trading s'il diffère du compte en espèces courant.
1954
+ * - **VACC** (Virtual Account) : Compte créé virtuellement pour faciliter la collecte et le rapprochement.
1955
+ * - **OTHR** (Other Account) : Type de compte non spécifié
1956
+ *
1957
+ */
1958
+ enum type {
1959
+ CACC = "CACC",
1960
+ CARD = "CARD",
1961
+ CASH = "CASH",
1962
+ CHAR = "CHAR",
1963
+ CISH = "CISH",
1964
+ COMM = "COMM",
1965
+ CPAC = "CPAC",
1966
+ LLSV = "LLSV",
1967
+ LOAN = "LOAN",
1968
+ MGLD = "MGLD",
1969
+ MOMA = "MOMA",
1970
+ NREX = "NREX",
1971
+ ODFT = "ODFT",
1972
+ ONDP = "ONDP",
1973
+ OTHR = "OTHR",
1974
+ SACC = "SACC",
1975
+ SLRY = "SLRY",
1976
+ SVGS = "SVGS",
1977
+ TAXE = "TAXE",
1978
+ TRAN = "TRAN",
1979
+ TRAS = "TRAS",
1980
+ VACC = "VACC"
1981
+ }
1982
+ /**
1983
+ * Le statut actuel du compte.
1984
+ *
1985
+ * Statuts disponibles :
1986
+ *
1987
+ * - **OUVERT** : Le compte est actif et opérationnel. Toutes les opérations sont autorisées.
1988
+ * - **BLOQUE** : Le compte est temporairement bloqué. Aucune opération n'est autorisée.
1989
+ * - **CLOTURE** : Le compte est fermé définitivement. Aucune opération n'est possible.
1990
+ *
1991
+ */
1992
+ enum statut {
1993
+ OUVERT = "OUVERT",
1994
+ BLOQUE = "BLOQUE",
1995
+ CLOTURE = "CLOTURE"
1996
+ }
1997
+ }
1998
+
1999
+ type CompteTransfertIntraRequest = {
2000
+ txId: string;
2001
+ montant: number;
2002
+ motif?: string;
2003
+ payeurNumero?: string;
2004
+ payeNumero?: string;
2005
+ payeurAlias?: string;
2006
+ payeAlias?: string;
2007
+ };
2008
+
2009
+ type CompteTransfertIntraReponse = (CompteTransfertIntraRequest & {
2010
+ /**
2011
+ * - `INITIE` Le transfert est en cours de traitement
2012
+ * - `IRREVOCABLE` Le tranfert à été effectué avec succès
2013
+ *
2014
+ */
2015
+ statut?: CompteTransfertIntraReponse.statut;
2016
+ /**
2017
+ * Identifiant unique de bout en bout de la transaction
2018
+ */
2019
+ end2endId?: string;
2020
+ /**
2021
+ * Date d'envoi du transfert de fonds: date et heure à laquelle le transfert à été initié
2022
+ *
2023
+ */
2024
+ dateEnvoi?: string;
2025
+ /**
2026
+ * Date d'irrévocabilité du transfert de fonds: date et heure à laquelle le transfert à été irrévocable
2027
+ *
2028
+ */
2029
+ dateIrrevocabilite?: string;
2030
+ });
2031
+ declare namespace CompteTransfertIntraReponse {
2032
+ /**
2033
+ * - `INITIE` Le transfert est en cours de traitement
2034
+ * - `IRREVOCABLE` Le tranfert à été effectué avec succès
2035
+ *
2036
+ */
2037
+ enum statut {
2038
+ INITIE = "INITIE"
2039
+ }
2040
+ }
2041
+
2042
+ /**
2043
+ * Raisons de l'annulation ou du rejet de la demande de paiement:
2044
+ * - ERREUR_ALIAS le client s'est trompé sur l'alias
2045
+ * - ERREUR_MONTANT le client s'est trompé sur le montant
2046
+ * - ERREUR_TXID le client s'est trompé sur le txId
2047
+ * - PAYEUR_INCONNU les informations du client payeur retournées suite à la recherche d'alias ne sont pas ceux attendues par le client.
2048
+ *
2049
+ */
2050
+ declare enum DemandePaiementConfirmationAnnulationRaison {
2051
+ ERREUR_ALIAS = "ERREUR_ALIAS",
2052
+ ERREUR_MONTANT = "ERREUR_MONTANT",
2053
+ ERREUR_TXID = "ERREUR_TXID",
2054
+ PAYEUR_INCONNU = "PAYEUR_INCONNU"
2055
+ }
2056
+
2057
+ /**
2058
+ * Le type de document justificatif associé à la transaction. Les types de documents disponibles sont :
2059
+ * - **QUOT** (Quotation) : Devis commercial détaillant les conditions d'offre.
2060
+ * - **PROF** (Proforma Invoice) : Facture pro forma, engagement préliminaire du vendeur (prix/conditions), sans enregistrement comptable réel.
2061
+ * - **CINV** (Commercial Invoice) : Facture commerciale standard pour la vente de biens ou services. Utilisée pour les paiements directs d'une facture émise par le vendeur.
2062
+ * - **CMCN** (Commercial Contract) : Contrat commercial entre les parties, stipulant les termes et conditions de la livraison de biens ou de services.
2063
+ * - **DISP** (Dispatch Advice) : Avis d'expédition ou bon de livraison.
2064
+ * - **PUOR** (Purchase Order) : Bon de commande émis par l'acheteur.
2065
+ * - **CONT** (Contract) : Document contractuel prouvant un accord entre vendeur et acheteur pour biens ou services.
2066
+ * - **HIRI** (Hire Invoice) : Facture pour location de ressources humaines (ex : intérim) ou biens/équipements.
2067
+ * - **INVS** (Invoice Signed) : Facture signée, validée électroniquement ou physiquement. Indique une approbation formelle avant paiement.
2068
+ * - **MSIN** (Metered Service Invoice) : Facture pour services mesurés (ex : gaz, électricité via compteur fixe). Inclut la consommation réelle.
2069
+ * - **SPRR** (Seller Presentment) : Document de présentation par le vendeur pour supporter l'acquisition (ex : preuve de livraison ou justificatif).
2070
+ * - **TISH** (Time Sheet) : Feuille de temps enregistrant les heures pour services/prestations ou livraison. Pour paiements basés sur le temps (ex : consulting, freelance).
2071
+ * - **USAR** (Usage Report) : Rapport d'utilisation indiquant le pattern de consommation (ex : SaaS, télécoms). Similaire à MSIN mais plus large (non forcément mesuré).
2072
+ * - **BOLD** (Bill Of Lading) : Document de transport maritime ou logistique (connaissement) prouvant l'expédition des marchandises. Spécifique au transport multimodal (ex : maritime, aérien).
2073
+ * - **SOAC** (Statement Of Account) : Relevé de compte émis par le fournisseur, listant les transactions enregistrées pour le débiteur (ex : factures, paiements, ajustements).
2074
+ * - **VCHR** (Voucher) : Document électronique de paiement (bon ou coupon) représentant une obligation ou un droit de paiement. Souvent utilisé pour des paiements préautorisés ou des remises spécifiques.
2075
+ *
2076
+ */
2077
+ declare enum RefDocType {
2078
+ CINV = "CINV",
2079
+ CMCN = "CMCN",
2080
+ DISP = "DISP",
2081
+ PUOR = "PUOR",
2082
+ CONT = "CONT",
2083
+ HIRI = "HIRI",
2084
+ INVS = "INVS",
2085
+ MSIN = "MSIN",
2086
+ PROF = "PROF",
2087
+ QUOT = "QUOT",
2088
+ SPRR = "SPRR",
2089
+ TISH = "TISH",
2090
+ USAR = "USAR",
2091
+ BOLD = "BOLD",
2092
+ SOAC = "SOAC",
2093
+ VCHR = "VCHR"
2094
+ }
2095
+
2096
+ type DemandePaiementRequestBase = {
2097
+ /**
2098
+ * Identifiant de la demande de paiement dans le SI du client
2099
+ */
2100
+ txId: string;
2101
+ /**
2102
+ * Alias de compte du client payeur à qui est adressée la demande
2103
+ */
2104
+ payeurAlias: string;
2105
+ /**
2106
+ * L'alias de compte dans lequel le client payé souhaite recevoir les paiements
2107
+ */
2108
+ payeAlias: string;
2109
+ /**
2110
+ * L'URL du logo du business ou d'un produit du business qui sera affiché au client payeur
2111
+ */
2112
+ logoUrl?: string;
2113
+ /**
2114
+ * Lorsque le PSP reçoit la demande, il effectue une recherche d'alias en vue d'obtenir les informations de compte du client payeur.
2115
+ *
2116
+ * L'attribut `confirmation` permet au client d'indiquer à son PSP si celui-ci doit lui retourner les résultats de la recherche d'alias pour confirmation:
2117
+ *
2118
+ * * La valeur `true` de la confirmation indique au PSP qu'il doit retourner le résultat de la recherche d'alias au client et attendre une confirmation
2119
+ * * La valeur `false` indique qu'une confirmation n'est pas requise pour la demande, de ce fait le PSP transmet directement la demande à PI
2120
+ *
2121
+ */
2122
+ confirmation: boolean;
2123
+ /**
2124
+ * Le montant total du paiement à effectuer
2125
+ */
2126
+ montant: number;
2127
+ /**
2128
+ * Le motif de la demande de paiement
2129
+ */
2130
+ motif?: string;
2131
+ /**
2132
+ * Le numéro / la référence du document justificatif
2133
+ */
2134
+ refDocNumero?: string;
2135
+ refDocType?: RefDocType;
2136
+ };
2137
+
2138
+ type DemandePaiementRequest = (({
2139
+ categorie: DemandePaiementRequest.categorie;
2140
+ } & DemandePaiementRequestBase) | ({
2141
+ categorie: DemandePaiementRequest.categorie;
2142
+ /**
2143
+ * Montant de l'achat
2144
+ */
2145
+ montantAchat: number;
2146
+ /**
2147
+ * Montant du retrait d'espèces (Inclus le montant des frais)
2148
+ */
2149
+ montantRetrait: number;
2150
+ /**
2151
+ * Frais de retrait
2152
+ */
2153
+ montantFrais: number;
2154
+ } & DemandePaiementRequestBase) | ({
2155
+ categorie: DemandePaiementRequest.categorie;
2156
+ /**
2157
+ * Montant du retrait d'espèces
2158
+ */
2159
+ montantRetrait: number;
2160
+ /**
2161
+ * Frais de retrait
2162
+ */
2163
+ montantFrais: number;
2164
+ } & DemandePaiementRequestBase) | ({
2165
+ categorie: DemandePaiementRequest.categorie;
2166
+ /**
2167
+ * Indique que le paiement est différé (Acheter maintenant, payer plus tard)
2168
+ */
2169
+ debitDiffere: boolean;
2170
+ /**
2171
+ * Remise appliquée sur la facture
2172
+ */
2173
+ remise?: {
2174
+ montant?: number;
2175
+ taux?: number;
2176
+ };
2177
+ } & DemandePaiementRequestBase) | ({
2178
+ categorie: DemandePaiementRequest.categorie;
2179
+ /**
2180
+ * Date limite de paiement (2 minutes après création)
2181
+ */
2182
+ dateLimitePaiement: string;
2183
+ } & DemandePaiementRequestBase) | ({
2184
+ categorie: DemandePaiementRequest.categorie;
2185
+ /**
2186
+ * Indique que le paiement est différé
2187
+ */
2188
+ debitDiffere: boolean;
2189
+ /**
2190
+ * Remise appliquée
2191
+ */
2192
+ remise: {
2193
+ /**
2194
+ * Montant de la remise
2195
+ */
2196
+ montant?: number;
2197
+ /**
2198
+ * Taux de remise
2199
+ */
2200
+ taux?: number;
2201
+ };
2202
+ } & DemandePaiementRequestBase) | ({
2203
+ categorie: DemandePaiementRequest.categorie;
2204
+ /**
2205
+ * Date limite de paiement de la facture (ex "A payer avant")
2206
+ */
2207
+ dateLimitePaiement: string;
2208
+ /**
2209
+ * Date limite de réponse
2210
+ */
2211
+ dateLimiteReponse?: string;
2212
+ } & DemandePaiementRequestBase) | ({
2213
+ categorie: DemandePaiementRequest.categorie;
2214
+ /**
2215
+ * Date limite de paiement
2216
+ */
2217
+ dateLimitePaiement: string;
2218
+ /**
2219
+ * Date limite de réponse
2220
+ */
2221
+ dateLimiteReponse: string;
2222
+ /**
2223
+ * Remise appliquée sur la facture - la remise n'est pas appliquée après la date limite de paiement
2224
+ */
2225
+ remise?: {
2226
+ montant?: number;
2227
+ taux?: number;
2228
+ };
2229
+ } & DemandePaiementRequestBase));
2230
+ declare namespace DemandePaiementRequest {
2231
+ enum categorie {
2232
+ _500 = "500"
2233
+ }
2234
+ }
2235
+
2236
+ type DemandePaiementConfirmationReponse = (DemandePaiementRequest & {
2237
+ /**
2238
+ * - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
2239
+ * - `ANNULE` si la demande n'est pas envoye pour une raison
2240
+ *
2241
+ */
2242
+ statut?: DemandePaiementConfirmationReponse.statut;
2243
+ statutRaison?: DemandePaiementConfirmationAnnulationRaison;
2244
+ /**
2245
+ * Le nom du payeur
2246
+ */
2247
+ payeurNom?: string;
2248
+ /**
2249
+ * Le pays de residence du payeur
2250
+ */
2251
+ payeurPays?: string;
2252
+ /**
2253
+ * Date d'envoie de la demande: date et heure à laquelle la demande de paiement est envoyée par le PSP
2254
+ *
2255
+ */
2256
+ dateEnvoie?: string;
2257
+ /**
2258
+ * Date de confirmation de la demande si le client avait requis la confirmation de la demande de paiement.
2259
+ * Il s'agit de la date et heure à laquelle le client a confirmé la demande.
2260
+ *
2261
+ */
2262
+ dateConfirmation?: string;
2263
+ });
2264
+ declare namespace DemandePaiementConfirmationReponse {
2265
+ /**
2266
+ * - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
2267
+ * - `ANNULE` si la demande n'est pas envoye pour une raison
2268
+ *
2269
+ */
2270
+ enum statut {
2271
+ ENVOYE = "ENVOYE",
2272
+ ANNULE = "ANNULE"
2273
+ }
2274
+ }
2275
+
2276
+ /**
2277
+ * Confirmation de la demande de paiement
2278
+ */
2279
+ type DemandePaiementConfirmationRequestAccepter = {
2280
+ /**
2281
+ * La décision à `true` indique la confirmation de la demande de paiement.
2282
+ */
2283
+ decision: boolean;
2284
+ };
2285
+
2286
+ /**
2287
+ * Annulation de la demande de paiement
2288
+ */
2289
+ type DemandePaiementConfirmationRequestRejeter = {
2290
+ /**
2291
+ * La décision à `false` indique l'annulation de la demande de paiement.
2292
+ */
2293
+ decision: boolean;
2294
+ };
2295
+
2296
+ type DemandePaiementConfirmationRequest = (DemandePaiementConfirmationRequestAccepter | DemandePaiementConfirmationRequestRejeter);
2297
+
2298
+ /**
2299
+ *
2300
+ * **Raisons de rejet ou d'echec des demandes de paiement :**
2301
+ * - **BE23** (Alias invalid) : L'alias du payeur n'existe pas ou est invalide.
2302
+ * - **DU03** (Duplicate Transaction) : Le txId n'est pas unique
2303
+ *
2304
+ * - **AC04** (Closed Account Number) : Le compte du client payeur est clôturé.
2305
+ * - **AC06** (Blocked Account) : Le compte du client payeur est bloqué.
2306
+ * - **AEXR** (Already Expired RTP) : La demande de paiement a déjà expiré.
2307
+ * - **AG03** (Transaction Not Supported) : Le client n'est pas autorisé à payer en mode débit différé.
2308
+ * - **AG10** (Agent Suspended) : Le participant payeur est suspendu.
2309
+ * - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
2310
+ * - **ALAC** (Already Accepted RTP) : La demande de paiement a déjà été acceptée.
2311
+ * - **AM02** (Not Allowed Amount) : Le montant spécifique de la transaction dépasse le montant maximum autorisé.
2312
+ * - **AM09** (Wrong Amount) : Le montant reçu ne correspond pas au montant convenu ou attendu.
2313
+ * - **AM14** (Amount Exceeds Agreed Limit) : Le montant de la transaction fait dépasser le plafond de débit différé du client.
2314
+ * - **APAR** (Already Paid RTP) : Le paiement demandé a déjà été effectué par le payeur.
2315
+ * - **ARFR** (Already Refused RTP) : La demande de paiement a déjà été refusée.
2316
+ * - **ARJR** (Already Rejected RTP) : La demande de paiement a déjà été rejetée.
2317
+ * - **BE01** (Inconsistent With End Customer) : L'identification du client final n'est pas liée au numéro de compte associé.
2318
+ * - **BE05** (Unrecognised Initiating Party) : La partie qui a initié le message n'est pas reconnue par le client final.
2319
+ * - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
2320
+ * - **RR07** (Remittance Information Invalid) : Le justificatif de la demande de paiement est invalide (par exemple, le numéro de facture est invalide).
2321
+ *
2322
+ */
2323
+ declare enum DemandePaiementStatutRaison {
2324
+ BE23 = "BE23",
2325
+ DU03 = "DU03",
2326
+ AC04 = "AC04",
2327
+ AC06 = "AC06",
2328
+ AEXR = "AEXR",
2329
+ AG03 = "AG03",
2330
+ AG10 = "AG10",
2331
+ AG11 = "AG11",
2332
+ ALAC = "ALAC",
2333
+ AM02 = "AM02",
2334
+ AM09 = "AM09",
2335
+ AM14 = "AM14",
2336
+ APAR = "APAR",
2337
+ ARFR = "ARFR",
2338
+ ARJR = "ARJR",
2339
+ BE01 = "BE01",
2340
+ BE05 = "BE05",
2341
+ FR01 = "FR01",
2342
+ RR07 = "RR07"
2343
+ }
2344
+
2345
+ type DemandePaiementConsultationReponse = {
2346
+ /**
2347
+ * Identifiant de la demande de paiement dans le SI du client
2348
+ */
2349
+ txId?: string;
2350
+ /**
2351
+ * Categorie de la demande de paiement
2352
+ */
2353
+ categorie?: DemandePaiementConsultationReponse.categorie;
2354
+ /**
2355
+ * L'alias de compte dans lequel le client payé souhaite recevoir les paiements
2356
+ */
2357
+ payeAlias?: string;
2358
+ /**
2359
+ * L'URL du logo du business ou d'un produit du business qui sera affiché au client payeur
2360
+ */
2361
+ logoUrl?: string;
2362
+ /**
2363
+ * Alias de compte du client payeur à qui est adressée la demande
2364
+ */
2365
+ payeurAlias?: string;
2366
+ /**
2367
+ * Lorsque le PSP reçoit la demande, il effectue une recherche d'alias en vue d'obtenir les informations de compte du client payeur.
2368
+ *
2369
+ * L'attribut `confirmation` permet au client d'indiquer à son PSP si celui-ci doit lui retourner les résultats de la recherche d'alias pour confirmation:
2370
+ *
2371
+ * * La valeur `true` de la confirmation indique au PSP qu'il doit retourner le résultat de la recherche d'alias au client et attendre une confirmation
2372
+ * * La valeur `false` indique qu'une confirmation n'est pas requise pour la demande, de ce fait le PSP transmet directement la demande à PI
2373
+ *
2374
+ */
2375
+ confirmation?: boolean;
2376
+ /**
2377
+ * Remise appliquée sur la demande de paiement
2378
+ */
2379
+ remise?: {
2380
+ /**
2381
+ * Le montant de la remise
2382
+ */
2383
+ montant?: number;
2384
+ /**
2385
+ * Le taux de la remise
2386
+ */
2387
+ taux?: number;
2388
+ };
2389
+ /**
2390
+ * Indique si le client peut acheter maintenant et payer plus tard.
2391
+ */
2392
+ debitDiffere?: boolean;
2393
+ /**
2394
+ * Le montant total du paiement à effectuer
2395
+ */
2396
+ montant?: number;
2397
+ /**
2398
+ * Le montant de l'achat
2399
+ */
2400
+ montantAchat?: number;
2401
+ /**
2402
+ * Le montant du retrait
2403
+ */
2404
+ montantRetrait?: number;
2405
+ /**
2406
+ * Les frais de retrait
2407
+ */
2408
+ montantFrais?: number;
2409
+ /**
2410
+ * Le motif de la demande de paiement
2411
+ */
2412
+ motif?: string;
2413
+ /**
2414
+ * Le numéro / la référence du document justificatif
2415
+ */
2416
+ refDocNumero?: string;
2417
+ refDocType?: RefDocType;
2418
+ /**
2419
+ * - `INITIE` si la confirmation du client est attendue suite à la recherche d'alias,
2420
+ * - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
2421
+ * - `IRREVOCABLE` si le payeur a accepté la demande
2422
+ * - `REJETE` si le payeur rejète la demande
2423
+ *
2424
+ */
2425
+ statut?: DemandePaiementConsultationReponse.statut;
2426
+ statutRaison?: DemandePaiementStatutRaison;
2427
+ /**
2428
+ * Le nom du payeur
2429
+ */
2430
+ payeurNom?: string;
2431
+ /**
2432
+ * Le pays de residence du payeur
2433
+ */
2434
+ payeurPays?: string;
2435
+ /**
2436
+ * Date limite de paiement
2437
+ */
2438
+ dateLimitePaiement?: string;
2439
+ /**
2440
+ * Date limite de réponse
2441
+ */
2442
+ dateLimiteReponse?: string;
2443
+ /**
2444
+ * Date de la demande de paiement
2445
+ *
2446
+ */
2447
+ dateDemande?: string;
2448
+ /**
2449
+ * Date de confirmation de la demande si le client avait requis la confirmation de la demande de paiement.
2450
+ * Il s'agit de la date et heure à laquelle le client a confirmé la demande.
2451
+ *
2452
+ */
2453
+ dateConfirmation?: string;
2454
+ /**
2455
+ * Date d'envoi de la demande: date et heure à laquelle la demande de paiement est envoyée par le PSP
2456
+ *
2457
+ */
2458
+ dateEnvoi?: string;
2459
+ /**
2460
+ * Date à laquelle le payeur à repondu à la demande de paiement
2461
+ *
2462
+ */
2463
+ dateReponse?: string;
2464
+ /**
2465
+ * Date à laquelle le paiement accepté est irrévocable
2466
+ *
2467
+ */
2468
+ dateIrrevocabilite?: string;
2469
+ };
2470
+ declare namespace DemandePaiementConsultationReponse {
2471
+ /**
2472
+ * Categorie de la demande de paiement
2473
+ */
2474
+ enum categorie {
2475
+ _631 = "631",
2476
+ _500 = "500",
2477
+ _521 = "521",
2478
+ _401 = "401"
2479
+ }
2480
+ /**
2481
+ * - `INITIE` si la confirmation du client est attendue suite à la recherche d'alias,
2482
+ * - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
2483
+ * - `IRREVOCABLE` si le payeur a accepté la demande
2484
+ * - `REJETE` si le payeur rejète la demande
2485
+ *
2486
+ */
2487
+ enum statut {
2488
+ INITIE = "INITIE",
2489
+ ENVOYE = "ENVOYE",
2490
+ IRREVOCABLE = "IRREVOCABLE",
2491
+ REJETE = "REJETE"
2492
+ }
2493
+ }
2494
+
2495
+ /**
2496
+ * Confirmation de la demande de paiement en masse
2497
+ */
2498
+ type DemandePaiementEnMasseConfirmationRequestAccepter = {
2499
+ /**
2500
+ * La décision à `true` indique la confirmation de la demande de paiement en masse.
2501
+ */
2502
+ decision: boolean;
2503
+ };
2504
+
2505
+ /**
2506
+ * Annulation de la demande de paiement en masse
2507
+ */
2508
+ type DemandePaiementEnMasseConfirmationRequestRejeter = {
2509
+ /**
2510
+ * La décision à `false` indique l'annulation de la demande de paiement en masse.
2511
+ */
2512
+ decision: boolean;
2513
+ };
2514
+
2515
+ type DemandePaiementEnMasseConfirmationRequest = (DemandePaiementEnMasseConfirmationRequestAccepter | DemandePaiementEnMasseConfirmationRequestRejeter);
2516
+
2517
+ type DemandePaiementEnMasseRequest = {
2518
+ /**
2519
+ * L'alias de compte dans lequel le client souhaite recevoir les paiements
2520
+ *
2521
+ */
2522
+ payeAlias: string;
2523
+ /**
2524
+ * Indique si une confirmation du business est requise avant d'envoyer les demandes de paiement.
2525
+ *
2526
+ * - `true` : Le PSP effectue la recherche d'alias pour tous les payeurs, retourne leurs noms et pays, et attend la confirmation du business avant d'envoyer les demandes de paiement.
2527
+ * - `false` : Le PSP envoie directement les demandes de paiement sans attendre de confirmation.
2528
+ *
2529
+ * **Note :** Si `true`, le business doit confirmer via `PUT /demandes-paiements-groupes/{instructionId}/confirmations` dans un délai adaptatif (24h, 48h ou 72h selon le nombre de transactions).
2530
+ *
2531
+ */
2532
+ confirmation?: boolean;
2533
+ /**
2534
+ * Identifiant de la demande de paiement en masse dans le SI du client
2535
+ */
2536
+ instructionId: string;
2537
+ /**
2538
+ * Le motif commun à toutes les demandes de paiement du groupe.
2539
+ * Si toutes les demandes de paiement du groupe ont le même motif, ce champ peut être utilisé pour optimiser la taille du lot.
2540
+ * Dans le cas contraire, chaque demande de paiement doit avoir son propre motif.
2541
+ *
2542
+ */
2543
+ motif?: string;
2544
+ transactions: Array<{
2545
+ /**
2546
+ * Identifiant de la transaction dans le SI du client
2547
+ */
2548
+ txId: string;
2549
+ /**
2550
+ * L'alias du client payeur.
2551
+ */
2552
+ payeurAlias: string;
2553
+ /**
2554
+ * Le montant à payer
2555
+ */
2556
+ montant: number;
2557
+ /**
2558
+ * Remise appliquée sur la facture - la remise n'est pas appliquée après la date limite de paiement
2559
+ */
2560
+ remise?: {
2561
+ montant?: number;
2562
+ taux?: number;
2563
+ };
2564
+ /**
2565
+ * La date limite à laquelle le payeur doit avoir effectué le paiement.
2566
+ *
2567
+ * Dans le cas d'une demande de paiement de facture, il s'agit en général de la date indiquée avec la mention "À payer avant".
2568
+ *
2569
+ */
2570
+ dateLimitePaiement: string;
2571
+ /**
2572
+ * C'est la date limite avant laquelle une réponse doit être fournie par le payeur.
2573
+ * La demande de paiement expire à cette date. Le client payé ne peut pas envoyer
2574
+ *
2575
+ */
2576
+ dateLimiteReponse?: string;
2577
+ /**
2578
+ * Le motif de la demande de paiement.
2579
+ * Si toutes les demandes de paiement du groupe ont le même motif, ce champ doit être omis, et le motif du groupe doit être utilisé.
2580
+ *
2581
+ */
2582
+ motif?: string;
2583
+ /**
2584
+ * Le numéro / la référence du document justificatif
2585
+ */
2586
+ refDocNumero?: string;
2587
+ refDocType?: RefDocType;
2588
+ }>;
2589
+ };
2590
+
2591
+ type DemandePaiementEnMasseStatutReponse = {
2592
+ /**
2593
+ * Identifiant de la demande de paiement en masse
2594
+ */
2595
+ instructionId?: string;
2596
+ /**
2597
+ * Statut global de la demande de paiement en masse:
2598
+ * - `INITIE`: Créée avec confirmation demandée, en attente de confirmation
2599
+ * - `CONFIRME`: Confirmée par le business ( pour savoir si le traitement est terminé, vérifiez que `transactionsIrrevocables + transactionsRejetees = transactionsTotal`)
2600
+ * - `ANNULE`: Annulée par le business
2601
+ *
2602
+ * **Évolution selon le mode de création :**
2603
+ * - Si créée **avec confirmation** (`confirmation: true`) : `INITIE` → `CONFIRME` (après PUT /confirmations) ou `ANNULE`
2604
+ * - Si créée **sans confirmation** (`confirmation: false`) : Directement `CONFIRME` (aucune action requise du business)
2605
+ *
2606
+ */
2607
+ statut?: DemandePaiementEnMasseStatutReponse.statut;
2608
+ /**
2609
+ * Date d'expiration de la confirmation (délai adaptatif selon nombre de transactions).
2610
+ * Présent uniquement si statut = INITIE.
2611
+ *
2612
+ * Délais :
2613
+ * - 1 à 500 transactions : 24 heures
2614
+ * - 501 à 1000 transactions : 48 heures
2615
+ * - Plus de 1000 transactions : 72 heures
2616
+ *
2617
+ */
2618
+ dateExpiration?: string;
2619
+ /**
2620
+ * Nombre total de transactions dans la demande de paiement en masse
2621
+ */
2622
+ transactionsTotal?: number;
2623
+ /**
2624
+ * Nombre de transactions à l'état `INITIE` (validées avec succès, prêtes à être envoyées).
2625
+ *
2626
+ * Si créée avec `confirmation: true`, ces transactions ont passé toutes les validations :
2627
+ * - txId unique (pas de duplication)
2628
+ * - Alias du payeur valide (recherche d'alias réussie)
2629
+ * - Nom et pays du payeur disponibles
2630
+ *
2631
+ * Ce sont ces transactions qui seront envoyées lors de la confirmation.
2632
+ *
2633
+ * **Vérification de fin de validation :** La validation est terminée quand `transactionsInitiees + transactionsRejetees = transactionsTotal`.
2634
+ *
2635
+ */
2636
+ transactionsInitiees?: number;
2637
+ /**
2638
+ * Nombre de transactions à l'état `ENVOYE` (demandes envoyées au payeur)
2639
+ */
2640
+ transactionsEnvoyees?: number;
2641
+ /**
2642
+ * Nombre de transactions à l'état `IRREVOCABLE` (demandes acceptées et payées par le payeur)
2643
+ */
2644
+ transactionsIrrevocables?: number;
2645
+ /**
2646
+ * Nombre de transactions à l'état `REJETE` (échecs de validation ou refus du payeur).
2647
+ *
2648
+ * Comprend :
2649
+ * - Rejets de validation (avant envoi) : BE23 (alias invalide), DU03 (txId dupliqué)
2650
+ * - Rejets d'envoi (après confirmation) : Alias du payeur indisponible, etc.
2651
+ * - Refus du payeur (le payeur a rejeté la demande)
2652
+ *
2653
+ * **Note :** Les transactions rejetées à la validation ne sont jamais envoyées, même si le bulk est confirmé.
2654
+ *
2655
+ */
2656
+ transactionsRejetees?: number;
2657
+ /**
2658
+ * Date de création de la demande de paiement en masse (date de la demande)
2659
+ */
2660
+ dateDemande?: string;
2661
+ /**
2662
+ * Date de confirmation par le business (date d'acceptation de la demande).
2663
+ * Présent uniquement si statut = CONFIRME.
2664
+ *
2665
+ * - Si créée avec confirmation: Date du PUT /confirmations avec decision: true
2666
+ * - Si créée sans confirmation: Correspond à dateDemande (confirmation automatique)
2667
+ *
2668
+ */
2669
+ dateConfirmation?: string;
2670
+ };
2671
+ declare namespace DemandePaiementEnMasseStatutReponse {
2672
+ /**
2673
+ * Statut global de la demande de paiement en masse:
2674
+ * - `INITIE`: Créée avec confirmation demandée, en attente de confirmation
2675
+ * - `CONFIRME`: Confirmée par le business ( pour savoir si le traitement est terminé, vérifiez que `transactionsIrrevocables + transactionsRejetees = transactionsTotal`)
2676
+ * - `ANNULE`: Annulée par le business
2677
+ *
2678
+ * **Évolution selon le mode de création :**
2679
+ * - Si créée **avec confirmation** (`confirmation: true`) : `INITIE` → `CONFIRME` (après PUT /confirmations) ou `ANNULE`
2680
+ * - Si créée **sans confirmation** (`confirmation: false`) : Directement `CONFIRME` (aucune action requise du business)
2681
+ *
2682
+ */
2683
+ enum statut {
2684
+ INITIE = "INITIE",
2685
+ CONFIRME = "CONFIRME",
2686
+ ANNULE = "ANNULE"
2687
+ }
2688
+ }
2689
+
2690
+ type DemandePaiementListeItem = {
2691
+ /**
2692
+ * Identifiant de la demande de paiement dans le SI du client
2693
+ */
2694
+ txId?: string;
2695
+ /**
2696
+ * Categorie de la demande de paiement
2697
+ */
2698
+ categorie?: DemandePaiementListeItem.categorie;
2699
+ /**
2700
+ * L'alias de compte dans lequel le client payé souhaite recevoir les paiements
2701
+ */
2702
+ payeAlias?: string;
2703
+ /**
2704
+ * L'URL du logo du business ou d'un produit du business qui sera affiché au client payeur
2705
+ */
2706
+ logoUrl?: string;
2707
+ /**
2708
+ * Alias de compte du client payeur à qui est adressée la demande
2709
+ */
2710
+ payeurAlias?: string;
2711
+ /**
2712
+ * Lorsque le PSP reçoit la demande, il effectue une recherche d'alias en vue d'obtenir les informations de compte du client payeur.
2713
+ *
2714
+ * L'attribut `confirmation` permet au client d'indiquer à son PSP si celui-ci doit lui retourner les résultats de la recherche d'alias pour confirmation:
2715
+ *
2716
+ * * La valeur `true` de la confirmation indique au PSP qu'il doit retourner le résultat de la recherche d'alias au client et attendre une confirmation
2717
+ * * La valeur `false` indique qu'une confirmation n'est pas requise pour la demande, de ce fait le PSP transmet directement la demande à PI
2718
+ *
2719
+ */
2720
+ confirmation?: boolean;
2721
+ /**
2722
+ * Remise appliquée sur la demande de paiement
2723
+ */
2724
+ remise?: {
2725
+ /**
2726
+ * Le montant de la remise
2727
+ */
2728
+ montant?: number;
2729
+ /**
2730
+ * Le taux de la remise
2731
+ */
2732
+ taux?: number;
2733
+ };
2734
+ /**
2735
+ * Indique si le client peut acheter maintenant et payer plus tard.
2736
+ */
2737
+ debitDiffere?: boolean;
2738
+ /**
2739
+ * Le montant total du paiement à effectuer
2740
+ */
2741
+ montant?: number;
2742
+ /**
2743
+ * Le montant de l'achat
2744
+ */
2745
+ montantAchat?: number;
2746
+ /**
2747
+ * Le montant du retrait
2748
+ */
2749
+ montantRetrait?: number;
2750
+ /**
2751
+ * Les frais de retrait
2752
+ */
2753
+ montantFrais?: number;
2754
+ /**
2755
+ * Le motif de la demande de paiement
2756
+ */
2757
+ motif?: string;
2758
+ /**
2759
+ * Le numéro / la référence du document justificatif
2760
+ */
2761
+ refDocNumero?: string;
2762
+ refDocType?: RefDocType;
2763
+ /**
2764
+ * - `INITIE` si la confirmation du client est attendue suite à la recherche d'alias
2765
+ * - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
2766
+ * - `IRREVOCABLE` si le payeur a accepté la demande
2767
+ * - `REJETE` si le payeur rejette la demande
2768
+ *
2769
+ */
2770
+ statut?: DemandePaiementListeItem.statut;
2771
+ statutRaison?: DemandePaiementStatutRaison;
2772
+ /**
2773
+ * Identifiant unique de bout en bout de la transaction
2774
+ */
2775
+ end2endId?: string;
2776
+ /**
2777
+ * Le nom du payeur
2778
+ */
2779
+ payeurNom?: string;
2780
+ /**
2781
+ * Le pays de residence du payeur
2782
+ */
2783
+ payeurPays?: string;
2784
+ /**
2785
+ * Le nom du payé (Retourné dans le cas d'un RTP reçu)
2786
+ */
2787
+ payeNom?: string;
2788
+ /**
2789
+ * Le pays de residence du payé (Retourné dans le cas d'un RTP reçu)
2790
+ */
2791
+ payePays?: string;
2792
+ /**
2793
+ * Date limite de paiement
2794
+ */
2795
+ dateLimitePaiement?: string;
2796
+ /**
2797
+ * Date limite de réponse
2798
+ */
2799
+ dateLimiteReponse?: string;
2800
+ /**
2801
+ * Date de la demande de paiement
2802
+ *
2803
+ */
2804
+ dateDemande?: string;
2805
+ /**
2806
+ * Date de confirmation de la demande si le client avait requis la confirmation de la demande de paiement.
2807
+ * Il s'agit de la date et heure à laquelle le client a confirmé la demande.
2808
+ *
2809
+ */
2810
+ dateConfirmation?: string;
2811
+ /**
2812
+ * Date d'envoi de la demande: date et heure à laquelle la demande de paiement est envoyée par le PSP
2813
+ *
2814
+ */
2815
+ dateEnvoi?: string;
2816
+ /**
2817
+ * Date à laquelle le payeur à repondu à la demande de paiement
2818
+ *
2819
+ */
2820
+ dateReponse?: string;
2821
+ /**
2822
+ * Date à laquelle le paiement accepté est irrévocable
2823
+ *
2824
+ */
2825
+ dateIrrevocabilite?: string;
2826
+ };
2827
+ declare namespace DemandePaiementListeItem {
2828
+ /**
2829
+ * Categorie de la demande de paiement
2830
+ */
2831
+ enum categorie {
2832
+ _631 = "631",
2833
+ _500 = "500",
2834
+ _521 = "521",
2835
+ _401 = "401"
2836
+ }
2837
+ /**
2838
+ * - `INITIE` si la confirmation du client est attendue suite à la recherche d'alias
2839
+ * - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
2840
+ * - `IRREVOCABLE` si le payeur a accepté la demande
2841
+ * - `REJETE` si le payeur rejette la demande
2842
+ *
2843
+ */
2844
+ enum statut {
2845
+ INITIE = "INITIE",
2846
+ ENVOYE = "ENVOYE",
2847
+ IRREVOCABLE = "IRREVOCABLE",
2848
+ REJETE = "REJETE"
2849
+ }
2850
+ }
2851
+
2852
+ type DemandePaiementListe = {
2853
+ data: Array<DemandePaiementListeItem>;
2854
+ meta: {
2855
+ /**
2856
+ * Nombre total de demandes de paiement correspondant aux critères
2857
+ */
2858
+ total?: number;
2859
+ /**
2860
+ * Nombre d'éléments par page
2861
+ */
2862
+ size?: number;
2863
+ /**
2864
+ * Identifiant de la page actuelle
2865
+ */
2866
+ page?: string;
2867
+ /**
2868
+ * Identifiant de la page suivante
2869
+ */
2870
+ next?: string;
2871
+ /**
2872
+ * Identifiant de la page précédente
2873
+ */
2874
+ prev?: string;
2875
+ };
2876
+ };
2877
+
2878
+ /**
2879
+ * Catégorie de la demande de paiement
2880
+ * - `500` Demande de Paiement marchand sur site
2881
+ * - `521` Demande de Paiement e-commerce immédiat
2882
+ * - `401` Autres demandes de paiement de facture
2883
+ *
2884
+ */
2885
+ declare enum DemandePaiementRequestCategorie {
2886
+ _500 = "500",
2887
+ _521 = "521",
2888
+ _401 = "401"
2889
+ }
2890
+
2891
+ /**
2892
+ * - `INITIE` si la confirmation du client est attendue suite à la recherche d'alias
2893
+ * - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
2894
+ * - `IRREVOCABLE` si le payeur a accepté la demande
2895
+ * - `REJETE` si le payeur rejette la demande
2896
+ *
2897
+ */
2898
+ declare enum DemandePaiementStatut {
2899
+ INITIE = "INITIE",
2900
+ ENVOYE = "ENVOYE",
2901
+ IRREVOCABLE = "IRREVOCABLE",
2902
+ REJETE = "REJETE"
2903
+ }
2904
+
2905
+ type DemandePaiementReponse = {
2906
+ /**
2907
+ * Identifiant de la demande de paiement dans le SI du client
2908
+ */
2909
+ txId?: string;
2910
+ /**
2911
+ * Alias de compte du client payeur à qui est adressé la demande
2912
+ */
2913
+ payeurAlias?: string;
2914
+ /**
2915
+ * L'alias de compte dans lequel le client payé souhaite recevoir les paiements
2916
+ */
2917
+ payeAlias?: string;
2918
+ /**
2919
+ * Lorsque le PSP recoit la demande, il effectue une recherche d'alias en vue d'obtenir les informations de compte du client payeur.
2920
+ *
2921
+ * L'attribut `confirmation` permet au client d'indiquer à son PSP si celui-ci doit lui retourner les resultats de la recherche d'alias pour confirmation:
2922
+ *
2923
+ * * La valeur `true` de la confirmation indique au PSP qu'il doit retourner le resultat de la recherche d'alias au client et attendre une confirmation
2924
+ * * La valeur `false` indique qu'une confirmation n'est pas requise pour la demande, de ce fait le PSP transmet directement la demande à PI
2925
+ *
2926
+ */
2927
+ confirmation?: boolean;
2928
+ categorie?: DemandePaiementRequestCategorie;
2929
+ /**
2930
+ * La date limite à laquelle le payeur doit avoir effectuer le paiement.
2931
+ * Dans le cas d'une demande de paiement de facture, il s'agit en général de la date indiquée avec la mention "A payer avant".
2932
+ *
2933
+ */
2934
+ dateLimitePaiement?: string;
2935
+ /**
2936
+ * C'est la date limite avant laquelle une réponse doit être fournie par le payeur.
2937
+ * La demande de paiement expire à cette date. Le client payé ne peut ni accepter ni refuser après cette date.
2938
+ * Par défaut, la date limite de réponse est la date de la demande + 92 jours (3 mois).
2939
+ *
2940
+ */
2941
+ dateLimiteReponse?: string;
2942
+ /**
2943
+ * Le montant du paiement à effectué
2944
+ */
2945
+ montant?: number;
2946
+ /**
2947
+ * Le montant de l'achat dans le cadre d'une demande de paiement PICO
2948
+ */
2949
+ montantAchat?: number;
2950
+ /**
2951
+ * Le montant du retrait dans le cadre d'une demande de paiement PICO ou PICASH
2952
+ */
2953
+ montantRetrait?: number;
2954
+ /**
2955
+ * Les frais de retrait dans le cadre d'une demande de paiement PICO
2956
+ */
2957
+ montantFrais?: number;
2958
+ /**
2959
+ * Remise appliquée pour un paiement immédiat dés réception de la demande
2960
+ *
2961
+ */
2962
+ remise?: {
2963
+ /**
2964
+ * Le montant de la remise
2965
+ */
2966
+ montant?: number;
2967
+ /**
2968
+ * Le taux de la remise
2969
+ */
2970
+ taux?: number;
2971
+ };
2972
+ /**
2973
+ * Indique si le payeur peut acheter maintenant et payer plus tard.
2974
+ *
2975
+ * La valeur est true pour un paiement immédiat avec débit différé (Acheter maintenant, payer plus tard).
2976
+ * Dans le cas du débit différé, le participant du client payeur paye le montant demandé prenant en compte la remise.
2977
+ *
2978
+ */
2979
+ debitDiffere?: boolean;
2980
+ /**
2981
+ * Le motif de la demande de paiement
2982
+ */
2983
+ motif?: string;
2984
+ /**
2985
+ * Le numéro / la reference du document justificatif
2986
+ */
2987
+ refDocNumero?: string;
2988
+ refDocType?: RefDocType;
2989
+ statut?: DemandePaiementStatut;
2990
+ statutRaison?: DemandePaiementStatutRaison;
2991
+ /**
2992
+ * Le nom du payeur.
2993
+ *
2994
+ * **Présence selon le statut :**
2995
+ * - `INITIE` (avec confirmation) : Présent ✅
2996
+ * - `ENVOYE` (sans confirmation) : Présent ✅
2997
+ * - `REJETE` avec BE23 ou DU03 : Absent ❌
2998
+ *
2999
+ */
3000
+ payeurNom?: string;
3001
+ /**
3002
+ * Le pays de résidence du payeur.
3003
+ *
3004
+ * **Présence selon le statut :**
3005
+ * - `INITIE` (avec confirmation) : Présent ✅
3006
+ * - `ENVOYE` (sans confirmation) : Présent ✅
3007
+ * - `REJETE` avec BE23 ou DU03 : Absent ❌
3008
+ *
3009
+ */
3010
+ payeurPays?: string;
3011
+ /**
3012
+ * Identifiant unique de bout en bout de la transaction
3013
+ */
3014
+ end2endId?: string;
3015
+ /**
3016
+ * Date d'envoi de la demande de paiement par le business
3017
+ */
3018
+ dateDemande?: string;
3019
+ /**
3020
+ * Date d'envoi de la demande de paiement par le participant
3021
+ */
3022
+ dateEnvoi?: string;
3023
+ /**
3024
+ * Date de confirmation de la demande si le client avait requis la confirmation de la demande de paiement.
3025
+ * Il s'agit de la date et heure à laquelle le client a confirmé la demande.
3026
+ *
3027
+ */
3028
+ dateConfirmation?: string;
3029
+ };
3030
+
3031
+ type DemandePaiementReponseRequest = ({
3032
+ /**
3033
+ * La décision à `true` indique l'acception de la demande de paiement.
3034
+ */
3035
+ decision: boolean;
3036
+ } | {
3037
+ /**
3038
+ * La décision à `false` indique le rejet de la demande de paiement.
3039
+ */
3040
+ decision: boolean;
3041
+ raison: DemandePaiementReponseRequest.raison;
3042
+ });
3043
+ declare namespace DemandePaiementReponseRequest {
3044
+ enum raison {
3045
+ BE05 = "BE05",
3046
+ AM09 = "AM09",
3047
+ APAR = "APAR",
3048
+ RR07 = "RR07",
3049
+ FR01 = "FR01"
3050
+ }
3051
+ }
3052
+
3053
+ type ListeMeta = {
3054
+ /**
3055
+ * total d'éléments correspondants à la recherche
3056
+ */
3057
+ length?: number;
3058
+ /**
3059
+ * numéro ou identifiant de la page suivante
3060
+ */
3061
+ page?: number;
3062
+ /**
3063
+ * nombre d'éléments retournés
3064
+ */
3065
+ limit?: number;
3066
+ };
3067
+
3068
+ /**
3069
+ *
3070
+ * **Motifs d'annulation d'un paiement:**
3071
+ * - **AC03** Erreur sur le destinataire
3072
+ * - **AM09** Erreur sur le montant
3073
+ * - **SVNR** Service non rendu
3074
+ * - **DUPL** Transaction déjà payée
3075
+ * - **FRAD** Suspicion de fraude
3076
+ *
3077
+ */
3078
+ declare enum PaiementAnnulationMotif {
3079
+ AC03 = "AC03",
3080
+ AM09 = "AM09",
3081
+ SVNR = "SVNR",
3082
+ DUPL = "DUPL",
3083
+ FRAD = "FRAD"
3084
+ }
3085
+
3086
+ /**
3087
+ *
3088
+ * **Raisons de rejet ou d'echec des demandes d'annulation :**
3089
+ * - **CUST** (Customer Decision) : Lorsque la demande d'annulation (camt.056) est rejetée par le client payé.
3090
+ * - **AC04** (Closed Account Number) : Le numéro de compte spécifié a été clôturé dans les livres du participant payé
3091
+ * - **ARDT** (Already Returned) : La transaction a déjà été annulée
3092
+ * - **AG10** (Agent Suspended) : Le participant payeur est désactivé.
3093
+ * - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
3094
+ * - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
3095
+ * - **RR04** (Regulatory Reason) : Raison règlementaire, notamment lorsque le bénéficiaire figure dans une liste d'interdiction.
3096
+ *
3097
+ */
3098
+ declare enum PaiementAnnulationStatutRaison {
3099
+ CUST = "CUST",
3100
+ AC04 = "AC04",
3101
+ ARDT = "ARDT",
3102
+ AG10 = "AG10",
3103
+ AG11 = "AG11",
3104
+ FR01 = "FR01",
3105
+ RR04 = "RR04"
3106
+ }
3107
+
3108
+ type PaiementRequest = {
3109
+ /**
3110
+ * Identifiant de la transaction dans le SI du client
3111
+ */
3112
+ txId: string;
3113
+ /**
3114
+ * Le client business a la possibilité de préciser le compte qui sera débité pour le paiement.
3115
+ *
3116
+ */
3117
+ payeurAlias: string;
3118
+ /**
3119
+ * L'alias du client payé, bénéficiaire de l'ordre de paiement
3120
+ */
3121
+ payeAlias: string;
3122
+ /**
3123
+ * Le montant du transfert à effectuer
3124
+ */
3125
+ montant: number;
3126
+ /**
3127
+ * Le numéro / la référence du document justificatif
3128
+ */
3129
+ refDocNumero?: string;
3130
+ refDocType?: RefDocType;
3131
+ /**
3132
+ * Le motif du paiement
3133
+ */
3134
+ motif?: string;
3135
+ /**
3136
+ * Indique si le paiement executé est un paiement programmé
3137
+ */
3138
+ programme?: boolean;
3139
+ };
3140
+
3141
+ /**
3142
+ * - `INITIE` si la confirmation du client est attendue suite à la recherche d'alias
3143
+ * - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
3144
+ * - `IRREVOCABLE` si le payeur a accepté la demande
3145
+ * - `REJETE` si le payeur rejette la demande
3146
+ *
3147
+ */
3148
+ declare enum PaiementStatut {
3149
+ INITIE = "INITIE",
3150
+ ENVOYE = "ENVOYE",
3151
+ IRREVOCABLE = "IRREVOCABLE",
3152
+ REJETE = "REJETE"
3153
+ }
3154
+
3155
+ /**
3156
+ *
3157
+ * **Raisons de rejet ou d'echec des paiements :**
3158
+ * - **BE23** (Alias invalid) : L'alias du payeur n'existe pas ou est invalide.
3159
+ * - **DU03** (Duplicate Transaction) : Le txId n'est pas unique
3160
+ *
3161
+ * - **AB03** (Aborted Settlement Timeout) : Message en timeout lors du règlement.
3162
+ * - **AB04** (Aborted Settlement Fatal Error) : Transaction rejetée à cause d'une erreur fatale.
3163
+ * - **AB08** (Offline Creditor Agent) : Le système du participant payé n'est pas accessible.
3164
+ * - **AB09** (Error Creditor Agent) : Transaction rejetée à cause d'une erreur chez le participant payé.
3165
+ * - **AC03** (Invalid Creditor Account Number) : Le numéro de compte du payé est invalide.
3166
+ * - **AC06** (Blocked Account) : Le compte spécifié est bloqué.
3167
+ * - **AC07** (Closed Creditor Account Number) : Le compte du payé est clôturé.
3168
+ * - **AG01** (Transaction Forbidden) : Transaction interdite sur ce type de compte.
3169
+ * - **AG10** (Agent Suspended) : Le participant payeur est désactivé.
3170
+ * - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
3171
+ * - **AEXR** (Already Expired RTP) : La demande de paiement a déjà expiré.
3172
+ * - **ALAC** (Already Accepted RTP) : La demande de paiement a déjà été acceptée.
3173
+ * - **AM02** (Not Allowed Amount) : Le montant de la transaction est supérieur au maximum autorisé.
3174
+ * - **AM04** (Insufficient Funds) : Le solde de garantie du participant payeur est insuffisant.
3175
+ * - **AM09** (Wrong Amount) : Le montant du transfert est différent du montant attendu.
3176
+ * - **AM21** (Limit Exceeded) : Le montant de la transaction dépasse les limites convenues entre le participant et le client.
3177
+ * - **ARFR** (Already Refused RTP) : La demande de paiement a déjà été refusée.
3178
+ * - **ARJR** (Already Rejected RTP) : La demande de paiement a déjà été rejetée.
3179
+ * - **BE01** (Inconsistent With End Customer) : L'identification du client final n'est pas liée au numéro de compte associé.
3180
+ * - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
3181
+ * - **IRNR** (Initial RTP Never Received) : La demande de paiement n'a jamais été reçue.
3182
+ * - **RR04** (Regulatory Reason) : Raison règlementaire, notamment lorsque le bénéficiaire figure dans une liste d'interdiction.
3183
+ *
3184
+ */
3185
+ declare enum PaiementStatutRaison {
3186
+ BE23 = "BE23",
3187
+ DU03 = "DU03",
3188
+ AB03 = "AB03",
3189
+ AB04 = "AB04",
3190
+ AB08 = "AB08",
3191
+ AB09 = "AB09",
3192
+ AC03 = "AC03",
3193
+ AC06 = "AC06",
3194
+ AC07 = "AC07",
3195
+ AG01 = "AG01",
3196
+ AG10 = "AG10",
3197
+ AG11 = "AG11",
3198
+ AEXR = "AEXR",
3199
+ ALAC = "ALAC",
3200
+ AM02 = "AM02",
3201
+ AM04 = "AM04",
3202
+ AM09 = "AM09",
3203
+ AM21 = "AM21",
3204
+ ARFR = "ARFR",
3205
+ ARJR = "ARJR",
3206
+ BE01 = "BE01",
3207
+ FR01 = "FR01",
3208
+ IRNR = "IRNR",
3209
+ RR04 = "RR04"
3210
+ }
3211
+
3212
+ /**
3213
+ * - `INITIE` si l'envoi du retour de fonds est initié
3214
+ * - `ENVOYE` si le participant a envoyé le retour de fonds
3215
+ * - `IRREVOCABLE` lorsque le retour de fonds est irrévocable
3216
+ * - `REJETE` Lorsque le retour de fonds est rejeté
3217
+ *
3218
+ */
3219
+ declare enum RetourStatut {
3220
+ INITIE = "INITIE",
3221
+ ENVOYE = "ENVOYE",
3222
+ IRREVOCABLE = "IRREVOCABLE",
3223
+ REJETE = "REJETE"
3224
+ }
3225
+
3226
+ /**
3227
+ *
3228
+ * **Raisons de rejet ou d'echec des retours de fonds :**
3229
+ * - **AB03** (Aborted Settlement Timeout) : Message en timeout lors du règlement.
3230
+ * - **AB04** (Aborted Settlement Fatal Error) : Transaction rejetée à cause d'une erreur fatale.
3231
+ * - **AC06** (Blocked Account) : Le compte spécifié est bloqué.
3232
+ * - **AG10** (Agent Suspended) : Le participant payeur est désactivé.
3233
+ * - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
3234
+ * - **AM04** (Insufficient Funds) : Le solde de garantie du participant payé est insuffisant.
3235
+ * - **AM09** (Wrong Amount) : Le montant du transfert est différent du montant attendu.
3236
+ * - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
3237
+ * - **RR04** (Regulatory Reason) : Raison règlementaire, notamment lorsque le bénéficiaire figure dans une liste d'interdiction.
3238
+ *
3239
+ */
3240
+ declare enum RetourStatutRaison {
3241
+ AB03 = "AB03",
3242
+ AB04 = "AB04",
3243
+ AC06 = "AC06",
3244
+ AG10 = "AG10",
3245
+ AG11 = "AG11",
3246
+ AM04 = "AM04",
3247
+ AM09 = "AM09",
3248
+ FR01 = "FR01",
3249
+ RR04 = "RR04"
3250
+ }
3251
+
3252
+ type Paiement = (PaiementRequest & {
3253
+ /**
3254
+ * Lorsque le PSP recoit la demande, il effectue une recherche d'alias en vue d'obtenir les informations de compte du client payé.
3255
+ *
3256
+ * L'attribut `confirmation` permet au client d'indiquer à son PSP si celui-ci doit lui retourner les resultats de la recherche d'alias pour confirmation:
3257
+ *
3258
+ * - La valeur `true` de la validation indique au PSP qu'il doit retourner le resultat de la recherche d'alias au client et attendre une validation avant d'effectuer le paiement.
3259
+ * - La valeur `false` indique qu'une validation n'est pas requise pour la demande, de ce fait, le PSP transmet la demande à PI sans attendre la validation du client business.
3260
+ *
3261
+ */
3262
+ confirmation?: boolean;
3263
+ /**
3264
+ * Le nom du payé (Retourné dans le cas d'un paiement envoyé)
3265
+ */
3266
+ payeNom?: string;
3267
+ /**
3268
+ * Le pays de residence du payé (Retourné dans le cas d'un paiement envoyé)
3269
+ */
3270
+ payePays?: string;
3271
+ /**
3272
+ * Le nom du payeur (Retourné dans le cas d'un paiement reçu)
3273
+ */
3274
+ payeurNom?: string;
3275
+ /**
3276
+ * Le pays de residence du payeur (Retourné dans le cas d'un paiement reçu)
3277
+ */
3278
+ payeurPays?: string;
3279
+ /**
3280
+ * Le numéro de compte du payeur
3281
+ */
3282
+ payeurCompte?: string;
3283
+ /**
3284
+ * Le numéro de compte du payé
3285
+ */
3286
+ payeCompte?: string;
3287
+ /**
3288
+ * La catégorie du paiement / Canal de paiement
3289
+ * - `631` Demande de paiement provenant d'un particulier
3290
+ * - `000` Paiement par QR Code Statique
3291
+ * - `400` Paiement par QR Code Dynamique
3292
+ * - `733` Ordre de paiement via l'API Business
3293
+ * - `300` Via le canal USSD
3294
+ * - `999` Ordre de transfert bancaire
3295
+ * - `500` Demande de Paiement sur site
3296
+ * - `521` Demande de Paiement e-commerce
3297
+ * - `401` Autres demandes de paiement de facture
3298
+ *
3299
+ */
3300
+ categorie?: Paiement.categorie;
3301
+ statut?: PaiementStatut;
3302
+ statutRaison?: PaiementStatutRaison;
3303
+ /**
3304
+ * Identifiant unique de bout en bout de la transaction
3305
+ */
3306
+ end2endId?: string;
3307
+ /**
3308
+ * Identifiant du paiement en masse dans le SI du client
3309
+ */
3310
+ instructionId?: string;
3311
+ /**
3312
+ * Les frais appliqués par le participant (Optionnel - dépend du modèle de facturation utilisé par le participant)
3313
+ */
3314
+ montantFrais?: number;
3315
+ /**
3316
+ * Date de création du paiement: date et heure à laquelle le paiement a été initié par le client business.
3317
+ *
3318
+ */
3319
+ dateDemande?: string;
3320
+ /**
3321
+ * Date de confirmation de la demande si le client payé avait requis la confirmation du paiement.
3322
+ * Il s'agit de la date et heure à laquelle le client a confirmé la transaction.
3323
+ *
3324
+ * Pour un paiement reçu, cette date correspond à la date de confirmation du paiement par le payeur.
3325
+ *
3326
+ */
3327
+ dateConfirmation?: string;
3328
+ /**
3329
+ * Date d'envoi de la demande: date et heure à laquelle le paiement est envoyé par le participant (PSP)
3330
+ *
3331
+ */
3332
+ dateEnvoi?: string;
3333
+ /**
3334
+ * Date à laquelle le paiement est irrévocable
3335
+ *
3336
+ */
3337
+ dateIrrevocabilite?: string;
3338
+ /**
3339
+ * Date à laquelle la réponse du paiement a été reçue
3340
+ *
3341
+ */
3342
+ dateReponse?: string;
3343
+ retourStatut?: RetourStatut;
3344
+ retourStatutRaison?: RetourStatutRaison;
3345
+ /**
3346
+ * Date de création du paiement: date et heure à laquelle le retour de fonds a été initié par le client business.
3347
+ *
3348
+ */
3349
+ retourDateDemande?: string;
3350
+ /**
3351
+ * Date à laquelle le retour de fonds est irrévocable
3352
+ *
3353
+ */
3354
+ retourDateIrrevocabilite?: string;
3355
+ /**
3356
+ * Date à laquelle la réponse au retour de fonds a été reçue
3357
+ *
3358
+ */
3359
+ retourDateReponse?: string;
3360
+ annulationStatut?: AnnulationStatut;
3361
+ annulationMotif?: PaiementAnnulationMotif;
3362
+ annulationStatutRaison?: PaiementAnnulationStatutRaison;
3363
+ /**
3364
+ * Date de reception de la demande d'annulation par le participant
3365
+ *
3366
+ */
3367
+ annulationDateDemande?: string;
3368
+ /**
3369
+ * Date à laquelle la réponse à la demande d'annulation a été reçue (Date de rejet de la demande)
3370
+ *
3371
+ */
3372
+ annulationDateReponse?: string;
3373
+ });
3374
+ declare namespace Paiement {
3375
+ /**
3376
+ * La catégorie du paiement / Canal de paiement
3377
+ * - `631` Demande de paiement provenant d'un particulier
3378
+ * - `000` Paiement par QR Code Statique
3379
+ * - `400` Paiement par QR Code Dynamique
3380
+ * - `733` Ordre de paiement via l'API Business
3381
+ * - `300` Via le canal USSD
3382
+ * - `999` Ordre de transfert bancaire
3383
+ * - `500` Demande de Paiement sur site
3384
+ * - `521` Demande de Paiement e-commerce
3385
+ * - `401` Autres demandes de paiement de facture
3386
+ *
3387
+ */
3388
+ enum categorie {
3389
+ _631 = "631",
3390
+ _000 = "000",
3391
+ _400 = "400",
3392
+ _733 = "733",
3393
+ _300 = "300",
3394
+ _999 = "999",
3395
+ _500 = "500",
3396
+ _521 = "521",
3397
+ _401 = "401"
3398
+ }
3399
+ }
3400
+
3401
+ /**
3402
+ * Acceptation de la demande d'annulation
3403
+ */
3404
+ type PaiementAnnulationReponseRequestAccepter = {
3405
+ /**
3406
+ * La décision à `true` indique l'acceptation de la demande d'annulation.
3407
+ */
3408
+ decision: boolean;
3409
+ };
3410
+
3411
+ /**
3412
+ * Refus de la demande d'annulation
3413
+ */
3414
+ type PaiementAnnulationReponseRequestRejeter = {
3415
+ /**
3416
+ * La décision à `false` indique le refus de la demande d'annulation.
3417
+ */
3418
+ decision: boolean;
3419
+ };
3420
+
3421
+ /**
3422
+ * Réponse à une demande d'annulation de paiement.
3423
+ *
3424
+ * Le business peut accepter ou refuser la demande d'annulation :
3425
+ * - `decision: true` : Accepte la demande d'annulation
3426
+ * - `decision: false` : Refuse la demande d'annulation
3427
+ *
3428
+ */
3429
+ type PaiementAnnulationReponseRequest = (PaiementAnnulationReponseRequestAccepter | PaiementAnnulationReponseRequestRejeter);
3430
+
3431
+ type PaiementAnnulationRequest = {
3432
+ raison: PaiementAnnulationMotif;
3433
+ };
3434
+
3435
+ /**
3436
+ * Confirmation du paiement en masse
3437
+ */
3438
+ type PaiementEnMasseConfirmationRequestAccepter = {
3439
+ /**
3440
+ * La décision à `true` indique la confirmation du paiement en masse.
3441
+ */
3442
+ decision: boolean;
3443
+ };
3444
+
3445
+ /**
3446
+ * Annulation du paiement en masse
3447
+ */
3448
+ type PaiementEnMasseConfirmationRequestRejeter = {
3449
+ /**
3450
+ * La décision à `false` indique l'annulation du paiement en masse.
3451
+ */
3452
+ decision: boolean;
3453
+ };
3454
+
3455
+ type PaiementEnMasseConfirmationRequest = (PaiementEnMasseConfirmationRequestAccepter | PaiementEnMasseConfirmationRequestRejeter);
3456
+
3457
+ type PaiementEnMasseReponseStatut = {
3458
+ /**
3459
+ * Identifiant du paiement en masse
3460
+ */
3461
+ instructionId?: string;
3462
+ /**
3463
+ * Statut global du paiement en masse:
3464
+ * - `INITIE`: Créé avec confirmation demandée, en attente de confirmation
3465
+ * - `CONFIRME`: Confirmé et en cours de traitement (ou traitement terminé)
3466
+ * - `ANNULE`: Annulé par le business avant confirmation
3467
+ *
3468
+ * **Évolution selon le mode de création :**
3469
+ * - Si créé **avec confirmation** (`confirmation: true`) : `INITIE` → `CONFIRME` (après PUT /confirmations) ou `ANNULE`
3470
+ * - Si créé **sans confirmation** (`confirmation: false`) : Directement `CONFIRME` (aucune action requise du business)
3471
+ *
3472
+ */
3473
+ statut?: PaiementEnMasseReponseStatut.statut;
3474
+ /**
3475
+ * Date d'expiration de la confirmation (délai adaptatif selon nombre de transactions).
3476
+ * Présent uniquement si statut = INITIE.
3477
+ *
3478
+ * Délais :
3479
+ * - 1 à 500 transactions : 24 heures
3480
+ * - 501 à 1000 transactions : 48 heures
3481
+ * - Plus de 1000 transactions : 72 heures
3482
+ *
3483
+ */
3484
+ dateExpiration?: string;
3485
+ /**
3486
+ * Nombre total de transactions dans le paiement en masse
3487
+ */
3488
+ transactionsTotal?: number;
3489
+ /**
3490
+ * Nombre de transactions à l'état `INITIE` (validées avec succès, prêtes à être envoyées).
3491
+ *
3492
+ * Si créé avec `confirmation: true`, ces transactions ont passé toutes les validations :
3493
+ * - txId unique (pas de duplication)
3494
+ * - Alias valide (recherche d'alias réussie)
3495
+ * - Nom et pays du bénéficiaire disponibles
3496
+ *
3497
+ * Ce sont ces transactions qui seront envoyées lors de la confirmation.
3498
+ *
3499
+ * **Vérification de fin de validation :** La validation est terminée quand `transactionsInitiees + transactionsRejetees = transactionsTotal`.
3500
+ *
3501
+ */
3502
+ transactionsInitiees?: number;
3503
+ /**
3504
+ * Nombre de transactions à l'état `ENVOYE` (en cours d'envoi vers le système bancaire)
3505
+ */
3506
+ transactionsEnvoyees?: number;
3507
+ /**
3508
+ * Nombre de transactions à l'état `IRREVOCABLE` (paiements réussis et finalisés)
3509
+ */
3510
+ transactionsIrrevocables?: number;
3511
+ /**
3512
+ * Nombre de transactions à l'état `REJETE` (échecs de validation ou d'envoi).
3513
+ *
3514
+ * Comprend :
3515
+ * - Rejets de validation (avant envoi) : BE23 (alias invalide), DU03 (txId dupliqué)
3516
+ * - Rejets d'envoi (après confirmation) : AM04 (solde insuffisant), AGNT (PSP indisponible), etc.
3517
+ *
3518
+ * **Note :** Les transactions rejetées à la validation ne sont jamais envoyées, même si le bulk est confirmé.
3519
+ *
3520
+ */
3521
+ transactionsRejetees?: number;
3522
+ /**
3523
+ * Date de création du paiement en masse (date de la demande)
3524
+ */
3525
+ dateDemande?: string;
3526
+ /**
3527
+ * Date de confirmation par le business (date d'acceptation de la demande).
3528
+ * Présent uniquement si statut = CONFIRME.
3529
+ *
3530
+ * - Si créé avec confirmation: Date du PUT /confirmations avec decision: true
3531
+ * - Si créé sans confirmation: Correspond à dateDemande (confirmation automatique)
3532
+ *
3533
+ */
3534
+ dateConfirmation?: string;
3535
+ };
3536
+ declare namespace PaiementEnMasseReponseStatut {
3537
+ /**
3538
+ * Statut global du paiement en masse:
3539
+ * - `INITIE`: Créé avec confirmation demandée, en attente de confirmation
3540
+ * - `CONFIRME`: Confirmé et en cours de traitement (ou traitement terminé)
3541
+ * - `ANNULE`: Annulé par le business avant confirmation
3542
+ *
3543
+ * **Évolution selon le mode de création :**
3544
+ * - Si créé **avec confirmation** (`confirmation: true`) : `INITIE` → `CONFIRME` (après PUT /confirmations) ou `ANNULE`
3545
+ * - Si créé **sans confirmation** (`confirmation: false`) : Directement `CONFIRME` (aucune action requise du business)
3546
+ *
3547
+ */
3548
+ enum statut {
3549
+ INITIE = "INITIE",
3550
+ CONFIRME = "CONFIRME",
3551
+ ANNULE = "ANNULE"
3552
+ }
3553
+ }
3554
+
3555
+ type PaiementEnMasseRequest = {
3556
+ /**
3557
+ * Identifiant du paiement en masse dans le SI du client
3558
+ */
3559
+ instructionId: string;
3560
+ /**
3561
+ * L'alias du compte du client business qui sera débité pour le paiement.
3562
+ *
3563
+ */
3564
+ payeurAlias: string;
3565
+ /**
3566
+ * Indique si une confirmation du business est requise avant d'exécuter les paiements.
3567
+ *
3568
+ * - `true` : Le PSP effectue la recherche d'alias pour tous les bénéficiaires, retourne leurs noms et pays, et attend la confirmation du business avant d'exécuter les paiements.
3569
+ * - `false` : Le PSP exécute directement les paiements sans attendre de confirmation.
3570
+ *
3571
+ * **Note :** Si `true`, le business doit confirmer via `PUT /paiements-groupes/{instructionId}/confirmations` dans un délai adaptatif (24h, 48h ou 72h selon le nombre de transactions).
3572
+ *
3573
+ */
3574
+ confirmation?: boolean;
3575
+ /**
3576
+ * Le motif commun à tous les paiements du groupe.
3577
+ * Si tous les paiements du groupe ont le même motif, ce champ peut être utilisé pour optimiser la taille du lot.
3578
+ * Dans le cas contraire, chaque transaction doit avoir son propre motif.
3579
+ *
3580
+ */
3581
+ motif?: string;
3582
+ transactions: Array<{
3583
+ /**
3584
+ * Identifiant de la transaction dans le SI du client
3585
+ */
3586
+ txId: string;
3587
+ /**
3588
+ * L'alias du client payé, bénéficiaire de l'ordre de paiement
3589
+ */
3590
+ payeAlias: string;
3591
+ /**
3592
+ * Le montant du transfert de fonds à effectuer
3593
+ */
3594
+ montant: number;
3595
+ /**
3596
+ * Le motif du paiement.
3597
+ * Si tous les paiements du groupe ont le même motif, ce champ doit être omis, et le motif du groupe doit être utilisé.
3598
+ *
3599
+ */
3600
+ motif?: string;
3601
+ /**
3602
+ * Le numéro / la référence du document justificatif
3603
+ */
3604
+ refDocNumero?: string;
3605
+ refDocType?: RefDocType;
3606
+ }>;
3607
+ };
3608
+
3609
+ type PaiementImmediatRequest = (PaiementRequest & {
3610
+ /**
3611
+ * Lorsque le PSP recoit la demande, il effectue une recherche d'alias en vue d'obtenir les informations de compte du client payé.
3612
+ *
3613
+ * L'attribut `confirmation` permet au client d'indiquer à son PSP si celui-ci doit lui retourner les resultats de la recherche d'alias pour confirmation:
3614
+ *
3615
+ * - La valeur `true` de la validation indique au PSP qu'il doit retourner le resultat de la recherche d'alias au client et attendre une validation avant d'effectuer le paiement.
3616
+ * - La valeur `false` indique qu'une validation n'est pas requise pour la demande, de ce fait, le PSP transmet la demande à PI sans attendre la validation du client business.
3617
+ *
3618
+ */
3619
+ confirmation: boolean;
3620
+ });
3621
+
3622
+ type PaiementImmediatConfirmationReponse = (PaiementImmediatRequest & {
3623
+ statut?: PaiementImmediatConfirmationReponse.statut;
3624
+ /**
3625
+ * Identifiant unique de bout en bout de la transaction
3626
+ */
3627
+ end2endId?: string;
3628
+ /**
3629
+ * Le nom du payé
3630
+ */
3631
+ payeNom?: string;
3632
+ /**
3633
+ * Le pays de residence du payé
3634
+ */
3635
+ payePays?: string;
3636
+ /**
3637
+ * Date de création du paiement
3638
+ */
3639
+ dateDemande?: string;
3640
+ /**
3641
+ * Date de confirmation de la demande si le client payé avait requis la confirmation du paiement.
3642
+ * Il s'agit de la date et heure à laquelle le business a confirmé l'envoi du paiement.
3643
+ *
3644
+ */
3645
+ dateConfirmation?: string;
3646
+ });
3647
+ declare namespace PaiementImmediatConfirmationReponse {
3648
+ enum statut {
3649
+ ENVOYE = "ENVOYE"
3650
+ }
3651
+ }
3652
+
3653
+ /**
3654
+ * Confirmation du paiement immédiat
3655
+ */
3656
+ type PaiementImmediatConfirmationRequestAccepter = {
3657
+ /**
3658
+ * La décision à `true` indique la confirmation du paiement.
3659
+ */
3660
+ decision: boolean;
3661
+ };
3662
+
3663
+ /**
3664
+ * Annulation du paiement
3665
+ */
3666
+ type PaiementImmediatConfirmationRequestRejeter = {
3667
+ /**
3668
+ * La décision à `false` indique l'annulation du paiement.
3669
+ */
3670
+ decision: boolean;
3671
+ };
3672
+
3673
+ type PaiementImmediatConfirmationRequest = (PaiementImmediatConfirmationRequestAccepter | PaiementImmediatConfirmationRequestRejeter);
3674
+
3675
+ type PaiementImmediatReponse = ((PaiementRequest & {
3676
+ statut: PaiementImmediatReponse.statut;
3677
+ confirmation: boolean;
3678
+ /**
3679
+ * Le nom du payé
3680
+ */
3681
+ payeNom: string;
3682
+ /**
3683
+ * Le pays de residence du payé
3684
+ */
3685
+ payePays: string;
3686
+ /**
3687
+ * Identifiant unique de bout en bout de la transaction
3688
+ */
3689
+ end2endId: string;
3690
+ /**
3691
+ * Date de création du paiement: date et heure à laquelle le paiement a été initié par le client business.
3692
+ *
3693
+ */
3694
+ dateDemande: string;
3695
+ /**
3696
+ * Les frais appliqués par le participant (Optionnel - dépend du modèle de facturation utilisé par le participant)
3697
+ */
3698
+ montantFrais?: number;
3699
+ }) | (PaiementRequest & {
3700
+ statut: PaiementImmediatReponse.statut;
3701
+ confirmation: boolean;
3702
+ /**
3703
+ * Le nom du bénéficiaire
3704
+ */
3705
+ payeNom: string;
3706
+ /**
3707
+ * Le pays de résidence du bénéficiaire
3708
+ */
3709
+ payePays: string;
3710
+ /**
3711
+ * Identifiant unique de bout en bout de la transaction
3712
+ */
3713
+ end2endId: string;
3714
+ /**
3715
+ * Date de création du paiement: date et heure à laquelle le paiement a été initié par le client business.
3716
+ *
3717
+ */
3718
+ dateDemande: string;
3719
+ /**
3720
+ * Date d'acceptation de la demande: date et heure à laquelle l'ordre de transfert du client business est reçu par le participant.
3721
+ *
3722
+ * Dans le cas d'un paiement sans confirmation, elle correspond également à `dateDemande`.
3723
+ *
3724
+ */
3725
+ dateConfirmation: string;
3726
+ /**
3727
+ * Date d'envoi du paiement
3728
+ */
3729
+ dateEnvoi?: string;
3730
+ /**
3731
+ * Les frais appliqués par le participant (Optionnel - dépend du modèle de facturation utilisé par le participant)
3732
+ */
3733
+ montantFrais?: number;
3734
+ }) | (PaiementRequest & {
3735
+ statut: PaiementImmediatReponse.statut;
3736
+ statutRaison: PaiementStatutRaison;
3737
+ /**
3738
+ * Le nom du bénéficiaire (présent seulement si la recherche d'alias a réussi).
3739
+ *
3740
+ * Absent si statutRaison = BE23 (alias invalide).
3741
+ * Présent si statutRaison = DU03 (txId dupliqué) ou autres codes.
3742
+ *
3743
+ */
3744
+ payeNom?: string;
3745
+ /**
3746
+ * Le pays de résidence du bénéficiaire (présent seulement si la recherche d'alias a réussi).
3747
+ *
3748
+ * Absent si statutRaison = BE23 (alias invalide).
3749
+ * Présent si statutRaison = DU03 (txId dupliqué) ou autres codes.
3750
+ *
3751
+ */
3752
+ payePays?: string;
3753
+ /**
3754
+ * Identifiant unique de bout en bout de la transaction
3755
+ */
3756
+ end2endId: string;
3757
+ /**
3758
+ * Date de création du paiement
3759
+ */
3760
+ dateDemande: string;
3761
+ /**
3762
+ * Date à laquelle le paiement a été rejeté
3763
+ */
3764
+ dateReponse?: string;
3765
+ }));
3766
+ declare namespace PaiementImmediatReponse {
3767
+ enum statut {
3768
+ INITIE = "INITIE"
3769
+ }
3770
+ }
3771
+
3772
+ type PaiementListe = {
3773
+ data?: Array<Paiement>;
3774
+ meta?: ListeMeta;
3775
+ };
3776
+
3777
+ type Problem7807 = {
3778
+ /**
3779
+ * Référence URI qui identifie le type de problème
3780
+ */
3781
+ type?: string;
3782
+ /**
3783
+ * Un bref résumé du problème
3784
+ */
3785
+ title?: string;
3786
+ /**
3787
+ * Le code d'état HTTP pour cette occurrence du problème
3788
+ */
3789
+ status?: number;
3790
+ /**
3791
+ * Explication spécifique à cette occurrence du problème
3792
+ */
3793
+ detail?: string;
3794
+ /**
3795
+ * Liste des paramètres invalides
3796
+ */
3797
+ 'invalid-params'?: Array<{
3798
+ /**
3799
+ * Nom du paramètre invalide
3800
+ */
3801
+ name?: string;
3802
+ /**
3803
+ * Raison de l'invalidité du paramètre
3804
+ */
3805
+ reason?: string;
3806
+ }>;
3807
+ };
3808
+
3809
+ declare enum WebhooksEvents {
3810
+ PAIEMENT_RECU = "PAIEMENT_RECU",
3811
+ PAIEMENT_ENVOYE = "PAIEMENT_ENVOYE",
3812
+ PAIEMENT_REJETE = "PAIEMENT_REJETE",
3813
+ RTP_RECU = "RTP_RECU",
3814
+ RTP_REJETE = "RTP_REJETE",
3815
+ ANNULATION_DEMANDE = "ANNULATION_DEMANDE",
3816
+ ANNULATION_REJETE = "ANNULATION_REJETE",
3817
+ RETOUR_ENVOYE = "RETOUR_ENVOYE",
3818
+ RETOUR_REJETE = "RETOUR_REJETE",
3819
+ RETOUR_RECU = "RETOUR_RECU"
3820
+ }
3821
+
3822
+ type WebhookCreationRequest = {
3823
+ callbackUrl: string;
3824
+ /**
3825
+ * l'alias auquel est rattaché le point de rappel pour recevoir des notifications liées à un alias de compte
3826
+ *
3827
+ */
3828
+ alias?: string;
3829
+ /**
3830
+ * les évènements dont les notifications seront envoyés sur le point de terminaison
3831
+ *
3832
+ */
3833
+ events?: Array<WebhooksEvents>;
3834
+ };
3835
+
3836
+ type WebhookCreationResponse = (WebhookCreationRequest & {
3837
+ id?: string;
3838
+ /**
3839
+ * Date et heure d'enregistrement du webhook. Conforme à la RFC ISO 8601
3840
+ */
3841
+ dateCreation?: string;
3842
+ /**
3843
+ * Le secret doit être enregistré de façon sécurisée . Il n'est envoyé qu'à la création du webhook.
3844
+ */
3845
+ secret?: string;
3846
+ });
3847
+
3848
+ type WebhookData = ({
3849
+ id?: string;
3850
+ /**
3851
+ * Date et heure d'enregistrement du webhook. Conforme à la RFC ISO 8601
3852
+ */
3853
+ dateCreation?: string;
3854
+ } & WebhookCreationRequest);
3855
+
3856
+ type WebhookEvent = {
3857
+ evCode: WebhooksEvents;
3858
+ /**
3859
+ * Date et heure de l'événement.
3860
+ * POur un transfert irrévocable par exemple c'est la date d'irrévocabilité
3861
+ *
3862
+ */
3863
+ evDate: string;
3864
+ /**
3865
+ * Identifiant de la transaction dans le SI du client
3866
+ */
3867
+ txId: string;
3868
+ /**
3869
+ * Identifiant de l'ordre de transfert ou de la demande de paiement
3870
+ */
3871
+ end2endId: string;
3872
+ /**
3873
+ * Identifiant de l'instruction de paiement (Pour les paiements en masse)
3874
+ */
3875
+ instructionId?: string;
3876
+ /**
3877
+ * Le montant du paiement ou demande de paiement ou demande retour
3878
+ */
3879
+ montant: number;
3880
+ /**
3881
+ * Le nom du client payeur ou payé en fonction du type d'événement
3882
+ */
3883
+ client?: string;
3884
+ /**
3885
+ * Alias de compte du client business sur lequel porte l'événement
3886
+ */
3887
+ alias?: string;
3888
+ /**
3889
+ * Le motif d'un paiement reçu ou envoyé est un texte libre renseigné par le client payeur.
3890
+ *
3891
+ * Le motif d'une demande de paiement reçue est un texte libre renseigné par le client payé.
3892
+ *
3893
+ * En dehors de ces cas, le motif est l'un des codes suivants en fonction du type d'événement :
3894
+ *
3895
+ * **Motifs de rejet des demandes de paiement :**
3896
+ *
3897
+ * - **AC04** (Closed Account Number) : Le compte du client payeur est clôturé.
3898
+ * - **AC06** (Blocked Account) : Le compte du client payeur est bloqué.
3899
+ * - **AEXR** (Already Expired RTP) : La demande de paiement a déjà expiré.
3900
+ * - **AG03** (Transaction Not Supported) : Le client n'est pas autorisé à payer en mode débit différé.
3901
+ * - **AG10** (Agent Suspended) : Le participant payeur est suspendu.
3902
+ * - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
3903
+ * - **ALAC** (Already Accepted RTP) : La demande de paiement a déjà été acceptée.
3904
+ * - **AM02** (Not Allowed Amount) : Le montant spécifique de la transaction dépasse le montant maximum autorisé.
3905
+ * - **AM09** (Wrong Amount) : Le montant reçu ne correspond pas au montant convenu ou attendu.
3906
+ * - **AM14** (Amount Exceeds Agreed Limit) : Le montant de la transaction fait dépasser le plafond de débit différé du client.
3907
+ * - **APAR** (Already Paid RTP) : Le paiement demandé a déjà été effectué par le payeur.
3908
+ * - **ARFR** (Already Refused RTP) : La demande de paiement a déjà été refusée.
3909
+ * - **ARJR** (Already Rejected RTP) : La demande de paiement a déjà été rejetée.
3910
+ * - **BE01** (Inconsistent With End Customer) : L'identification du client final n'est pas liée au numéro de compte associé.
3911
+ * - **BE05** (Unrecognised Initiating Party) : La partie qui a initié le message n'est pas reconnue par le client final.
3912
+ * - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
3913
+ * - **RR07** (Remittance Information Invalid) : Le justificatif de la demande de paiement est invalide (par exemple, le numéro de facture est invalide).
3914
+ *
3915
+ * **Motifs de rejet des paiements :**
3916
+ *
3917
+ * - **AB03** (Aborted Settlement Timeout) : Message en timeout lors du règlement.
3918
+ * - **AB04** (Aborted Settlement Fatal Error) : Transaction rejetée à cause d'une erreur fatale.
3919
+ * - **AB08** (Offline Creditor Agent) : Le système du participant payé n'est pas accessible.
3920
+ * - **AB09** (Error Creditor Agent) : Transaction rejetée à cause d'une erreur chez le participant payé.
3921
+ * - **AC03** (Invalid Creditor Account Number) : Le numéro de compte du payé est invalide.
3922
+ * - **AC06** (Blocked Account) : Le compte spécifié est bloqué.
3923
+ * - **AC07** (Closed Creditor Account Number) : Le compte du payé est clôturé.
3924
+ * - **AG01** (Transaction Forbidden) : Transaction interdite sur ce type de compte.
3925
+ * - **AG10** (Agent Suspended) : Le participant payeur est désactivé.
3926
+ * - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
3927
+ * - **AEXR** (Already Expired RTP) : La demande de paiement a déjà expiré.
3928
+ * - **ALAC** (Already Accepted RTP) : La demande de paiement a déjà été acceptée.
3929
+ * - **AM02** (Not Allowed Amount) : Le montant de la transaction est supérieur au maximum autorisé.
3930
+ * - **AM04** (Insufficient Funds) : Le solde de garantie du participant payeur est insuffisant.
3931
+ * - **AM09** (Wrong Amount) : Le montant du transfert est différent du montant attendu.
3932
+ * - **AM21** (Limit Exceeded) : Le montant de la transaction dépasse les limites convenues entre le participant et le client.
3933
+ * - **ARFR** (Already Refused RTP) : La demande de paiement a déjà été refusée.
3934
+ * - **ARJR** (Already Rejected RTP) : La demande de paiement a déjà été rejetée.
3935
+ * - **BE01** (Inconsistent With End Customer) : L'identification du client final n'est pas liée au numéro de compte associé.
3936
+ * - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
3937
+ * - **IRNR** (Initial RTP Never Received) : La demande de paiement n'a jamais été reçue.
3938
+ * - **RR04** (Regulatory Reason) : Raison règlementaire, notamment lorsque le bénéficiaire figure dans une liste d'interdiction.
3939
+ *
3940
+ * **Motifs d'une demandes d'annulation :**
3941
+ *
3942
+ * - **DUPL** (Duplicate Payment) : Déjà payé.
3943
+ * - **AM09** (Wrong Amount) : Erreur sur le montant.
3944
+ * - **AC03** (Invalid Creditor Account Number) : Erreur sur le destinataire.
3945
+ * - **SVNR** (Service Not Rendered) : Le paiement est annulé car le produit n'a pas été livré ou le service n'a pas été rendu.
3946
+ * - **FRAD** (Fraudulent Origin) : Annulation demandée à la suite d'une transaction dont l'origine est frauduleuse.
3947
+ *
3948
+ * **Motifs de rejet d'une demande d'annulation :**
3949
+ *
3950
+ * - **ARDT** (Already Returned) : La transaction est déjà retournée.
3951
+ * - **CUST** (Customer Decision) : Le client payé rejette la demande d'annulation.
3952
+ * - **AC04** (Closed Account Number) : Le numéro de compte spécifié a été clôturé dans les livres du participant payé.
3953
+ *
3954
+ * **Motifs d'un retour de fonds reçu ou envoyé :**
3955
+ *
3956
+ * - **AC06** (Blocked Account) : Le compte du payé est bloqué.
3957
+ * - **AC07** (Closed Creditor Account Number) : Le compte du payé est clôturé.
3958
+ * - **MD06** (Refund Request By End Customer) : Retour de fonds initié par le client payé.
3959
+ * - **CUST** (Requested By Customer) : Retour de fonds demandé suite à une demande d'annulation envoyée par le payeur.
3960
+ * - **FR01** (Fraud) : Retourné à la suite d'une fraude.
3961
+ * - **RR04** (Regulatory Reason) : Raison règlementaire, notamment lorsque le bénéficiaire figure dans une liste d'interdiction.
3962
+ *
3963
+ *
3964
+ * **Motifs de rejet d'un retour de fonds :**
3965
+ *
3966
+ * - **AB03** (Aborted Settlement Timeout) : Timeout.
3967
+ * - **AB04** (Aborted Settlement Fatal Error) : Transaction rejetée à cause d'une erreur fatale.
3968
+ * - **AG10** (Agent Suspended) : Le participant payeur est désactivé.
3969
+ * - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
3970
+ * - **AM04** (Insufficient Funds) : Le solde de garantie du participant payé est insuffisant.
3971
+ * - **AC04** (Closed Account Number) : Le compte du payeur est clôturé.
3972
+ * - **AC06** (Blocked Account) : Le compte du payeur est bloqué.
3973
+ * - **AG01** (Transaction Forbidden) : Transaction interdite sur ce type de compte.
3974
+ * - **AM21** (Limit Exceeded) : Le montant de la transaction dépasse les limites convenues entre le participant et le client.
3975
+ * - **RR04** (Regulatory Reason) : Raison règlementaire, notamment lorsque le bénéficiaire figure dans une liste d'interdiction.
3976
+ * - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
3977
+ *
3978
+ */
3979
+ motif?: string;
3980
+ /**
3981
+ * Le type de document justificatif associé à la transaction. Les types de documents disponibles sont :
3982
+ * - **QUOT** (Quotation) : Devis commercial détaillant les conditions d'offre.
3983
+ * - **PROF** (Proforma Invoice) : Facture pro forma, engagement préliminaire du vendeur (prix/conditions), sans enregistrement comptable réel.
3984
+ * - **CINV** (Commercial Invoice) : Facture commerciale standard pour la vente de biens ou services. Utilisée pour les paiements directs d'une facture émise par le vendeur.
3985
+ * - **CMCN** (Commercial Contract) : Contrat commercial entre les parties, stipulant les termes et conditions de la livraison de biens ou de services.
3986
+ * - **DISP** (Dispatch Advice) : Avis d'expédition ou bon de livraison.
3987
+ * - **PUOR** (Purchase Order) : Bon de commande émis par l'acheteur.
3988
+ * - **CONT** (Contract) : Document contractuel prouvant un accord entre vendeur et acheteur pour biens ou services.
3989
+ * - **HIRI** (Hire Invoice) : Facture pour location de ressources humaines (ex : intérim) ou biens/équipements.
3990
+ * - **INVS** (Invoice Signed) : Facture signée, validée électroniquement ou physiquement. Indique une approbation formelle avant paiement.
3991
+ * - **MSIN** (Metered Service Invoice) : Facture pour services mesurés (ex : gaz, électricité via compteur fixe). Inclut la consommation réelle.
3992
+ * - **SPRR** (Seller Presentment) : Document de présentation par le vendeur pour supporter l'acquisition (ex : preuve de livraison ou justificatif).
3993
+ * - **TISH** (Time Sheet) : Feuille de temps enregistrant les heures pour services/prestations ou livraison. Pour paiements basés sur le temps (ex : consulting, freelance).
3994
+ * - **USAR** (Usage Report) : Rapport d'utilisation indiquant le pattern de consommation (ex : SaaS, télécoms). Similaire à MSIN mais plus large (non forcément mesuré).
3995
+ * - **BOLD** (Bill Of Lading) : Document de transport maritime ou logistique (connaissement) prouvant l'expédition des marchandises. Spécifique au transport multimodal (ex : maritime, aérien).
3996
+ * - **SOAC** (Statement Of Account) : Relevé de compte émis par le fournisseur, listant les transactions enregistrées pour le débiteur (ex : factures, paiements, ajustements).
3997
+ * - **VCHR** (Voucher) : Document électronique de paiement (bon ou coupon) représentant une obligation ou un droit de paiement. Souvent utilisé pour des paiements préautorisés ou des remises spécifiques.
3998
+ *
3999
+ */
4000
+ refDocType?: WebhookEvent.refDocType;
4001
+ /**
4002
+ * Le numéro du document justificatif
4003
+ */
4004
+ refDocNumero?: string;
4005
+ };
4006
+ declare namespace WebhookEvent {
4007
+ /**
4008
+ * Le type de document justificatif associé à la transaction. Les types de documents disponibles sont :
4009
+ * - **QUOT** (Quotation) : Devis commercial détaillant les conditions d'offre.
4010
+ * - **PROF** (Proforma Invoice) : Facture pro forma, engagement préliminaire du vendeur (prix/conditions), sans enregistrement comptable réel.
4011
+ * - **CINV** (Commercial Invoice) : Facture commerciale standard pour la vente de biens ou services. Utilisée pour les paiements directs d'une facture émise par le vendeur.
4012
+ * - **CMCN** (Commercial Contract) : Contrat commercial entre les parties, stipulant les termes et conditions de la livraison de biens ou de services.
4013
+ * - **DISP** (Dispatch Advice) : Avis d'expédition ou bon de livraison.
4014
+ * - **PUOR** (Purchase Order) : Bon de commande émis par l'acheteur.
4015
+ * - **CONT** (Contract) : Document contractuel prouvant un accord entre vendeur et acheteur pour biens ou services.
4016
+ * - **HIRI** (Hire Invoice) : Facture pour location de ressources humaines (ex : intérim) ou biens/équipements.
4017
+ * - **INVS** (Invoice Signed) : Facture signée, validée électroniquement ou physiquement. Indique une approbation formelle avant paiement.
4018
+ * - **MSIN** (Metered Service Invoice) : Facture pour services mesurés (ex : gaz, électricité via compteur fixe). Inclut la consommation réelle.
4019
+ * - **SPRR** (Seller Presentment) : Document de présentation par le vendeur pour supporter l'acquisition (ex : preuve de livraison ou justificatif).
4020
+ * - **TISH** (Time Sheet) : Feuille de temps enregistrant les heures pour services/prestations ou livraison. Pour paiements basés sur le temps (ex : consulting, freelance).
4021
+ * - **USAR** (Usage Report) : Rapport d'utilisation indiquant le pattern de consommation (ex : SaaS, télécoms). Similaire à MSIN mais plus large (non forcément mesuré).
4022
+ * - **BOLD** (Bill Of Lading) : Document de transport maritime ou logistique (connaissement) prouvant l'expédition des marchandises. Spécifique au transport multimodal (ex : maritime, aérien).
4023
+ * - **SOAC** (Statement Of Account) : Relevé de compte émis par le fournisseur, listant les transactions enregistrées pour le débiteur (ex : factures, paiements, ajustements).
4024
+ * - **VCHR** (Voucher) : Document électronique de paiement (bon ou coupon) représentant une obligation ou un droit de paiement. Souvent utilisé pour des paiements préautorisés ou des remises spécifiques.
4025
+ *
4026
+ */
4027
+ enum refDocType {
4028
+ CINV = "CINV",
4029
+ CMCN = "CMCN",
4030
+ DISP = "DISP",
4031
+ PUOR = "PUOR",
4032
+ CONT = "CONT",
4033
+ HIRI = "HIRI",
4034
+ INVS = "INVS",
4035
+ MSIN = "MSIN",
4036
+ PROF = "PROF",
4037
+ QUOT = "QUOT",
4038
+ SPRR = "SPRR",
4039
+ TISH = "TISH",
4040
+ USAR = "USAR",
4041
+ BOLD = "BOLD",
4042
+ SOAC = "SOAC",
4043
+ VCHR = "VCHR"
4044
+ }
4045
+ }
4046
+
4047
+ type WebhookEventsList = {
4048
+ /**
4049
+ * Liste des événements notifiés
4050
+ */
4051
+ data: Array<WebhookEvent>;
4052
+ meta: {
4053
+ /**
4054
+ * Nombre total d'événements dans cette notification
4055
+ */
4056
+ total: number;
4057
+ };
4058
+ };
4059
+
4060
+ type WebhookList = {
4061
+ /**
4062
+ * Liste des webhooks configurés
4063
+ */
4064
+ data: Array<WebhookCreationResponse>;
4065
+ meta: {
4066
+ /**
4067
+ * Nombre total de webhooks configurés
4068
+ */
4069
+ total: number;
4070
+ };
4071
+ };
4072
+
4073
+ type WebhookModificationRequest = {
4074
+ callbackUrl?: string;
4075
+ alias?: string;
4076
+ };
4077
+
4078
+ declare class AliasService {
4079
+ /**
4080
+ * Créer un alias
4081
+ * Le répertoire des alias de compte permet de créer les types d'alias suivants :
4082
+ * - Une adresse de paiement, codifiée par SHID: cet alias est obtenu par génération d'une clé aléatoire unique sur 36 positions par le système.
4083
+ * - Un identifiant de compte marchand, codifié par MCOD: ce type d'alias est prévu pour supporter les paiements par code USSD.
4084
+ * - Un numéro de téléphone mobile, codifié par MBNO.
4085
+ *
4086
+ * Les types d'alias qu'on peut créer dépendent du type de client.
4087
+ * Les clients de type P (particuliers, personnes physiques) peuvent créer des alias de types MBNO et SHID.
4088
+ * Les clients de types C, B, et G (commerçants ou entreprises individuelles, entreprises, entités gouvernementales) peuvent créer des alias de types SHID et MCOD.
4089
+ *
4090
+ * Un client business peut créer plusieurs alias pour un compte donné.
4091
+ * Une limite de 20 alias par compte est fixée par défaut. Cette limite peut être augmentée selon les besoins du client.
4092
+ *
4093
+ * @returns AliasCreationReponse Opération effectuée avec succès
4094
+ * @throws ApiError
4095
+ */
4096
+ static aliasCreer({ numero, requestBody, }: {
4097
+ /**
4098
+ * Le numéro de compte sur lequel porte la demande
4099
+ */
4100
+ numero: string;
4101
+ /**
4102
+ * Données pour la création d'alias.
4103
+ */
4104
+ requestBody: AliasCreationRequest;
4105
+ }): CancelablePromise<AliasCreationReponse>;
4106
+ /**
4107
+ * Lister les alias
4108
+ * Ce point de terminaison permet de consulter la liste des alias d'un compte.
4109
+ *
4110
+ * @returns AliasReponseListe Succès de l'opération
4111
+ * @throws ApiError
4112
+ */
4113
+ static aliasLister({ numero, }: {
4114
+ /**
4115
+ * Le numéro de compte sur lequel porte la demande
4116
+ */
4117
+ numero: string;
4118
+ }): CancelablePromise<AliasReponseListe>;
4119
+ /**
4120
+ * Supprimer un alias
4121
+ * Le client peut supprimer à tout moment un alias de compte.
4122
+ *
4123
+ * @returns void
4124
+ * @throws ApiError
4125
+ */
4126
+ static aliasSupprimer({ numero, cle, }: {
4127
+ /**
4128
+ * Le numéro de compte
4129
+ */
4130
+ numero: string;
4131
+ /**
4132
+ * La cle de l'alias
4133
+ */
4134
+ cle: string;
4135
+ }): CancelablePromise<void>;
4136
+ }
4137
+
4138
+ declare class ComptesService {
4139
+ /**
4140
+ * Détails d'un compte
4141
+ * Cet endpoint permet au client de consulter à tout moment les informations détaillées relatives à un compte spécifique.
4142
+ *
4143
+ * Les informations retournées incluent :
4144
+ * - Le type de compte (compte courant, épargne, etc.)
4145
+ * - Le numéro du compte
4146
+ * - La date d'ouverture du compte
4147
+ * - Le solde actuel du compte
4148
+ * - Le statut du compte (ouvert, bloqué ou clôturé)
4149
+ * - L'indicateur de pré-confirmation pour les opérations
4150
+ *
4151
+ * Cette consultation permet au client business de surveiller l'état de ses comptes en temps réel et de prendre des décisions éclairées concernant ses opérations financières.
4152
+ *
4153
+ * @returns CompteSolde Succès de l'opération
4154
+ * @throws ApiError
4155
+ */
4156
+ static compteSoldeConsulter({ numero, }: {
4157
+ /**
4158
+ * Le numéro de compte sur lequel porte la demande
4159
+ */
4160
+ numero: string;
4161
+ }): CancelablePromise<CompteSolde>;
4162
+ /**
4163
+ * Transfert intra-comptes
4164
+ * Le transfert intra-comptes est un transfert de fonds entre deux comptes détenus par la même entité juridique et domiciliés au sein de la même institution financière. Le compte source (débiteur/payeur) et le compte destination (créditeur/bénéficiaire) appartiennent donc au même client.
4165
+ *
4166
+ * @returns CompteTransfertIntraReponse Transfert initié avec succès.
4167
+ * @throws ApiError
4168
+ */
4169
+ static compteTransfertIntraCreer({ requestBody, }: {
4170
+ /**
4171
+ * Données à fournir pour effectuer un transfert intra-comptes.
4172
+ *
4173
+ * Le client business peut effectuer un transfert intra-comptes en utilisant les numéros de compte ou les alias de compte.
4174
+ * La création d'alias n'étant possible que sur certains types de comptes, le participant doit supporter les deux modes de transfert.
4175
+ *
4176
+ */
4177
+ requestBody: CompteTransfertIntraRequest;
4178
+ }): CancelablePromise<CompteTransfertIntraReponse>;
4179
+ /**
4180
+ * Lister les transferts intra-comptes
4181
+ * @returns CompteOperationListe Succès de l'opération
4182
+ * @throws ApiError
4183
+ */
4184
+ static compteTransfertIntraLister({ statut, comptePayeur, comptePaye, dateEnvoi, dateIrrevocabilite, motif, page, size, sort, fields, }: {
4185
+ statut?: string;
4186
+ comptePayeur?: string;
4187
+ comptePaye?: string;
4188
+ dateEnvoi?: string;
4189
+ dateIrrevocabilite?: string;
4190
+ motif?: string;
4191
+ page?: string;
4192
+ size?: string;
4193
+ sort?: string;
4194
+ fields?: any;
4195
+ }): CancelablePromise<CompteOperationListe>;
4196
+ }
4197
+
4198
+ declare class DemandeAnnulationService {
4199
+ /**
4200
+ * Demander l'annulation d'un paiement
4201
+ * Ce point de terminaison permet de demander l'annulation d'un paiement envoyé.
4202
+ *
4203
+ * À l'acceptation de la demande d'annulation, le payé effectue un retour de fonds et le business recevra une notification `RETOUR_RECU` s'il a souscrit au service de webhook.
4204
+ *
4205
+ * Si le payé refuse la demande d'annulation, le business recevra une notification `ANNULATION_REJETE`.
4206
+ *
4207
+ * **Note importante sur l'idempotence :**
4208
+ *
4209
+ * Cet endpoint utilise **POST (pas PUT)** car chaque appel envoie une **nouvelle demande d'annulation** au PSP bénéficiaire.
4210
+ *
4211
+ * **Comportement :**
4212
+ * - Premier appel → Nouvelle demande d'annulation envoyée
4213
+ * - Deuxième appel → **Nouvelle demande d'annulation envoyée** (pas idempotent)
4214
+ * - Troisième appel → **Nouvelle demande d'annulation envoyée**
4215
+ *
4216
+ * **Cas d'usage :**
4217
+ * - La première demande a été refusée, vous réessayez
4218
+ * - Vous voulez relancer une demande en attente
4219
+ * - Vous avez de nouvelles informations justifiant l'annulation
4220
+ *
4221
+ * @returns Paiement Demande d'annulation envoyée
4222
+ * @throws ApiError
4223
+ */
4224
+ static demandeAnnulationEnvoyer({ end2EndId, requestBody, }: {
4225
+ /**
4226
+ * L'identifiant unique de bout en bout de la transaction
4227
+ */
4228
+ end2EndId: string;
4229
+ requestBody: PaiementAnnulationRequest;
4230
+ }): CancelablePromise<Paiement>;
4231
+ /**
4232
+ * Répondre à une demande d'annulation
4233
+ * Ce point de terminaison permet au business de répondre à une demande d'annulation de paiement.
4234
+ *
4235
+ * Le business peut accepter ou refuser la demande d'annulation :
4236
+ * - `decision: true` : Accepte la demande d'annulation (le business effectuera un retour de fonds)
4237
+ * - `decision: false` : Refuse la demande d'annulation
4238
+ *
4239
+ * **Idempotence** : Cet endpoint est idempotent.
4240
+ * - Premier appel avec `decision: true` → Accepte la demande, retourne `200 OK {statut: "ACCEPTEE"}`
4241
+ * - Appels suivants avec `decision: true` → Retourne `200 OK` avec l'état actuel - idempotent
4242
+ * - Premier appel avec `decision: false` → Refuse la demande, retourne `200 OK {statut: "REJETEE"}`
4243
+ * - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "REJETEE"}` (idempotent)
4244
+ * - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà refusée)
4245
+ * - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà acceptée)
4246
+ *
4247
+ * @returns Paiement Réponse à la demande d'annulation enregistrée.
4248
+ *
4249
+ * La réponse retourne l'objet `Paiement` complet avec les champs mis à jour selon la décision :
4250
+ *
4251
+ * **En cas d'acceptation (`decision: true`)** :
4252
+ * - `annulationStatut` : Mis à jour pour indiquer l'acceptation
4253
+ * - `annulationDateReponse` : Date et heure de la réponse à la demande d'annulation
4254
+ * - Un retour de fonds est automatiquement initié par le participant, donc les champs suivants sont également renseignés :
4255
+ * - `retourStatut` : Statut du retour de fonds (ex: `INITIE`, `ENVOYE`, `IRREVOCABLE`)
4256
+ * - `retourStatutRaison` : Raison du statut du retour de fonds
4257
+ * - `retourDateDemande` : Date de création du retour de fonds
4258
+ * - `retourDateIrrevocabilite` : Date à laquelle le retour de fonds est irrévocable (si applicable)
4259
+ *
4260
+ * **En cas de rejet (`decision: false`)** :
4261
+ * - `annulationStatut` : Mis à jour pour indiquer le rejet (ex: `REJETE`)
4262
+ * - `annulationDateReponse` : Date et heure de la réponse à la demande d'annulation
4263
+ * - Les champs `retour*` ne sont **pas** renseignés car aucun retour de fonds n'est effectué
4264
+ *
4265
+ * @throws ApiError
4266
+ */
4267
+ static demandeAnnulationRepondre({ end2EndId, requestBody, }: {
4268
+ /**
4269
+ * L'identifiant unique de bout en bout de la transaction
4270
+ */
4271
+ end2EndId: string;
4272
+ /**
4273
+ * La réponse du business à la demande d'annulation
4274
+ */
4275
+ requestBody: PaiementAnnulationReponseRequest;
4276
+ }): CancelablePromise<Paiement>;
4277
+ }
4278
+
4279
+ declare class DemandesDePaiementService {
4280
+ /**
4281
+ * Envoyer une demande
4282
+ * Ce point de terminaison permet d'envoyer une demande de paiement.
4283
+ *
4284
+ * Le business peut définir le champ `confirmation` à `true` pour demander une validation en deux étapes : le PSP retournera d'abord le résultat de la recherche d'alias (avec le nom et le pays du payeur), puis attendra une confirmation explicite avant d'envoyer la demande de paiement au payeur via l'endpoint `PUT /demandes-paiements/{txId}/confirmations`.
4285
+ *
4286
+ * Si le champ `confirmation` n'est pas défini ou est à `false`, le système envoie directement la demande de paiement au payeur.
4287
+ *
4288
+ * **Timeout de confirmation** : Si le business demande une validation en deux étapes , il dispose de **24 heures** pour confirmer ou annuler. Passé ce délai, la demande expire automatiquement.
4289
+ *
4290
+ * @returns DemandePaiementReponse Demande de paiement traitée. Le champ `statut` indique le résultat :
4291
+ * - `INITIE` : En attente de confirmation (si `confirmation: true`)
4292
+ * - `ENVOYE` : Demande envoyée au payeur avec succès (si `confirmation: false`)
4293
+ * - `REJETE` : Demande rejetée. Le champ `statutRaison` contient le code d'erreur :
4294
+ * - `DU03` : txId dupliqué (déjà utilisé)
4295
+ * - `BE23` : Alias payeur invalide
4296
+ * - Autres codes ISO 20022
4297
+ *
4298
+ * @throws ApiError
4299
+ */
4300
+ static demandePaiementCreer({ requestBody, }: {
4301
+ /**
4302
+ * Données pour envoyer une demande de paiement.
4303
+ */
4304
+ requestBody: DemandePaiementRequest;
4305
+ }): CancelablePromise<DemandePaiementReponse>;
4306
+ /**
4307
+ * Lister les demandes
4308
+ * Ce point de terminaison permet de lister les demandes de paiements effectuées par le client.
4309
+ * @returns DemandePaiementListe Succès de l'opération
4310
+ * @throws ApiError
4311
+ */
4312
+ static demandePaiementLister({ payeAlias, payeCompte, dateEnvoi, dateLimitePaiement, statut, categorie, payeurAlias, payeurCompte, montantAchat, montantRetrait, debitDiffere, remise, motif, refDocType, instructionId, page, size, sort, fields, }: {
4313
+ payeAlias?: string;
4314
+ payeCompte?: string;
4315
+ dateEnvoi?: string;
4316
+ dateLimitePaiement?: string;
4317
+ statut?: 'INITIE' | 'ENVOYE' | 'IRREVOCABLE' | 'REJETE';
4318
+ categorie?: '631' | '500' | '521' | '401';
4319
+ payeurAlias?: string;
4320
+ payeurCompte?: string;
4321
+ montantAchat?: number;
4322
+ montantRetrait?: number;
4323
+ debitDiffere?: boolean;
4324
+ remise?: boolean;
4325
+ motif?: string;
4326
+ refDocType?: string;
4327
+ instructionId?: string;
4328
+ page?: string;
4329
+ size?: number;
4330
+ sort?: string;
4331
+ fields?: any;
4332
+ }): CancelablePromise<DemandePaiementListe>;
4333
+ /**
4334
+ * Consulter une demande
4335
+ * Cet point de terminaison permet de consulter les details d'une demande de paiement.
4336
+ *
4337
+ * @returns DemandePaiementConsultationReponse Opération effectuée avec succès
4338
+ * @throws ApiError
4339
+ */
4340
+ static demandePaiementRecuperer({ txId, }: {
4341
+ /**
4342
+ * L'identifiant de la transaction dans le SI du client business
4343
+ */
4344
+ txId: string;
4345
+ }): CancelablePromise<DemandePaiementConsultationReponse>;
4346
+ /**
4347
+ * Confirmer la demande
4348
+ * Ce point de terminaison permet d'envoyer la confirmation de l'envoi d'une demande de paiement.
4349
+ *
4350
+ * Le client business confirme oui ou non si le PSP peut envoyer la demande au payeur après vérification des informations d'identification (nom et pays du payeur).
4351
+ *
4352
+ * **Idempotence** : Cet endpoint est idempotent.
4353
+ * - Premier appel avec `decision: true` → Envoie la demande, retourne `200 OK {statut: "ENVOYE"}`
4354
+ * - Appels suivants avec `decision: true` → Retourne `200 OK` avec l'état actuel (ENVOYE, IRREVOCABLE, ou REJETE) - idempotent
4355
+ * - Premier appel avec `decision: false` → Annule, retourne `200 OK {statut: "ANNULE"}`
4356
+ * - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "ANNULE"}` (idempotent)
4357
+ * - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà annulé)
4358
+ * - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà confirmé)
4359
+ *
4360
+ * **Timeout** : La confirmation doit être envoyée dans les **24 heures** suivant la création de la demande. Passé ce délai, la demande expire automatiquement et ne peut plus être confirmée.
4361
+ *
4362
+ * **Changement de décision** : Une fois une décision prise, elle est définitive. Impossible de confirmer après avoir annulé, et vice-versa.
4363
+ *
4364
+ * @returns DemandePaiementConfirmationReponse Opération effectuée avec succès
4365
+ * @throws ApiError
4366
+ */
4367
+ static demandePaiementConfirmer({ txId, requestBody, }: {
4368
+ /**
4369
+ * L'identifiant de la transaction dans le SI du payé
4370
+ */
4371
+ txId: string;
4372
+ /**
4373
+ * Le client envoie oui ou non s'il confirme l'envoi de la demande
4374
+ */
4375
+ requestBody: DemandePaiementConfirmationRequest;
4376
+ }): CancelablePromise<DemandePaiementConfirmationReponse>;
4377
+ /**
4378
+ * Accepter ou rejeter la demande
4379
+ * Ce point de terminaison permet au client d'accepter ou de rejeter une demande de paiement reçue.
4380
+ * @returns any Opération effectuée avec succès
4381
+ * @throws ApiError
4382
+ */
4383
+ static demandePaiementRepondre({ txId, requestBody, }: {
4384
+ /**
4385
+ * L'identifiant de la transaction dans le SI du client
4386
+ */
4387
+ txId: string;
4388
+ /**
4389
+ * Réponse à la demande de paiement.
4390
+ */
4391
+ requestBody: DemandePaiementReponseRequest;
4392
+ }): CancelablePromise<any>;
4393
+ }
4394
+
4395
+ declare class DemandesDePaiementEnMasseService {
4396
+ /**
4397
+ * Envoyer une demande de paiement en masse
4398
+ * Ce point de terminaison permet au client business d'envoyer plusieurs demandes de paiement à la fois.
4399
+ *
4400
+ * La catégorie des demandes de paiement en masse est toujours `401` (Autres demandes de paiement de facture).
4401
+ *
4402
+ * **Traitement asynchrone :** La création retourne immédiatement `202 Accepted`. Le traitement des transactions se fait de manière asynchrone.
4403
+ *
4404
+ * **Sans confirmation (`confirmation: false` ou non spécifié) :**
4405
+ * - Les transactions sont créées et validées (unicité des txId)
4406
+ * - Les demandes de paiement sont envoyées directement aux payeurs
4407
+ * - Les transactions avec txId dupliqué sont automatiquement rejetées avec le code `DU03`
4408
+ * - Les transactions avec alias de payeur invalide sont automatiquement rejetées avec le code `BE23`
4409
+ *
4410
+ * **Avec confirmation (`confirmation: true`) :**
4411
+ * - Les transactions sont créées et validées (unicité des txId + recherche d'alias des payeurs)
4412
+ * - Les transactions avec alias de payeur invalide sont rejetées avec le code `BE23`
4413
+ * - Les transactions avec txId dupliqué sont rejetées avec le code `DU03`
4414
+ * - Les transactions valides passent à l'état `INITIE` avec les noms et pays des payeurs
4415
+ * - Le business dispose d'un **délai adaptatif** pour confirmer ou annuler via `PUT /demandes-paiements-groupes/{instructionId}/confirmations` :
4416
+ * - **1 à 500 transactions** : 24 heures
4417
+ * - **501 à 1000 transactions** : 48 heures
4418
+ * - **Plus de 1000 transactions** : 72 heures
4419
+ * - Lors de la confirmation, seules les transactions `INITIE` sont envoyées (les transactions `REJETE` sont automatiquement exclues)
4420
+ * - Passé le délai, la demande expire automatiquement
4421
+ *
4422
+ * **Consultation des détails :**
4423
+ * - Statut global du bulk : `GET /demandes-paiements-groupes/{instructionId}`
4424
+ * - Liste de toutes les transactions : `GET /demandes-paiements?instructionId={instructionId}`
4425
+ * - Seulement les rejetées (validation) : `GET /demandes-paiements?instructionId={instructionId}&statut=REJETE`
4426
+ * - Seulement les valides (avec noms/pays des payeurs) : `GET /demandes-paiements?instructionId={instructionId}&statut=INITIE`
4427
+ *
4428
+ * **Convention de nommage des instructionId (important) :**
4429
+ *
4430
+ * L'`instructionId` doit être **unique** pour chaque création de bulk. Pour faciliter le suivi métier, nous recommandons la convention suivante :
4431
+ *
4432
+ * ```
4433
+ * <IDENTIFIANT_METIER>-<NUMERO_TENTATIVE>
4434
+ * ```
4435
+ *
4436
+ * **Exemples :**
4437
+ * - Première tentative : `FACTURES-2025-01-1` (factures de janvier 2025, tentative 1)
4438
+ * - Deuxième tentative : `FACTURES-2025-01-2` (corrections après échecs)
4439
+ * - Troisième tentative : `FACTURES-2025-01-3` (nouvelles corrections)
4440
+ *
4441
+ * **Avantages :**
4442
+ * - ✅ Chaque bulk a un statut indépendant (INITIE, CONFIRME, ANNULE)
4443
+ * - ✅ Traçabilité claire des tentatives successives
4444
+ * - ✅ Possibilité de filtrer par identifiant métier : `GET /demandes-paiements?instructionId[beginsWith]=FACTURES-2025-01`
4445
+ * - ✅ Respect de l'unicité de l'instructionId
4446
+ *
4447
+ * @returns string La demande a été acceptée et est en cours de traitement.
4448
+ *
4449
+ * Consultez le statut via `GET /demandes-paiements-groupes/{instructionId}`.
4450
+ *
4451
+ * @throws ApiError
4452
+ */
4453
+ static demandePaiementGroupeCreer({ requestBody, }: {
4454
+ requestBody: DemandePaiementEnMasseRequest;
4455
+ }): CancelablePromise<string>;
4456
+ /**
4457
+ * Détails d'une demande de paiement en masse
4458
+ * Ce point de terminaison permet de consulter les détails d'une demande de paiement en masse.
4459
+ *
4460
+ * **Statut du bulk :**
4461
+ * - `INITIE` : Créée avec confirmation demandée, en attente de confirmation
4462
+ * - `CONFIRME` : Confirmée par le business (si confirmation demandée) ou en cours de traitement (si sans confirmation)
4463
+ * - `ANNULE` : Annulée par le business avant confirmation (seulement si confirmation demandée)
4464
+ *
4465
+ * **Note :**
4466
+ * - Si créée **avec confirmation** (`confirmation: true`) : Le statut évolue de `INITIE` → `CONFIRME` ou `ANNULE`
4467
+ * - Si créée **sans confirmation** (`confirmation: false`) : Le statut est directement `CONFIRME` (aucune action requise du business)
4468
+ *
4469
+ * **Vérification de fin de validation (important pour confirmation) :**
4470
+ *
4471
+ * Lorsque `confirmation: true`, la validation des transactions se fait de manière asynchrone.
4472
+ * Pour savoir si la validation est terminée et que vous pouvez confirmer, vérifiez que :
4473
+ *
4474
+ * ```
4475
+ * transactionsInitiees + transactionsRejetees = transactionsTotal
4476
+ * ```
4477
+ *
4478
+ * - Si égalité → Validation terminée, vous pouvez confirmer ✅
4479
+ * - Si inégalité → Validation en cours, attendez encore (consultez à nouveau plus tard) ⏳
4480
+ *
4481
+ * Le détail de chaque transaction se consulte via `GET /demandes-paiements?txId={txId}`.
4482
+ *
4483
+ * **Consultation des transactions individuelles :**
4484
+ * Pour obtenir la liste détaillée des transactions (avec noms des payeurs, codes d'erreur, etc.), utilisez :
4485
+ * - Toutes les transactions : `GET /demandes-paiements?instructionId={instructionId}`
4486
+ * - Seulement les rejetées : `GET /demandes-paiements?instructionId={instructionId}&statut=REJETE`
4487
+ * - Seulement les réussies : `GET /demandes-paiements?instructionId={instructionId}&statut=IRREVOCABLE`
4488
+ *
4489
+ * @returns DemandePaiementEnMasseStatutReponse Opération effectuée avec succès
4490
+ * @throws ApiError
4491
+ */
4492
+ static demandePaiementGroupeConsulter({ instructionId, }: {
4493
+ /**
4494
+ * L'identifiant de la demande de paiement en masse dans le SI du client
4495
+ */
4496
+ instructionId: string;
4497
+ }): CancelablePromise<DemandePaiementEnMasseStatutReponse>;
4498
+ /**
4499
+ * Confirmer la demande de paiement en masse
4500
+ * Ce point de terminaison permet de confirmer ou d'annuler une demande de paiement en masse créée avec `confirmation: true`.
4501
+ *
4502
+ * **Processus de vérification :**
4503
+ * 1. Après la création (`POST /demandes-paiements-groupes`), le participant valide toutes les transactions (unicité des txId + recherche d'alias des payeurs)
4504
+ * 2. Les transactions invalides sont automatiquement rejetées (`statut: REJETE`) avec codes `BE23` (alias invalide) ou `DU03` (txId dupliqué)
4505
+ * 3. Les transactions valides passent à l'état `INITIE` avec les noms et pays des payeurs
4506
+ * 4. Le business consulte via `GET /demandes-paiements-groupes/{instructionId}` pour vérifier la progression de la validation
4507
+ * 5. **La validation (unicité des txId + recherche d'alias) est terminée quand** : `transactionsInitiees + transactionsRejetees = transactionsTotal`
4508
+ * 6. Le business peut alors confirmer ou annuler l'envoi des demandes de paiement
4509
+ *
4510
+ * **Important :** La confirmation n'est possible que lorsque la validation de toutes les transactions est terminée.
4511
+ * Si le business tente de confirmer pendant que la validation est en cours, une erreur 403 sera retournée avec la progression actuelle.
4512
+ *
4513
+ * **Comportement de la confirmation :**
4514
+ * - `decision: true` → Le système envoie **automatiquement SEULEMENT** les demandes de paiement pour les transactions avec `statut: INITIE`
4515
+ * - Les transactions `REJETE` (erreurs de validation) sont **automatiquement exclues** (pas besoin de les lister)
4516
+ * - Le statut du bulk passe de `INITIE` à `CONFIRME`
4517
+ *
4518
+ * **Idempotence** : Cet endpoint est idempotent.
4519
+ * - Premier appel avec `decision: true` → Envoie les demandes, retourne `200 OK {statut: "CONFIRME"}`
4520
+ * - Appels suivants avec `decision: true` → Retourne `200 OK {statut: "CONFIRME"}` (idempotent, ne relance pas)
4521
+ * - Premier appel avec `decision: false` → Annule, retourne `200 OK {statut: "ANNULE"}`
4522
+ * - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "ANNULE"}` (idempotent)
4523
+ * - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà annulé)
4524
+ * - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà confirmé)
4525
+ *
4526
+ * **Timeout adaptatif** : Le délai pour confirmer dépend automatiquement du nombre de transactions :
4527
+ * - **1 à 500 transactions** : 24 heures
4528
+ * - **501 à 1000 transactions** : 48 heures
4529
+ * - **Plus de 1000 transactions** : 72 heures
4530
+ *
4531
+ * Passé ce délai, la demande expire automatiquement et ne peut plus être confirmée. Le délai exact est indiqué dans le champ `dateExpiration` retourné par `GET /demandes-paiements-groupes/{instructionId}`.
4532
+ *
4533
+ * **Changement de décision** : Une fois une décision prise, elle est définitive. Impossible de confirmer après avoir annulé, et vice-versa.
4534
+ *
4535
+ * @returns DemandePaiementEnMasseStatutReponse Confirmation enregistrée avec succès.
4536
+ * - Si `decision: true`, le statut passe à `CONFIRME` et les demandes de paiement sont envoyées
4537
+ * - Si `decision: false`, le statut passe à `ANNULE`
4538
+ *
4539
+ * @throws ApiError
4540
+ */
4541
+ static demandePaiementGroupeConfirmer({ instructionId, requestBody, }: {
4542
+ /**
4543
+ * L'identifiant de la demande de paiement en masse dans le SI du client
4544
+ */
4545
+ instructionId: string;
4546
+ /**
4547
+ * Le client envoie oui ou non s'il confirme l'envoi de la demande de paiement en masse.
4548
+ */
4549
+ requestBody: DemandePaiementEnMasseConfirmationRequest;
4550
+ }): CancelablePromise<DemandePaiementEnMasseStatutReponse>;
4551
+ }
4552
+
4553
+ declare class NotificationService {
4554
+ /**
4555
+ * Créer un lien de rappel.
4556
+ * Cet endpoint permet au client de configurer des webhooks (liens de rappel) pour recevoir des notifications en temps réel.
4557
+ *
4558
+ * Le client dispose d'une grande flexibilité dans la configuration de ses webhooks et peut choisir parmi plusieurs stratégies :
4559
+ *
4560
+ * **1. Callback URL général**
4561
+ * - Un seul point de rappel pour toutes les notifications
4562
+ * - Tous les événements de tous les comptes/alias sont envoyés à la même URL
4563
+ * - Configuration simple, idéale pour centraliser toutes les notifications
4564
+ *
4565
+ * **2. Callback URL par alias**
4566
+ * - Un point de rappel distinct pour chaque alias de compte
4567
+ * - Permet de router les notifications vers des systèmes différents selon le compte concerné
4568
+ * - Utile pour isoler les flux de notifications par compte ou par service
4569
+ *
4570
+ * **3. Callback URL par événement**
4571
+ * - Un point de rappel spécifique pour chaque type d'événement (PAIEMENT_RECU, RTP_RECU, etc.)
4572
+ * - Permet de traiter différemment chaque catégorie d'événement
4573
+ * - Facilite la séparation des traitements métier (paiements vs demandes vs retours)
4574
+ *
4575
+ * **4. Callback URL par événement et alias**
4576
+ * - Granularité maximale : un point de rappel pour chaque combinaison événement/alias
4577
+ * - Configuration la plus fine pour des besoins très spécifiques
4578
+ * - Permet de router précisément chaque notification vers le système approprié
4579
+ *
4580
+ * Cette flexibilité permet aux clients d'adapter la configuration des webhooks à leur architecture technique et à leurs besoins métier.
4581
+ *
4582
+ * @returns WebhookCreationResponse Webhook créé avec succès
4583
+ * @throws ApiError
4584
+ */
4585
+ static webhookCreer({ requestBody, }: {
4586
+ requestBody: WebhookCreationRequest;
4587
+ }): CancelablePromise<WebhookCreationResponse>;
4588
+ /**
4589
+ * Lister les webhooks
4590
+ * Endpoint pour lister les webhooks
4591
+ *
4592
+ * @returns WebhookList Liste des webhooks configurés
4593
+ * @throws ApiError
4594
+ */
4595
+ static webhookLister(): CancelablePromise<WebhookList>;
4596
+ /**
4597
+ * Modifier un Webhook
4598
+ * Endpoint pour la modification d'un webhook.
4599
+ *
4600
+ * @returns any Le Webhook a été modifié avec succès
4601
+ * @throws ApiError
4602
+ */
4603
+ static webhookModifier({ id, requestBody, }: {
4604
+ id: string;
4605
+ requestBody: WebhookModificationRequest;
4606
+ }): CancelablePromise<any>;
4607
+ /**
4608
+ * Supprimer un Webhook
4609
+ * Endpoint pour la suppression d'un webhook.
4610
+ *
4611
+ * @returns void
4612
+ * @throws ApiError
4613
+ */
4614
+ static webhookSupprimer({ id, }: {
4615
+ id: string;
4616
+ }): CancelablePromise<void>;
4617
+ /**
4618
+ * Recuperer un webhook
4619
+ * Endpoint pour la consultation des informations d'un Webhook
4620
+ * @returns WebhookData Details du webhook
4621
+ * @throws ApiError
4622
+ */
4623
+ static webhookConsulter({ id, }: {
4624
+ id: string;
4625
+ }): CancelablePromise<WebhookData>;
4626
+ }
4627
+
4628
+ declare class PaiementEnMasseService {
4629
+ /**
4630
+ * Envoyer un paiement en masse
4631
+ * Ce point de terminaison permet au client d'envoyer des paiements en masse.
4632
+ *
4633
+ * **Traitement asynchrone :** La création d'un paiement en masse retourne immédiatement `202 Accepted`. Le traitement des transactions se fait de manière asynchrone.
4634
+ *
4635
+ * **Sans confirmation (`confirmation: false` ou non spécifié) :**
4636
+ * - Les transactions sont créées et validées (unicité des txId)
4637
+ * - Les paiements sont exécutés directement
4638
+ * - Les transactions invalides (txId dupliqué) sont automatiquement rejetées avec le code `DU03`
4639
+ * - Le business peut suivre la progression via `GET /paiements-groupes/{instructionId}` et `GET /paiements?instructionId={instructionId}`
4640
+ *
4641
+ * **Avec confirmation (`confirmation: true`) :**
4642
+ * - Les transactions sont créées et validées (unicité des txId + recherche d'alias)
4643
+ * - Les transactions avec alias invalide sont automatiquement rejetées avec le code `BE23`
4644
+ * - Les transactions avec txId dupliqué sont rejetées avec le code `DU03`
4645
+ * - Les transactions valides passent à l'état `INITIE` et peuvent être consultées via `GET /paiements?instructionId={instructionId}&statut=INITIE`
4646
+ * - Le business dispose d'un **délai adaptatif** pour confirmer ou annuler via `PUT /paiements-groupes/{instructionId}/confirmations` :
4647
+ * - **1 à 500 transactions** : 24 heures
4648
+ * - **501 à 1000 transactions** : 48 heures
4649
+ * - **Plus de 1000 transactions** : 72 heures
4650
+ * - Lors de la confirmation, seules les transactions `INITIE` sont envoyées (les transactions `REJETE` sont automatiquement exclues)
4651
+ * - Passé le délai, la demande expire automatiquement
4652
+ *
4653
+ * **Consultation des détails :**
4654
+ * - Statut global du bulk : `GET /paiements-groupes/{instructionId}`
4655
+ * - Liste de toutes les transactions : `GET /paiements?instructionId={instructionId}`
4656
+ * - Seulement les rejetées (validation) : `GET /paiements?instructionId={instructionId}&statut=REJETE`
4657
+ * - Seulement les valides (avec noms/pays) : `GET /paiements?instructionId={instructionId}&statut=INITIE`
4658
+ *
4659
+ * **Convention de nommage des instructionId (important) :**
4660
+ *
4661
+ * L'`instructionId` doit être **unique** pour chaque création de bulk. Pour faciliter le suivi métier, nous recommandons la convention suivante :
4662
+ *
4663
+ * ```
4664
+ * <IDENTIFIANT_METIER>-<NUMERO_TENTATIVE>
4665
+ * ```
4666
+ *
4667
+ * **Exemples :**
4668
+ * - Première tentative : `SALAIRES-2025-01-1` (salaires de janvier 2025, tentative 1)
4669
+ * - Deuxième tentative : `SALAIRES-2025-01-2` (corrections après échecs)
4670
+ * - Troisième tentative : `SALAIRES-2025-01-3` (nouvelles corrections)
4671
+ *
4672
+ * **Avantages :**
4673
+ * - ✅ Chaque bulk a un statut indépendant (INITIE, CONFIRME, ANNULE)
4674
+ * - ✅ Traçabilité claire des tentatives successives
4675
+ * - ✅ Possibilité de filtrer par identifiant métier : `GET /paiements?instructionId[beginsWith]=SALAIRES-2025-01`
4676
+ * - ✅ Respect de l'unicité de l'instructionId
4677
+ *
4678
+ * @returns string La demande a été acceptée et est en cours de traitement.
4679
+ *
4680
+ * Consultez le statut via `GET /paiements-groupes/{instructionId}`.
4681
+ *
4682
+ * @throws ApiError
4683
+ */
4684
+ static paiementGroupeCreer({ requestBody, }: {
4685
+ requestBody: PaiementEnMasseRequest;
4686
+ }): CancelablePromise<string>;
4687
+ /**
4688
+ * Détails d'un paiement en masse
4689
+ * Ce point de terminaison permet de consulter les détails d'un paiement en masse.
4690
+ *
4691
+ * **Statut du bulk :**
4692
+ * - `INITIE` : Créé avec confirmation demandée, en attente de confirmation
4693
+ * - `CONFIRME` : Confirmé par le business (si confirmation demandée) ou en cours de traitement (si sans confirmation)
4694
+ * - `ANNULE` : Annulé par le business avant confirmation (seulement si confirmation demandée)
4695
+ *
4696
+ * **Note :**
4697
+ * - Si créé **avec confirmation** (`confirmation: true`) : Le statut évolue de `INITIE` → `CONFIRME` ou `ANNULE`
4698
+ * - Si créé **sans confirmation** (`confirmation: false`) : Le statut est directement `CONFIRME` (aucune action requise du business)
4699
+ *
4700
+ * **Vérification de fin de validation (important pour confirmation) :**
4701
+ *
4702
+ * Lorsque `confirmation: true`, la validation des transactions se fait de manière asynchrone.
4703
+ * Pour savoir si la validation est terminée et si vous pouvez confirmer, vérifiez que :
4704
+ *
4705
+ * ```
4706
+ * transactionsInitiees + transactionsRejetees = transactionsTotal
4707
+ * ```
4708
+ *
4709
+ * - Si égalité → Validation terminée, vous pouvez confirmer ✅
4710
+ * - Si inégalité → Validation en cours, attendez encore (consultez à nouveau dans quelques secondes) ⏳
4711
+ *
4712
+ * La progression détaillée de chaque transaction se consulte via `GET /paiements?txId={txId}`.
4713
+ *
4714
+ * **Consultation des transactions individuelles :**
4715
+ * Pour obtenir la liste détaillée des transactions (avec noms des bénéficiaires, codes d'erreur, etc.), utilisez :
4716
+ * - Toutes les transactions : `GET /paiements?instructionId={instructionId}`
4717
+ * - Seulement les rejetées : `GET /paiements?instructionId={instructionId}&statut=REJETE`
4718
+ * - Seulement les réussies : `GET /paiements?instructionId={instructionId}&statut=IRREVOCABLE`
4719
+ *
4720
+ * @returns PaiementEnMasseReponseStatut Opération effectuée avec succès
4721
+ * @throws ApiError
4722
+ */
4723
+ static paiementGroupeConsulter({ instructionId, }: {
4724
+ /**
4725
+ * L'identifiant du paiement en masse dans le SI du client
4726
+ */
4727
+ instructionId: string;
4728
+ }): CancelablePromise<PaiementEnMasseReponseStatut>;
4729
+ /**
4730
+ * Confirmer le paiement en masse
4731
+ * Ce point de terminaison permet de confirmer ou d'annuler un paiement en masse créé avec `confirmation: true`.
4732
+ *
4733
+ * **Processus de vérification :**
4734
+ * 1. Après la création (`POST /paiements-groupes`), le participant valide asynchronement toutes les transactions (unicité des txId + recherche d'alias)
4735
+ * 2. Les transactions invalides sont automatiquement rejetées (`statut: REJETE`) avec codes `BE23` (alias invalide) ou `DU03` (txId dupliqué)
4736
+ * 3. Les transactions valides passent à l'état `INITIE` avec les noms et pays des bénéficiaires
4737
+ * 4. Le business consulte via `GET /paiements-groupes/{instructionId}` pour vérifier la progression de la validation
4738
+ * 5. **La validation est terminée quand** : `transactionsInitiees + transactionsRejetees = transactionsTotal`
4739
+ * 6. Le business peut alors confirmer ou annuler
4740
+ *
4741
+ * **Important :** La confirmation n'est possible que lorsque la validation de toutes les transactions est terminée.
4742
+ * Si le business tente de confirmer pendant que la validation est en cours, une erreur 403 sera retournée avec la progression actuelle.
4743
+ *
4744
+ * **Comportement de la confirmation :**
4745
+ * - `decision: true` → Le système envoie **automatiquement SEULEMENT** les transactions avec `statut: INITIE`
4746
+ * - Les transactions `REJETE` (erreurs de validation) sont **automatiquement exclues** (pas besoin de les lister)
4747
+ * - Le statut du bulk passe de `INITIE` à `CONFIRME`
4748
+ *
4749
+ * **Idempotence** : Cet endpoint est idempotent.
4750
+ * - Premier appel avec `decision: true` → Lance les paiements, retourne `200 OK {statut: "CONFIRME"}`
4751
+ * - Appels suivants avec `decision: true` → Retourne `200 OK {statut: "CONFIRME"}` (idempotent, ne relance pas)
4752
+ * - Premier appel avec `decision: false` → Annule, retourne `200 OK {statut: "ANNULE"}`
4753
+ * - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "ANNULE"}` (idempotent)
4754
+ * - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà annulé)
4755
+ * - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà confirmé)
4756
+ *
4757
+ * **Timeout adaptatif** : Le délai pour confirmer dépend automatiquement du nombre de transactions :
4758
+ * - **1 à 500 transactions** : 24 heures
4759
+ * - **501 à 1000 transactions** : 48 heures
4760
+ * - **Plus de 1000 transactions** : 72 heures
4761
+ *
4762
+ * Passé ce délai, la demande expire automatiquement et ne peut plus être confirmée. Le délai exact est indiqué dans le champ `dateExpiration` retourné par `GET /paiements-groupes/{instructionId}`.
4763
+ *
4764
+ * **Changement de décision** : Une fois une décision prise, elle est définitive. Impossible de confirmer après avoir annulé, et vice-versa.
4765
+ *
4766
+ * @returns PaiementEnMasseReponseStatut Confirmation enregistrée avec succès.
4767
+ * - Si `decision: true`, le statut passe à `CONFIRME` et les paiements sont lancés
4768
+ * - Si `decision: false`, le statut passe à `ANNULE`
4769
+ *
4770
+ * @throws ApiError
4771
+ */
4772
+ static paiementGroupeConfirmer({ instructionId, requestBody, }: {
4773
+ /**
4774
+ * L'identifiant du paiement en masse dans le SI du client
4775
+ */
4776
+ instructionId: string;
4777
+ /**
4778
+ * Le client envoie oui ou non s'il confirme l'envoi du paiement en masse.
4779
+ */
4780
+ requestBody: PaiementEnMasseConfirmationRequest;
4781
+ }): CancelablePromise<PaiementEnMasseReponseStatut>;
4782
+ }
4783
+
4784
+ declare class PaiementImmediatService {
4785
+ /**
4786
+ * Envoyer un paiement
4787
+ * Ce point de terminaison permet au business d'effectuer des paiements.
4788
+ *
4789
+ * Le destinataire du paiement est identifié par son alias de compte.
4790
+ *
4791
+ * Le business peut définir le champ `confirmation` à `true` pour demander une validation en deux étapes : le PSP retournera d'abord le résultat de la recherche d'alias (avec le nom et le pays du bénéficiaire), puis attendra une confirmation explicite avant d'exécuter le paiement via l'endpoint `PUT /paiements/{txId}/confirmations`.
4792
+ *
4793
+ * **Timeout de confirmation** : Si le business demande une confirmation, il dispose de **24 heures** pour confirmer. Passé ce délai, la demande expire automatiquement.
4794
+ *
4795
+ * @returns PaiementImmediatReponse Paiement traité. Le champ `statut` indique le résultat :
4796
+ * - `INITIE` : En attente de confirmation (si `confirmation: true`)
4797
+ * - `ENVOYE` : Paiement envoyé avec succès (si `confirmation: false`)
4798
+ * - `REJETE` : Paiement rejeté. Le champ `statutRaison` contient le code d'erreur :
4799
+ * - `DU03` : txId dupliqué (déjà utilisé)
4800
+ * - `BE23` : Alias bénéficiaire invalide
4801
+ * - Autres codes ISO 20022
4802
+ *
4803
+ * @throws ApiError
4804
+ */
4805
+ static paiementCreer({ requestBody, }: {
4806
+ /**
4807
+ * Pour effectuer le transfert, le client doit fournir l'alias du destinataire ainsi que le montant du transfert à effectuer.
4808
+ */
4809
+ requestBody: PaiementImmediatRequest;
4810
+ }): CancelablePromise<PaiementImmediatReponse>;
4811
+ /**
4812
+ * Lister les paiements
4813
+ * Ce point de terminaison permet de lister les paiements effectués par le client.
4814
+ * @returns PaiementListe Succès de l'opération
4815
+ * @throws ApiError
4816
+ */
4817
+ static paiementLister({ payeAlias, payeCompte, payeurAlias, payeurCompte, dateEnvoi, dateIrrevocabilite, statut, categorie, montantAchat, montantRetrait, motif, refDocType, instructionId, txId, annulationStatut, annulationMotif, retourStatut, page, size, sort, fields, }: {
4818
+ payeAlias?: string;
4819
+ payeCompte?: string;
4820
+ payeurAlias?: string;
4821
+ payeurCompte?: string;
4822
+ dateEnvoi?: string;
4823
+ dateIrrevocabilite?: string;
4824
+ statut?: 'INITIE' | 'ENVOYE' | 'IRREVOCABLE' | 'REJETE';
4825
+ categorie?: '631' | '000' | '400' | '733' | '300' | '999' | '500' | '521' | '401';
4826
+ montantAchat?: number;
4827
+ montantRetrait?: number;
4828
+ motif?: string;
4829
+ refDocType?: string;
4830
+ instructionId?: string;
4831
+ txId?: string;
4832
+ annulationStatut?: string;
4833
+ annulationMotif?: string;
4834
+ retourStatut?: string;
4835
+ page?: string;
4836
+ size?: string;
4837
+ sort?: string;
4838
+ fields?: any;
4839
+ }): CancelablePromise<PaiementListe>;
4840
+ /**
4841
+ * Détails d'un paiement
4842
+ * Cet point de terminaison permet de consulter les details d'un paiement.
4843
+ *
4844
+ * @returns Paiement Opération effectuée avec succès
4845
+ * @throws ApiError
4846
+ */
4847
+ static paiementRecuperer({ txId, }: {
4848
+ /**
4849
+ * L'identifiant de la transaction dans le SI du client
4850
+ */
4851
+ txId: string;
4852
+ }): CancelablePromise<Paiement>;
4853
+ /**
4854
+ * Confirmer le paiement
4855
+ * Ce point de terminaison permet d'envoyer la confirmation de l'envoi d'un paiement immédiat
4856
+ * après vérification du nom et du pays du bénéficiaire.
4857
+ *
4858
+ * **Idempotence** : Cet endpoint est idempotent.
4859
+ * - Premier appel avec `decision: true` → Lance le paiement, retourne `200 OK {statut: "ENVOYE"}`
4860
+ * - Appels suivants avec `decision: true` → Retourne `200 OK` avec l'état actuel (ENVOYE, IRREVOCABLE, ou REJETE) - idempotent
4861
+ * - Premier appel avec `decision: false` → Annule, retourne `200 OK {statut: "ANNULE"}`
4862
+ * - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "ANNULE"}` (idempotent)
4863
+ * - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà annulé)
4864
+ * - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà confirmé)
4865
+ *
4866
+ * **Timeout** : La confirmation doit être envoyée dans les **24 heures** suivant la création de la demande. Passé ce délai, la demande expire automatiquement et ne peut plus être confirmée.
4867
+ *
4868
+ * **Changement de décision** : Une fois une décision prise, elle est définitive. Impossible de confirmer après avoir annulé, et vice-versa.
4869
+ *
4870
+ * @returns PaiementImmediatConfirmationReponse Paiement en cours d'envoi
4871
+ * @throws ApiError
4872
+ */
4873
+ static paiementConfirmer({ txId, requestBody, }: {
4874
+ /**
4875
+ * L'identifiant de la transaction dans le SI du payé
4876
+ */
4877
+ txId: string;
4878
+ /**
4879
+ * Le client envoie oui ou non s'il confirme l'envoi du paiement.
4880
+ */
4881
+ requestBody: PaiementImmediatConfirmationRequest;
4882
+ }): CancelablePromise<PaiementImmediatConfirmationReponse>;
4883
+ /**
4884
+ * Vérifier un paiement
4885
+ * Ce point de terminaison permet de vérifier la réception d’un paiement à partir de l’`end2endId`.
4886
+ *
4887
+ * Dans certains cas, le **client business** peut ne pas avoir reçu la notification de paiement.
4888
+ * Le **client payeur** peut alors lui communiquer l’`end2endId` afin qu’il puisse vérifier manuellement le statut du paiement.
4889
+ *
4890
+ * Le **participant** doit, dans ce cas, vérifier dans sa base de données et s'il ne trouve pas le paiement, il doit interroger l’endpoint de PI-SPI permettant de **récupérer le statut d’un paiement**, puis **retourner ce statut** dans sa réponse.
4891
+ *
4892
+ * Le statut retourné doit être soit :
4893
+ * - `IRREVOCABLE` (paiement irrévocable), ou
4894
+ * - `REJETE` (paiement rejeté).
4895
+ *
4896
+ * Un transfert **ne peut pas** être signalé comme « en cours de traitement » dans ce contexte.
4897
+ *
4898
+ * ⚠️ **Remarques :**
4899
+ * - La vérification ne doit concerner que les paiements réalisés depuis **moins de 3 mois (90 jours)** afin de garantir la disponibilité de la réponse.
4900
+ * - La garantie de réponse n’est assurée qu’à partir de **20 secondes après l’envoi du transfert**.
4901
+ *
4902
+ * @returns Paiement Opération effectuée avec succès
4903
+ * @throws ApiError
4904
+ */
4905
+ static paiementVerifier({ end2EndId, }: {
4906
+ /**
4907
+ * L'identifiant de bout en bout de la transaction
4908
+ */
4909
+ end2EndId: string;
4910
+ }): CancelablePromise<Paiement>;
4911
+ }
4912
+
4913
+ declare class RetoursdeFondsService {
4914
+ /**
4915
+ * Retourner les fonds
4916
+ * Ce point de terminaison permet au business de retourner les fonds d'un paiement reçu.
4917
+ *
4918
+ * **Idempotence** : Cet endpoint est idempotent. Plusieurs appels avec le même `end2endId` produiront le même résultat.
4919
+ * Si le retour de fonds a déjà été envoyé et irrévocable, le champ `retourStatut` de la réponse sera `IRREVOCABLE`.
4920
+ * Si le retour de fonds a été envoyé et rejeté, le retour de fonds sera envoyé à nouveau.
4921
+ * Si le retour de fonds est en cours d'envoi, le champ `retourStatut` de la réponse sera `INITIE`.
4922
+ *
4923
+ * **Notifications webhook** : Après envoi du retour de fonds, si le business a souscrit au service de webhook, il recevra :
4924
+ * - Une notification `RETOUR_ENVOYE` en cas de succès du retour de fonds
4925
+ * - Une notification `RETOUR_REJETE` en cas de rejet de la demande
4926
+ *
4927
+ * **Vérification du statut** : Pour obtenir le statut d'un retour de fonds envoyé, vous pouvez invoquer l'endpoint `GET /paiements/{end2endId}` et le champ `retourStatut` de la réponse indiquera l'état du retour de fonds.
4928
+ *
4929
+ * @returns Paiement Retour de fonds enregistré avec succès
4930
+ * @throws ApiError
4931
+ */
4932
+ static retourFondsEnvoyer({ end2EndId, }: {
4933
+ /**
4934
+ * L'identifiant unique de bout en bout de la transaction
4935
+ */
4936
+ end2EndId: string;
4937
+ }): CancelablePromise<Paiement>;
4938
+ }
4939
+
4940
+ export { ACCOUNT_STATUS, ACCOUNT_TYPE, ALIAS_TYPES, type AdditionalDataOverrides, type AliasCreationReponse, type AliasCreationRequest, type AliasReponseListe, AliasService, AliasType, AliasType as AliasTypeType, AnnulationStatut, ApiError, CLIENT_TYPE, CURRENCY, CancelError, CancelablePromise, type Champs, CompteOperation, type CompteOperationListe, CompteSolde, CompteTransfertIntraReponse, type CompteTransfertIntraRequest, ComptesService, DEFAULT_LIMITS, DEFAULT_PISPI_LOGO_DATA_URL, DemandeAnnulationService, DemandePaiementConfirmationAnnulationRaison, DemandePaiementConfirmationReponse, type DemandePaiementConfirmationRequest, type DemandePaiementConfirmationRequestAccepter, type DemandePaiementConfirmationRequestRejeter, DemandePaiementConsultationReponse, type DemandePaiementEnMasseConfirmationRequest, type DemandePaiementEnMasseConfirmationRequestAccepter, type DemandePaiementEnMasseConfirmationRequestRejeter, type DemandePaiementEnMasseRequest, DemandePaiementEnMasseStatutReponse, type DemandePaiementListe, DemandePaiementListeItem, type DemandePaiementReponse, DemandePaiementReponseRequest, DemandePaiementRequest, type DemandePaiementRequestBase, DemandePaiementRequestCategorie, DemandePaiementStatut, DemandePaiementStatutRaison, DemandesDePaiementEnMasseService, DemandesDePaiementService, type FilterOperator, type ListeMeta, type LomiCustomerAliasType, type LomiCustomerQr, NotificationService, OpenAPI, type OpenAPIConfig, PAYMENT_STATUS, PISPI_AMBER_LOGO_DATA_URL, PISPI_QRCODE_LOGO_DATA_URL, PI_SPI_ENDPOINTS, Paiement, PaiementAnnulationMotif, type PaiementAnnulationReponseRequest, type PaiementAnnulationReponseRequestAccepter, type PaiementAnnulationReponseRequestRejeter, type PaiementAnnulationRequest, PaiementAnnulationStatutRaison, type PaiementEnMasseConfirmationRequest, type PaiementEnMasseConfirmationRequestAccepter, type PaiementEnMasseConfirmationRequestRejeter, PaiementEnMasseReponseStatut, type PaiementEnMasseRequest, PaiementEnMasseService, PaiementImmediatConfirmationReponse, type PaiementImmediatConfirmationRequest, type PaiementImmediatConfirmationRequestAccepter, type PaiementImmediatConfirmationRequestRejeter, PaiementImmediatReponse, type PaiementImmediatRequest, PaiementImmediatService, type PaiementListe, type PaiementRequest, PaiementStatut, PaiementStatutRaison, PiSpiAuthError, type PiSpiConfig, PiSpiError, PiSpiNotFoundError, PiSpiRateLimitError, PiSpiSDK, PiSpiValidationError, type Problem7807, QRCode, type QrCodeSvgOptions, type QrPayloadInput, type QrPayloadOptions, type QrPayloadResult, type QrType, type QrValidationResult, QueryBuilder, type QueryParams, RefDocType, RetourStatut, RetourStatutRaison, RetoursdeFondsService, UEMOA_COUNTRIES, WEBHOOK_EVENTS, type WebhookCreationRequest, type WebhookCreationResponse, type WebhookData, WebhookEvent, type WebhookEventsList, type WebhookList, type WebhookModificationRequest, WebhooksEvents, buildLomiCustomerQr, buildPayloadString, centimesToXof, computeCrc16, createQrPayload, formatAmount, generateQrCodeSvg, getAvailableAliasTypes, getCountryFromAccount, handleApiError, isValidAccountNumber, isValidAliasType, isValidPhoneNumber, isValidPispiQrPayload, isValidShidAlias, parseLomiCustomerQr, retryWithBackoff, serializeLomiCustomerQr, sleep, xofToCentimes };